linux系统及命令学习
1,基本概念
Shell(命令行):是一个程序,接受键盘输入的命令,并将命令传递给操作系统进行执行。
Bash:Bourne Again Shell, 是大多数linux系统分之中所带的一种shell程序。
命令提示符:
[username@machinename]$: $ 表示普通用户登录
[root@machinename]#: #表示root,超级用户登陆
2 简单命令:
help [command]: 能显示出命令commad的具体参数设置
date: 显示时间
cal: 显示日历
df:显示硬盘的剩余存储空间等
free: Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer
exit: 结束终端会话
3.文件夹
linux系统的文件路径如下图所示,几个重要的文件夹的用途:
/boot: 系统内核文件,和开机相关文件
/bin: 二进制程序文件,系统进行调用和执行
/dev: 和设备相关的文件,磁盘,usb等
/etc: 系统的配置文件
/home: 用户文件夹,每一个用户都在该路径下拥有一个文件夹,存放自己的数据,如 /home/zack
/lib: 内核系程序共享的库文件,类似于windows系统中的DLLS
/usr: linux系统中最大的文件夹,包括所有普通用户的程序和相应的支持程序
/usr/bin: linux distributions 安装的一些可执行程序文件
/usr/share: /usr/bin目录下程序共享的一些配置文件,数据,图片等
/usr/lib: /usr/bin目录下程序的共享库文件
/usr/sbin: root用户(系统管理员)的一些程序文件
/usr/local: 用户安装的一些程序文件和支持文件,如/usr/local/bin中为可执行程序。
/var: 可变化的一些数据文件,/var/log/messages 为日志文件
4.文件和文件夹操控命令
(. 为当前目录;.. 为上一级目录,~ 为当前登录用户目录)
pwd : 打印当前文件夹路径名 (print working directory)
cd : 进入相应的文件夹路径,可以是相对路径和绝对路径
cd ~ : 进入当前登陆用户的用户目录 (/home/user)
ls : 列出文件夹内的内容(文件夹和文件)
常用参数如下:
ls -a : 列出所有文件,包括隐藏文件(文件名以 . 开头)
ls -d : 只列出文件夹
ls -l :列出文件及其相关详细信息
ls -l 显示如下的格式:
相应的含义:
-rw-r--r--: 总共十个字符,第一个表示文件类型,后面每三个为一组,依次表示读r,写w,执行x权限,第一组为文件主人的权限,第二组为主人所在用户组的权限,第三组为所有用户权限
file : 检测文件的类型 (在linux系统中,文件的后缀名并不需要和文件的类型匹配)
file filename
less: 查看文本文件的内容
less filename
less 会打开该文件,在less模式下,键盘的命令如下:
箭头可以上下移动,q为退出
mkdir: 创建文件夹,可以同时创建多个文件夹
mkdir dir1 dir2 dir3
cp: 复制文件或文件夹
cp item dir 复制一个文件或文件夹到另一个文件夹
cp item1 item2 dir 复制多个文件到一个文件夹
相关参数: -iv 两个参数最好每次加上, 复制文件夹时加参数 -r
示例命令:
mv: 移动或重命名文件(在同一个文件夹重命名,在不同文件夹移动,最终原来的文件没有了)
mv item1 item2 移动或重命名文件或文件夹
mv item1 item2 dir 移动多个文件到文件夹
参数: 最好每次加上 -iv
命令语句示例及含义:
rm: 删除文件或文件夹(可同时删除多个)
注意:使用前最好用ls查看下,使用时最好带选项 -i
rm file1 file2
参数和示例:最好带参数-iv, 删除文件夹带 -r,递归删除文件夹内所有内容
5,软链接和硬链接
参考:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/
文件都有文件名与数据,这在
Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data
block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的
inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode
号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。(ls
-i 命令能查看文件inode号)
硬链接(hard link):若一个 inode 号对应多个文件名,则称这些文件为硬链接。每一个文件都有一个默认的硬链接(可以理解为文件名),再创建硬链接时,多了一个指向该文件的指针。(当文件的硬链接数为0,文件内存会被回收)
局限性:硬链接只能指向文件,只在同一个磁盘分区中起作用;只能对已存在的文件进行创建;
软链接(soft link/system link):软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。(类似windows快捷方式?)
特点:软链接可以指向文件或文件夹,软链接可交叉文件系统;可对不存在的文件或目录创建软链接;软链接有自己的文件属性及权限等;
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常
上图中表明了两者的区别,硬链接通过inode号直接找到文件内容,软连接先通过自己的inode号找到自己的文件内容,从文件内容中读取到目标文件的路径,再从该路径拿到目标文件的inode号,从而找到目标文件。
下图是命令ls -li 的结果,第一列为文件的inode号, 第二列十位字符的第一个字符若为l时,表明该文件是软链接,第三列的数字表明该文件(文件夹中文件)的硬链接数。
相关命令语句:
https://www.cnblogs.com/zr520/archive/2016/11/06/6036468.html
创建硬连接:(文件)
ln file link
创建软连接:(文件或文件夹)
ln -s item link (示例: ln -s /bin/less /usr/local/bin/less)
删除连接: rm link
6. linux命令的类型
linux的一个命令语句可以分为下面四种类型:
可执行程序(executable program):和所有/usr/bin目录下的程序一样
shell内建命令(command built into the shell):bash程序内置的一些命令(shell builtins),如命令 cd
shell方法(shell fuction):环境变量中配置的shell scripts
别名(alias): 从其他命令创建的别名
常用命令
type:查看该命令的种类(上面四种中一种)。
which:显示可执行程序所在位置,只适用于可执行程序类型的命令。
help: 显示shell builtins(shell内建方法)的帮助文档, 对于部分可执行程序,可以用 --help
man :显示可执行程序的使用手册文档 (大部分可执行程序支持) (q退出)
man -k reg(正则表达式):搜索正则表达式匹配的命令
apropos: 和man -k 一样
whatis: 显示命令的简介
info: 显示命令的简介信息入口(类似超链接)(q退出)
alias: 创建别名,自定义命令的名字 (可以将多条命令加在一起,下面的foo,相当于执行后面三个命令)
至此,查看一个命令的帮助文档,可以用help, --help, man 或info。
7.标准输入和输出,重定向,管道
https://ryanstutorials.net/linuxtutorial/piping.php
linux中有如下三种标准文件流,应用程序从标准输入接受数据,对于程序执行结果输出到标准输出,对于程序执行时的异常信息或状态码等输出到标准错误输出。
STDIN: 标准输入,文件描述符为0,从键盘输入
STDOUT: 标准输出,文件描述符为1,输出到屏幕
STDERR:标准错误输出,文件描述符为2,输出到屏幕
重定向:
- > 重定向标准输出到文件,(文件不存在时创建,存在时覆盖其内容)
- >> 重定向标准输出到文件,(文件不存在时创建,存在时追加)
- < 重定向标准输入,从文件读取
- 2> 重定向标准错误输出.
- 示例:
- 1,下面语句,将命令ls的输出重定向,即不输出到屏幕,而输出到ls-output.txt文件
- (下面命令可以创建或覆盖文件来产生一个空白文件)
2,追加
3,重定向标准错误输出
4,下面三个命令将标准输出和标准错误都重定向到一个文件
5,下面命令,从文件读取内容作为cat程序的输入
管道符号
| 管道符,将一个程序的输出,重定向为下一个程序的输入(管道符是将一个命令的输出,传给下一个命令的输入,重定向 > 是将一个命令的输出,传到一个文件)
(管道符和标准输出重定向区别:https://askubuntu.com/questions/172982/what-is-the-difference-between-redirection-and-pipe)
如下命令,将ls输出作为less命令的输入
sort : 对输入内容进行排序 (https://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html)
下面命令,按时间顺序进行了排序
下面命令将输出内容排序后再输出到less
uniq:忽略掉重复行(即多条重复记录时只显示一条)
uniq -d 只显示出重复行的数据
wc: 显示出文件的行数,字数和字节数
wc -l 只显示行数
grep: 只显示复合匹配条件的记录
grep -i 忽略大小写
grep -v 只显示不匹配的行
下面命令显示内容中包含 zip 的行
head: 默认只显示前十行
tail: 默认只显示后十行
head/tail -n 5 :显示前/后5行
tee :从标准输入读取内容,同时输出到标准输出和文件 (tee fitting: 三通接头)
如下面命令输出到文件ls.txt,并输出到grep命令
8,命令扩展(command expansion)
对于命令行输入的命令,在起作用前,shell会对其含义进行扩展。如下面的第二条命令echo *,echo没有打印*,这是因为shell将*扩展为当前路径下的所有文件名称。
8.1 路径名称扩展:
对于输入的通配符(wildcards),shell会扩展成对应的路径,如下面的命令
常用的通配符及其含义如下:
通配符示例:
8.2 算术扩展:
对于整数的简单计算语句,shell能进行扩展,表达式为$(arithmetic expression)
8.3 大括号扩展
大括号扩展能创建多个可选项,如下面的几条命令
其常见的用途是用来创建多个文件夹
8.3 参数扩展
对于变量,shell能扩展出其对应值,如下面的命令中 USER为一个变量 (通过printenv|less)能查看到所有变量名称
8.4 命令取代
将一条命令的输出进行扩展
8.5 抑制命令扩展
有时候不想shell对输入的语句进行扩展,可以采用双引号和单引号来抑制这种扩展,如下面第一条命令,shell将$5进行了扩展为空字符。
双引号:使用双引号后,部分内容不能进行扩展 ,路径名扩展和word spliting不起作用,($, \ 还起作用, 即算数扩展,参数扩展和命令取代还起作用)
单引号:使用单引号后,所有扩展都不能使用
转义符 \ :有时候只是需要单个符号不被扩展,可以使用转义符 \
9,键盘快捷键
游标移动:
ctrl -a :移动到行开头; ctrl -e :行结尾; ctrl -l 清理屏幕
剪切和粘贴:
ctrl -k :游标出剪切到行末尾; ctrl -y : 粘贴剪切的内容到游标出。
字符操作:
自动补齐:输入一两个字母后按tab,能自动补全
Alt -?(或按两次tab):显示所有可能补齐的选项
clear: 清理屏幕
history: 显示历史命令,bash默认显示前500条命令
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
HE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:等线;
mso-ascii-font-family:等线;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:等线;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:等线;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
Ctrl -r 向上搜索记录, 输入搜索条件, 找到后ctrl -j 复制到当前
历史命令扩展:
按上下箭头能切换到历史命令中上一条和下一条(复制命令到当前游标出)
!88, 能切换到history list中的第88条命令 (即执行第list中的第88条命令)
10,权限管理
id: 显示用户id,组id,用户组等信息 (id user,无user时默认显示当前用户)
在linux系统中每个用户都有自己的id,都属于一个用户组,每一个用户组都有id,root用户的id为0。用户账号的信息都定义在 /etc/passwd 文件中,用户组的信息都定义在 /etc/group 文件中,当创建用户和用户组时,这些信息都会被更新。(/etc/shadow 存放用户的密码信息)
useradd: 创建用户
groupadd: 创建用户组
文件的读写权限
linux的每个文件都有十个字符来描述其读,写和执行相关的权限,如上面ls -l 命令显示的第一列十个字符。第一个字符为文件类型,接下来三个字符为文件所属用户(owner)的读,写,执行权限,随后三个字符为用户组(group)的读,写,执行权限,最后三个为所有用户(world)的读,写,执行权限。
文件类型:- (普通文件), d(文件夹) , l(软链接), c, b
读,写,执行权限:- , r , w , x(执行)
文件权限属性示例:
chmod: 改变文件权限(只有文件主人和超级用户能修改)
上面的600为三个八进制数,每一个八进制对应三个二进制数,相应权限如下:6(rw-),0(---),0(---);常用的八进制权限数据如下:
除了支持八进制数外,chmod命令还支持字母,相应含义如下:(u:用户,g:用户组,o:其他用户,a:所有用户)
常用权限修改如下:(u+x:为用户添加执行权限;u=rx:设置用户权限为读,执行)
chmod u+x,go=rw test2 (注意逗号后面不能加空格) ,该命令为test2文件用户添加执行权限,用户组和其他用户设置为读,写权限。
umask: 设置默认的权限 (默认的umask为:0002)
umask 数字的含义:对于数字0,原来的权限不变,对于数字1,原来权限取消
umask 0002
umask 0022
下面的命令中看到默认的umask为0002,创建test3.txt文件,权限为-rw-rw-r--,删除该文件后,修改umask为0000,再创建该文件,权限为-rw-rw-rw-。
改变登陆的用户id:
1,退出后新用户登陆
2,su命令: su [-l ] [user]
su:切换到指定的用户登录,-l 指该载入用户的登录环境,并切换到该用户目录文件夹(和该用户登录几乎一样),没指定用户名时指超级用户,-l 也可省略成 -。
切换为超级用户,需要密码验证
以超级用户执行一条命令:(注意命令用单引号,防止扩展)
3,sudo命令
以超级用户(不指定用户名时)执行命令,通常输入自己的密码或不用输密码,配置文件中会配置,还会配置用户能执行的命令
sudo -i 切换到超级用户
chown:改变文件主人和用户组(需要超级用户权限)
chown [owner] [:[group]] file
相关示例含义
chown bob test.txt 将文件text.txt主人改为bob
chown :bobs test.txt 将文件text.txt用户组改为bobs
passwd : 改密码(默认为当前用户)
11,进程
ps: 查看正在运行的进程
https://www.cnblogs.com/wxgblogs/p/6591980.html
上述显示结果中PID为进程ID,TTY为终端设备类型(tty和pts参见:https://segmentfault.com/a/1190000009082089)
ps -x :查看较为完整的进程信息,如下图
上面显示的STAT表示进程的状态,具体含义如下:(R:running;S:sleeping;T:stopped;)
top:动态显示进程(每三秒刷新) (q:退出)
kill: 终止进程
kill [signal] PID
常见signal如下:
killall:向多个进程发送信号
killall [-u user] [-signal] name
jobs : 显示所有活跃的作业 (jobs -l 还能显示出每个作业的PID)
https://www.cnblogs.com/EasonJim/p/6849885.html
(ctrl + Z: 将当前程序挂起至后台;ctrl + c 终止前台程序)
下面命令中运行一段python脚本程序,按ctrl + Z将程序挂起,通过jobs能看到该作业。
1 表示作业ID
+ 表示一个当前的作业, 若为 - ,表示下一个作业
bg : 将作业放在后台执行(作业ID作为参数)
下面命令将上述的python脚本程序放在后台执行,通过jobs可以看到该程序的状态由 stopped变为了running
fg : 将后台作业放在前台执行(作业ID作为参数)
shutdown: 关闭或重启系统
shutdown -r now 关机后重启
shutdown -h now 关机后不重启
shutdown -r +10 10分钟后重启
shutdown -r 10:00 10点钟重启
shutdown -h +10 10分钟后关机
shutdown -h 10:00 10点钟关机
reboot: 重启系统 (需要管理员权限)
12,vim编辑器的使用
https://www.cnblogs.com/next-open/p/3662899.html
vim filename 进入vim编辑器(文件不存在时创建新文件)
Vim 编辑器有命令模式和编辑模式两种,刚进入文件时为命令模式,只能输入命令,不能输入文本内容, 按键盘 i (或insert)进入编辑模式,按esc回到命令模式。
下面是命令模式下的常用命令(必须输入冒号。冒号后无空格)
:help [keyword] 搜索帮助文档中的内容
:q 退出编辑器
:q! 强制退出编辑器
:w 保存
:wq 保存并退出
命令行模式下的按键:(0 到行开头,$到行末尾)
复制和粘贴:https://www.cnblogs.com/didi/p/4067193.html
y 复制
p粘贴
p 粘贴剪切板里的内容在光标后
(在其他文件复制代码后,进入vim编辑器,insert进入编辑模式,按 shift+insert能粘贴复制的代码)
vim配置(python版)参考:https://www.cnblogs.com/cjy15639731813/p/5886158.html
linux系统及命令学习的更多相关文章
- 【linux系统】命令学习(六)awk sed grep 与管道的使用
程序运行环境输入与输出 标准输入0 read a;echo $a 标准输出1 echo cesh 错误输出 ls notr 管道重定向 管道与管道之间可以重定向 管道与文件之间可以重定向 用于写入 将 ...
- 【linux系统】命令学习(八)bash 编程实战学习
常见shell : bash sh zsh windows: git bash cygwin MAC : terminal iterm netstat 是linux下用于显示网络状态的命令.通 ...
- 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed
grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...
- 【linux系统】命令学习(二)文件处理命令
查看帮助 1.--help 例如:ls --help 会有中文 2.man 例如:man ls 都是英文 进入手册的界面 空格键:向下翻页 回车:一行一行翻页 B:向前翻页 ...
- 【linux系统】命令学习(一)ssh
ssh 1.在终端执行命令 ssh -p22 username@host 2.密码输入是看不到内容的 3.登入成功后默认进入的是home目录,就是根目录下的home目录 4.[root@VM-4-1 ...
- 【linux系统】命令学习(七)进阶命令 curl jq
curl 支持dict file ftp ftps gopher http https imap 1.实现代理 curl -x 129.3.3.3:8888 https://baidu.com 2.g ...
- 【linux系统】命令学习(四)统计命令
sort 排序 -b 忽略开头的空白符 -f 将小写字母看做为大写字母 -h 根据存储容量排序(kb mb hb )从小到大 -n 按数字排序 -o 把结果写入文件 -r 以相反的顺序来排序 -t 指 ...
- Linux系统基础命令
这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...
- 查看linux系统版本命令 (转)
查看linux系统版本命令 分类: Linux 知识小结2011-10-10 15:26 240162人阅读 评论(9) 收藏 举报 linuxredhatdebianx86susesun 一.查看内 ...
随机推荐
- Python诞生以来意义菜谱
自Python诞生以来,它被誉为最简单的编程语言.进入人工智能时代后,它逐渐成为编程领域的主导语言. Python是一种快速.强大.高效和灵活的编程语言家常菜做法大全.学习后,无论您是想进入数据分析菜 ...
- 【转】Fetch超时设置和终止请求
原文链接:https://www.cnblogs.com/yfrs/p/fetch.html 1.基本使用 Fetch 是一个新的端获取资源的接口,用于替换笨重繁琐XMLHttpRequest.它有了 ...
- Flutter 37: 图解 Flutter 基本动画 (一)
小菜一直对动画不太熟悉,最近学习了一些关于动画的皮毛知识,网上资料很多,小菜按自己的理解整理一下. Animation Animation 可以生成动画过程中的值,生成的值并非单一的 double 也 ...
- liunx pip安装
方法一 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py 方法二 wget https://pypi.python.org/pac ...
- 报错处理(UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 2: ill egal multibyte sequence)
参照文[https://blog.csdn.net/Dillon2015/article/details/53204955]的说法, 第一个错 [UnicodeEncodeError:'gbk' co ...
- sudo身份切换
sudo更改身份: 我们知道,使用 su 命令可以让普通用户切换到 root 身份去执行某些特权命令,但存在一些问题,比如说:仅仅为了一个特权操作就直接赋予普通用户控制系统的完整权限: 当多人使用同一 ...
- Google 停止推出 Chrome 79
据 Google 方面表示,新版本的使用率达到了整个用户群的 50% 已经.不过值得注意的是,并非所有提供该更新的设备都已安装了该工具.初步数据显示,只有 10% 的人部署了新版本. 针对用户反馈,开 ...
- tigervnc-server安装
#vncserver安装方法 #su - root rpm -ivh tigervnc-server-1.8.0-13.el7.x86_64.rpm cp /lib/systemd/system/vn ...
- Elasticsearch下载安装
本文链接:https://blog.csdn.net/yjclsx/article/details/81302041注:Elasticsearch 需要 Java 8 环境,在安装Elasticsea ...
- __builtin_ _Find_first()
•int __builtin_ffs (unsigned int x) 返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4. •int __builtin_clz ...