1.命令cut
概念:cut命令用来截取某一个字段 格式:cut -d [-cf] n cut -d截取分割符号为“:”, -f 1 表示截取第一段,1,2表示前两段,1-3表示头三段。
- -d 后面跟分割字符,分割字符要用单引号括起来
- -c 后面接的是第几个字符
- -f 后面接的是第几个区块(指定区域)
2.命令sort
sort命令用于排序 格式:sort [-t 分隔符] [-kn1,n2] [-nru] 这里-n1和n2指的是数字,其他选项如下
- -t 后面跟分割字符,作用跟cut -d选项一样,截取符号是什么
- -n 表示使用纯数字排序,字母及特殊符号表示为0;(需要和k一起用)
- -r 表示反向排序
- -u 表示除去重复
- -kn1,n2 表示由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
- sort不加任何选项,则从首字符后依次按ASCII码值进行比较,最后将它们按升序输出
-t 后面跟分隔符,-k后面跟单个数字表示对第几个区域字符串排序,-n选项则表示用存数字排序
-k选项后面跟数字n1和n2表示:对第n1和n2区域内的字符串排序,-r为反向排序
3.wc 命令
wc命令用于统计文档的行数,字符数或词数
- wc不加选项 数 字数 字节数 文件名称
- wc -c filename:显示一个文件的字节数
- wc -m filename:显示一个文件的字符数
- wc -l filename:显示一个文件的行数
- wc -L filename:显示一个文件中的最长行的长度
- wc -w filename:显示一个文件的词数
4.命令uniq
概念:uniq命令用来删除重复的行,改名了只有-c选项比较常用; 它表示统计重复的行数,并把行数写在前面,常与sort连用。
5.命令tee
tee命令后面跟文件名,起作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面跟的文件时,还会显示在屏幕上
5.命令tr
tr命令用于替换字符,常用来处理文档中出现的特殊符号;如DOS文档中出现的符号^M,该命令常用的选项如下:
- -d 表示删除某个字符,后面跟要删除的字符;
- -s 表示删除重复的字符
- 删除去重复等操作都是针对一个字符来讲的;如果是一个字符串,就不能使用了
tr命令常用于把小写字母变成大写字母,如tr '[a-z]' '[A-Z]'
tr命令还可以替换一个字符
-d 表示删除某个字符,后面跟要删除的字符
-s 表示删除重复的字符
6. 命令split
split命令用于切割文档,常用的选项为-b和-l
- -b 表示依据大小来分割文档,默认单位为byte(字节),可以设置单位:K、M等
- 也可以指定目标文件名
- -l 表示依据行数来分割文档
7.shell的特殊符号
特殊符号$
$可以用作变量前面的标识符,还可以和!结合使用
特殊符号 ;
在一行命令中运行两个或两个以上的命令,需要在命令之间加符号;
重定向符号>、>>、2>和2>>
和>>分别表示取代和追加的意思。当我们运行一个命令报错时,报错信息会输出到当前屏幕。如果想重定向到一个文本,则要用重定向符号2>或者2>>,它们分别表示错误重定向和错误追加重定向。
- 2>和2>>它们分别表示错误重定向和错误追加重定向
- 错误和正确都输入&>
特殊符号~
符号~代表用户的家目录,root用户的家目录是/root,普通用户的家目录是/home/username
中括号[]
中括号内为字符组合,代表字符组合中的任意一个。指定一个范围(1-3,a-z)
特殊符号||
使用||时,表示或者,意思是说 如果两条命令用||分割的话,第一条执行成功后,第二条就不会执行,假如第一条命令是错误的话,执行失败就会执行第二条
特殊符号 &&
使用&& 表示前面的命令执行成功以后,才会执行后面的命令,如果前面命令执行不成功,后面的命令就不会执行。用&&分割,用来判断的
总结下:
-
command1 ; command2
-
command1 && command2
-
command1 || command2
-
使用 ”;” 时,不管command1是否执行成功都会执行command2;
-
使用 “&&” 时,只有command1执行成功后,command2才会执行,否则command2不执行;
-
使用 “||” 时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行
8.fork source exec的区别
1. fork ( /directory/script.sh) :如果shell中包含执行命令,那么子命令并不影响父级的命令,在子命令执行完后再执行父级命令。子级的环境变量不会影响到父级。
fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。
sub-shell执行完毕后返回parent-shell. sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell
2. exec (exec /directory/script.sh):执行子级的命令后,不再执行父级命令。
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
3. source (source /directory/script.sh):执行子级命令后继续执行父级命令,同时子级设置的环境变量会影响到父级的环境变量。
与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用