10.1什么是shell
shell是系统跟计算机硬件交互时使用的中间介质
10.1.1记录命令历史
-
!!:连续两个!表示执行上一条指令
-
!n:这里n是数字,表示执行命令历史中的第n条指令
-
!字符串(字符串大于等于1):例如!pw表示执行命令历史中最近一次以pw开头的命令。
10.1.2命令和文件名补全
按tab键可以补全一个指令、一个路径或者一个文件名。连续按两次tab键,系统则会把所有的命令或者文件名都列出来。
10.1.3别名
可以通过alias把一个常用的并且很长的指令另取名为一个简单易记的指令。如果不想用可以通过unalias命令解除别名功能。
10.1.4通配符
可以使用*来匹配零个或多个字符,用?匹配一个字符
10.1.5输入/输出重定向
输入重定向用于改变命令的输入 输出重定向用于改变命令的输出。
输入重定向的命令是<,输出重定向的命令是>。
错误重定向命令2>以及追加重定向命令>>
10.1.6管道符
用于将前一个指令的输出作为后一个指令的输入
10.1.7作业控制
按Ctrl+Z(暂停)然后使用fg(foreground)命令恢复它,或是利用bg(background)命令使它到后台运行
按Ctrl+C(终止)
10.2变量
10.2.1命令env
使用env命令时,可以列出系统预设的全部系统变量
常见的环境变量
- HOSTNAME:表示主机的名称
- SHELL:表示当前用户的shell类型
- HISTSIZE:表示历史记录数
- MALL:表示当前用户的邮件存放目录
- PATH:该变量决定了shell将到哪些目录中寻找命令或程序
- LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量
- HOME:表示当前目录的家目录
- LOGNAME:表示当前用户的登录名
10.2.2命令set
set和env命令类似,也可以输出环境变量
set命令不仅可以显示系统预设的变量 也可以显示用户自定义的变量
虽然可以自定义变量 但是该变量只能在当前shell中生效
如果在当前shell中运行bash指令 则会进入一个新的shell
这个shell就是原来shell的子shell
安装命令 yum install psmisc
pstree命令会把Linux系统中的所有进程以树形结构显示出来。
在父shell中设定变量后,进入子shell时,该变量是不会生效的。如果想让这个变量在子shell中生效,则要用到export指令
取消某个变量 只要输入unset即可
10.3系统环境变量与个人环境变量的配置文件
10.4Linux shell中的特殊符号
*它是一个通配符 代表零个或者多个字符或数字
10.4.1*代表零个或者多个任意字符
10.4.2 ?只表示一个任意字符
10.4.3 注释符号#
10.4.4脱义字符\\
这个字符会将后面的特殊符号(如*)还原为普通字符
10.4.5再说管道符|
作用:将前面命令的输出作为后面命令的输入
wc -l用来计算一个文档有多少行
10.4.6命令cut
cut命令用来截取某一个字段 其格式为cut -d’分隔字符’[-cf]n,这里n是数字
- -d:后面跟分隔字符,分隔字符要用单引号括起来
- -c:后面接的是第几个字符
- -f:后面接的是第几个区块
cut命令用法
10.4.7命令sort
sort命令用做排序 格式为sort[-t分隔符] [-kn1,n2] [-nru] n1,n2指的是数字
- -t:后面跟分隔字符 作用跟cut的-d选项一样
- -n:表示使用纯数字排序
- -r:表示反向排序
- -u:表示去重复
- -kn1,n2:表示由n1区间排序到n2区间 可以只写-kn1 即对n1字段排序
10.4.8命令wc
wc命令用于统计文档的行数、字符数或词数。-l(统计行数)、-m(统计字符数)和-w(统计词数)
10.4.9命令uniq
用来删除重复的行 -c选项比较常用,它表示统计重复的行数,并把行数写在前面。
10.4.10命令tee
tee命令后面跟文件名 其作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上
10.4.11命令tr
tr命令用于替换字符
- -d:表示删除某个字符,后面跟要删除的字符
- -s:表示删除重复的字符
tr常用于把小写字母变成大写字母 ‘[a-z]’ ‘[A-Z]’
tr还可以替换一个字符
10.4.12命令split
用于切割文档 常用选项为-b和-l
- -b:表示依据大小来分割文档,单位为byte
如果split不指定目标文件名 则会以xaa、xab…这样的文件名来取切割后的文件
也可以指定目标文件名
10.4.13特殊符号$
用作变量前面的标识符
10.4.14特殊符号;
如果想在一行中运行两个或两个以上的命令 需要在命令之间加符号;
10.4.15特殊符号~
~表示用户的家目录,root用户的家目录是/root,普通用户的则是/home/username
10.4.16特殊符号&
如果想把一条命令放到后台执行,则需要加上符号&
10.4.17重定向符号>、>>、2>和2>>
重定向符号>和>>,它们分别表示取代和追加的意思
如果想重定向到一个文本,则要用重定向符号2>或者2>>,分别表示错误重定向和错误追加重定向
10.4.18中括号[]
中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z)
10.4.19特殊符号&&和||
- command1;command2
使用;时 不管command1是否执行成功,都会执行command2 - command1&&command2
使用&&时,只有command1执行成功后,command2才会执行,否则command2不执行 - command1||command2
使用||时,command1执行成功后则command2不执行,否则执行command2,即command1和command2中总有一条命令会执行