一、shell特殊符_cut命令 脱义字符: [root@linux-01 ~]# c=$a$b //和 #c='$a$b' 效果一样 [root@linux-01 ~]# echo $c $a$b

管道符 cut 分割 [root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 //取第一段 root bin [root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 //取第1,第2段 root:x bin:x [root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 //取1-3段 root:x:0 bin:x:1

[root@linux-01 ~]# cat /etc/passwd |head -2 |cut -c 4 //-c,指定第几个字符 t :

二、sort_wc_uniq命令 sort 排序 [root@linux-01 ~]# sort /etc/passwd //普通没有特殊符号的按照a b c d e 26个英文字母排序 adm:x:3:4:adm:/var/adm:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt hll:x:1001:1002::/home/hll:/bin/bash

[root@linux-01 ~]# sort filename //文件中有特殊符号、数字的先排特殊符号、数字、字母 ( [ } 11 345 88 aadgg bbbb dgfggf

sort -n选项 [root@linux-01 ~]# sort -n filename //-n选项以数字排序,和把特殊符号和字母都识别为0 ( [ } aadgg bbbb dgfggf 11 88 345

sort -nr filename ,-r选项,反排序,最大在前面,最小的在后面

#wc -l //统计行数的命令 [root@linux-01 ~]# wc -l 2.txt //统计2.txt文件行数 19 2.txt #wc -m //统计字符数的命令 [root@linux-01 ~]# wc -m 2.txt //统计2.txt文件的字符数 85 2.txt

#cat -A 2.txt //cat -A可以查看所有字符包括隐藏的,可以看到每行字符后面有一个换行符 #wc -w 2.txt //统计词的数量 [root@linux-01 ~]# wc -w 2.txt 18 2.txt

#uniq //去重复的,但是去重之前先要进行排序,然后再去重 可以先排序,使用 #sort 2.txt , 然后再 #sort 2.txt |uniq

三、tee_tr_split命令 tee 和 > 类似,重定向的同时还在屏幕显示 清空一个文件的命令:#> 2.txt //清空2.txt文件内容 sort 2.txt |uniq -c |tee 4.txt //把2.txt文件去重之后重定向输入到4.txt文件中,|tee的作用就是重定向,把管道前面的结果打印在屏幕上 #sort 2.txt |uniq -c |tee -a 4.txt //tee -a 就是追加

tr 命令是用来替换字符的 [root@linux-01 ~]# echo "linux" |tr '[ln]' '[LN]' //将ln替换为LN LiNux [root@linux-01 ~]# echo "linux" |tr 'ln' 'LN' //或者也可以写成这样 LiNux [root@linux-01 ~]# echo "linux" |tr '[a-z]' '[A-Z]' //可以指定范围 LINUX

split 切割 #split -b 100M bigfile //-b选项,指定切割文件大小,不写单位1000后面默认单位是字节 #split -l 1000 bigfile //-l选项,指定切割文件行数 #find /etc/ -type f -name "*conf" -exec cat {} >> 3.txt ; //查找/etc下的.conf文件并把它追加到3.txt #split -b 1000 3.txt //指定切割文件大小为1000字节 [root@linux-01 ~]# split -b 100K 3.txt abc //指定切割文件前缀为abc [root@linux-01 ~]# ls 2.txt 4.txt abcab 3.txt abcaa abcac #split -l 1000 3.txt // 切割1000行

四、shell特殊符号下 [root@linux-01 ~]# for i in seq 1 10 //执行多条命令

do echo $i done 1 2 3 4 5 6 7 8 9 10 [root@linux-01 ~]# for i in seq 1 10; do echo $i; done //使用向上翻历史命令,列出来的是用分号隔开的多条命令

[root@linux-01 ~]# ls 3.txt ; wc -l 2.txt //两条命令一起执行中间加分号 3.txt 19 2.txt

正确重定向,会把之前文件覆盖掉

追加重定向正确的输出 2> 输出错误内容重定向 2>> 把错误信息追加重定向 &> 把正确错误内容输出到一个文件中 [ ] 指定字符中的一个,[0-9], [a-zA-Z], [abc] || 用在shell中表示或者的意思 #ls 1.txt || wc -l 2.txt // ||表示当第一条命令执行成功后就不执行第二条命令,第一条执行不成功则执行第二条 #ls 1.txt && wc -l 2.txt //&&表示前面的命令执行成功了才会执行后面的命令 #[ -d abcd ] || mkdir abcd //判断abcd目录是否存在,如果存在就不创建,如果不存在,就创建