1、特殊符号

相关例子,详见下图,

2、关于管道符

(1)、cut 分割 -d 分隔符 -f 指定段号 -c 指定第几个字符 举例子,见下图, 上图例子中,| 输出结果,cut 分割出后面想要的结果。一般情况下,-c 和 -d 、-f 不同时使用。

(2)、sort 排序 -n 以数字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2 举例子,见下图, 可以注意到,红色框框里面的内容是按字母顺序排列的,这个就是 sort 作用的结果。sort 后面不加任何选项,则从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

关于ASCII码,百度百科的解释如下:

接着往下操作,见下图, 回车之后,进入下图, 随机输入上图红色框框的内容,保存后退出。使用 sort 查看文件 1.txt ,见下图, 可以看到上图的排列顺序是,先特殊符号,再数字,然后再字母,包括 * 号。以上就是 ASCII 码的排列顺序。 -n 选项是以数字排序,前面的特殊符号和字母,都默认为 0 。见下图, -r 选项是反序的意思,见下图, -t 后面跟分隔符,-kn1/-kn1,n2 ,这些用的比较少,了解即可。

(3)、wc -l 统计行数 -m 统计字符数 -w 统计词 举个例子,见下图, 进入 2.txt 文件,编辑输入下图红色框框的内容, 保存后退出。接着统计 2.txt 的字符数,见下图, 可以看到,2.txt 的字符数是 8 ,为什么会是 8 呢?cat -A 之前说过,它可以查看 2.txt 文件里的所有内容,包括隐藏的。然后,就看到了每一行末尾的 $ ,表示的是换行符。所以,wc -m 2.txt 的结果是 8 。 接着对 -w 进行操作,见下图, 2.txt 里的内容有两行,所以显示的结果是 2 。再次进入 2.txt 编辑文件内容,见下图, 补充完上图内容后,保存并退出。再次查看统计词,见下图, -w 是以空白字符作为分隔符的,所以结果显示为 3 。

(4)、uniq 去重复,-c 统计行数 输入命令 vi 2.txt ,回车,见下图, 增加上图红色框框的内容,保存并退出。接着往下操作, 发现 uniq 命令对 2.txt 的内容没有任何影响,再次进入文件 2.txt ,编辑内容如下, 将最后的1和2互换位置,然后保存退出。接着使用命令 uniq 2.txt 查看,见下图, 这时候,就会看到去重复了。这是有条件的去重复,必须两个同样的字符在前后位置,才能去重复。 一般情况下,uniq 和 sort 是一起使用的,见下图, 先排序,后去重复。这样子使用命令之后,就看不到重复的数值了。还可以使用 -c 选项来统计重复的次数,每一排前面的数字就是重复的次数。

(5)、tee 和 > 类似,重定向的同时还在屏幕显示,|tee -a 有追加作用 举例子,见下图, 从上图可以看出 |tee 的一个作用就是重定向,还有一个作用是把文件内容打印到屏幕上。 -a 选项有追加的作用,见下图, 再追加一次,再查看文件,见下图,

(6)、tr 命令 tr 替换字符,tr 'a' 'b',大小写替换 tr '[a-z]' '[A-Z]' 具体操作,详见下图,

(7)、split 命令 split 切割,-b 大小(默认单位字节),-l 行数 首先来创建一个大文件,输入命令 find /etc/ -type f -name "conf" ,回车,见下图, 该命令结果内容太多,不一一截图,接着操作如下, 后面这些 4.0 KB的文件也很多,不一一截图了。接着用命令 du -sh ,回车,见下图, 内容也非常多,不一一截图。1000 单位是 b 。因为前面切割的单位是 1000 ,接着往 100 切割,见下图, 切割成 100 之后,文件就更多了,图片内容截图不全,可以注意到这些小文件的命名都是有按字母排序的。文件太多,全部删除掉,接着往下操作, 以上就是 split 的用法,可以按大小切割,也可以按行数切割。

3、特殊符号

$ 、 ~ 、 & 、> 、>> 、2> 、2>> 、 &> 、 [ ] ,这些符号前面都有说过,这边就不介绍了。正则表达式,后面再介绍。 下面说一下 ; 分号,见下图, 这个命令 for i in 'seq 1 10' ,后面再介绍。注意上图中红色框框的内容,单引号和反引号作用的结果是不一样的。接着按向上的方向键,就出现上图中最后面的那个命令,也就是命令历史,会发现里面自动加上了分号 ; ,这就是多条命令之间用分号分割。继续操作,见下图, 两条命令之间用分号分割,分号前后可以空格也可以不用空格,结果都是一样的,建议还是用空格区分一下,看起来比较直观。 接着介绍一下 || 和 && 这两个符号,其中 || 用在 shell 当中就表示或者的意思,见下图, 上图中, la.txt 是没有的文件,所以会出现报错。用 ;号两个结果都能执行,换成 || 号,也两个结果都有出现。接着把 la.txt 文件换成正确的 1.txt 文件,就只出现了一个结果,是前面一条命令的结果。以上说明,|| 号是或者的意思,前一条命令执行不成功的话,就执行后面的一条命令。前面的命令执行成功的话,后面的命令就不执行了。 反过来,如果前面的命令执行成功了,才会执行后面的命令,就用 && 号,见下图, 现在举一个实际应用的例子,见下图, 关于命令 [ -d lyslinux ] || mkdir lyslinux 后面会介绍,现在先了解一下。[ -d lysliunx ] 这个命令的意思是用来判断 lyslinux 是不是一个目录,并且这个目录是否存在?是目录并且存在的话,这个命令就成功了。如果不存在的话就创建一个目录 lyslinux ,如上图红色框框显示的结果。而命令 [ -d lyslinux ] && mkdir lyslinux 的意思是,目录 lyslinux 存在的话,再去创建一个目录 lyslinux ,所以执行的结果就是无法创建目录 ”lyslinux“:文件已存在,执行的是后面的命令。接着执行命令 [ -d lyslinux ] || mkdir lyslinux ,就没有报错,意思是目录 lyslinux 存在就不执行后面的创建目录的命令。 关于 || 和 && 的用法,后面在 shell 脚本里会多次用到。