shell 基础知识
shell脚本在日常的Linux系统管理工作中是必不可少。
什么是shell
shell是系统跟计算机硬件交互使用的中间介质,它只是系统的一个工具。
!! 命令:连续两个!表示执行上一条指令。
!n:这里的n是数字,表示执行命令历史中的第n条指令。实例 !17 表示执行命令历史中的17个命令,如下所示:
!字符串 (字符串大于等于1):例如!pw表示执行命令历史中最近一次以pw开头的命令。
命令和文件名补全
按TAB键可以帮我们补全一个指令,一个路径或者一个文件名。连续按两次tab,系统则会把所有的命令或者文件名都列出来。
别名
我们可以通过alias把一个常用的并且很长的指令另取名为一个简单易记的指令。如果不用,还可以用unalias命令解除别名功能。
另外你也可以自己自定义别名
通配符
输入/输出重定向
管道符
作业控制
当运行进程是,你可以使它暂停(Ctrl+Z组合键),然后使用fh(foregroud的简写)命令恢复它,或是利用bg(background的简写)命令使它到后台运行。
此时以提示暂停,我们用fg命令恢复,然后在输入jobs
如果想把暂停的的任务放在后台运行,就用bg命令
变量
环境变量PATH,它是shell预设的一个变量。你可以使用echo命令显示变量的值
env命令
使用env命令,可以列出系统预设的全部系统变量
登录不同的用户,这些环境变量的值也不同。当前显示的是root账户的环境变量。
命令set
set命令和env命令类似,也可以输出环境变量
set命令不仅可以显示系统预设的变量,也可以显示用户自定义的变量。
虽然你可以自定义变量,但是改变量只能在当前shell中生效
允许系统内所有用户登录后都能使用改变量。要先在/etc/profile文件中最后一行加入export myname=Aming 然后运行source /etc/profile就可以生效了。
系统环境变量与个人环境变量的配置文件
Linux shell中的特殊符号
*符号
?符号
#符号
脱义字符
再说管道符 |
命令cut
cut命令用来截取某一个字段,其中格式为cut -d ‘分隔字符’ [-cf] n ,这里的n是数字。
cut命令的用法
-d选项后面加冒号作为分隔字符,-f1表示截取第一段,-f和1之间的空格可有可无。
sort命令
如果sort不加任何选项,则从首字符向后依次按ASCII码值进行比较,最后将它们按升序输出
-k选项后面跟数值n1和n2区域内的字符串排序,-r选项则表示反向排序。
这里的-k3,5表示对第3区域至第五区域的字符串排序。
命令wc
wc命令用于统计文档的行数,字符串或词数。
如果wc不跟任何选项,直接跟文档,则会把行数,词数和字符串一次输出。
命令 uniq
uniq命令用来删除重复的行,该命令只有-c选项比较常用,它表示统计重复的行数,并把行数写在前面。
使用uniq前,必须先给文件排序,否则不管用。
命令 tee
tee命令后面跟文件名,其作用类似于重定向,但它比重定向多一个功能
命令tr
命令split
split命令用于切割文档,常用于选项为-b和-l
-b:表示依据大小来分割文档,单位为byte
我们也可以指定目标文件名
-l:表示依据行数来分割文档
特殊符号**$**
符号 $ 可以用来坐变量前面的标识符,还可以和!结合起来用。
特殊符号 ;
特殊符号 ~
特殊符号 &
重定向符号 > , >> , 2> 和 2>>
中括号 []
特殊符号 && 和 ||