特殊符号
* 任意字符
? 任意一个字符
注释字符
表示这条命令不生效, 起到解释说明
\ 脱义字符
- [root@localhost ~]# a=1
- [root@localhost ~]# b=2
- [root@localhost ~]# c=$a$b
- [root@localhost ~]# echo $c
- 12
- [root@localhost ~]# c=\$a\$b
- [root@localhost ~]# echo $c
- $a$b
- [root@localhost ~]#
| 管道符, 几个和管道有关的命令
cut 命令: 截取字符串
- cat /etc/passwd |cut -d ":" -f 1,2
-d 分隔符
-f 指定段号
-c 指定第几个字符, 使用时候就不能用 -d ,-f 了.
- [root@localhost ~]# cat /etc/passwd | head
- root:x:0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/bin:/sbin/nologin
- daemon:x:2:2:daemon:/sbin:/sbin/nologin
- adm:x:3:4:adm:/var/adm:/sbin/nologin
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
- sync:x:5:0:sync:/sbin:/bin/sync
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- halt:x:7:0:halt:/sbin:/sbin/halt
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologin
- [root@localhost ~]# cat /etc/passwd |cut -d ":" -f 1,2
- root:x
- bin:x
- daemon:x
- adm:x
- lp:x
- sync:x
- shutdown:x
- halt:x
- mail:x
- operator:x
- games:x
- ftp:x
- nobody:x
- systemd-bus-proxy:x
- systemd-network:x
- dbus:x
- polkitd:x
- tss:x
- postfix:x
- sshd:x
- chrony:x
- user1:x
- user2:x
- user3:x
- [root@localhost ~]#
sort : 排序命令, 默认按照阿斯玛顺序排列
- [root@localhost ~]# sort 1.txt
- >
- .
- @
- 111n
- 1.txt
- *2
- 222333
- 222444
- 222555
- 222aaaa
- 2.txt
- 333333
- 4444444
- 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
- halt:x:7:0:halt:/sbin:/sbin/halt
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ls: 无法访问 asffsfs.txt: 没有那个文件或目录
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologi
- root:x:0:0:root:/root:/bin/bash
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- sync:x:5:0:sync:/sbin:/bin/sync
- [root@localhost ~]#
-n 以数字排序, 默认字母和特殊符号都会被认为为 0
- [root@localhost ~]# sort -n 1.txt
- >
- .
- @
- *2
- 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
- halt:x:7:0:halt:/sbin:/sbin/halt
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ls: 无法访问 asffsfs.txt: 没有那个文件或目录
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologi
- root:x:0:0:root:/root:/bin/bash
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- sync:x:5:0:sync:/sbin:/bin/sync
- 1.txt
- 2.txt
- 111n
- 222aaaa
- 222333
- 222444
- 222555
- 333333
- 4444444
- [root@localhost ~]#
-r 反序, 跟阿斯玛反过来
- [root@localhost ~]# sort -r 1.txt
- sync:x:5:0:sync:/sbin:/bin/sync
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- root:x:0:0:root:/root:/bin/bash
- operator:x:11:0:operator:/root:/sbin/nologi
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ls: 无法访问 asffsfs.txt: 没有那个文件或目录
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
- halt:x:7:0:halt:/sbin:/sbin/halt
- daemon:x:2:2:daemon:/sbin:/sbin/nologin
- bin:x:1:1:bin:/bin:/sbin/nologin
- adm:x:3:4:adm:/var/adm:/sbin/nologin
- 4444444
- 333333
- 2.txt
- 222aaaa
- 222555
- 222444
- 222333
- *2
- 1.txt
- 111n
- @
- .
- >
- [root@localhost ~]#
-t 分隔符.-kn1/-kn1,n2
wc -l : 统计行数命令
- [root@localhost ~]# wc -l 1.txt
- 25 1.txt
wc -m : 统计字符数
- [root@localhost ~]# wc -m 1.txt
- 487 1.txt
wc -w : 统计词 , 以空白字符为分割
- [root@localhost ~]# wc -w 1.txt
- 27 1.txt
- [root@localhost ~]#
uniq 去重 需要相邻的重复词才能去掉, 所以一般先排序后去除重复 sort 2.txt |uniq -c
-c 统计重复行数
tee 和 > 类似
可视化重定向
- [root@localhost ~]# sort 1.txt> a.txt
- [root@localhost ~]# cat a.txt
- >
- .
- @
- 111n
- 1.txt
- *2
- 222333
- 222444
- 222555
- 222aaaa
- 2.txt
- 333333
- 4444444
- 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
- halt:x:7:0:halt:/sbin:/sbin/halt
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ls: 无法访问 asffsfs.txt: 没有那个文件或目录
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologi
- root:x:0:0:root:/root:/bin/bash
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- sync:x:5:0:sync:/sbin:/bin/sync
- [root@localhost ~]# sort 1.txt |tee a.txt
- >
- .
- @
- 111n
- 1.txt
- *2
- 222333
- 222444
- 222555
- 222aaaa
- 2.txt
- 333333
- 4444444
- 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
- halt:x:7:0:halt:/sbin:/sbin/halt
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ls: 无法访问 asffsfs.txt: 没有那个文件或目录
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologi
- root:x:0:0:root:/root:/bin/bash
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- sync:x:5:0:sync:/sbin:/bin/sync
- [root@localhost ~]#
|tee -a 可视化追加重定向
tr 替换字符
- [root@localhost ~]# echo "aminglinux" |tr 'a' 'A'
- Aminglinux
- [root@localhost ~]# echo "aminglinux" |tr '[anx]' '[ANX]'
- AmiNgliNuX
- [root@localhost ~]# echo "aminglinux" |tr '[a-z]' '[A-Z]'
- AMINGLINUX
split 切割
-b 指定分割大小: split -b 100M bigfile filename(不写单位默认显示是字节)
-l 指定分割文件行数 :split -l 1000 bigfile filename
shell 特殊符号
$ 变量前缀,!$ 组合, 正则里面表示行尾
; 多条命令写到一行, 用分号分割
~ 用户家目录, 后面正则表达式表示匹配符
& 放到命令后面, 会把命令丢到后台
>>> 2> 2>> &>
[] 指定字符中的一个
|| 和 &&, 用于命令之间
|| 或者的意思
&&
||
如果 || 前面的命令提示成功,|| 后面的命令就不会执行, 如果前面命令执行不成功, 才会执行 || 后面的命令.
[root@localhost ~]# ls 1a.txt ; wc -l 1.txt
ls: 无法访问 1a.txt: 没有那个文件或目录
- 25 1.txt
- [root@localhost ~]# ls 1a.txt || wc -l 1.txt
ls: 无法访问 1a.txt: 没有那个文件或目录
- 25 1.txt
- [root@localhost ~]# ls 1.txt || wc -l 1.txt
- 1.txt
- [root@localhost ~]#
- &&
如果前面的命令执行成功后, 才会执行后面的命令, 如果前面命令错了, 就不会执行后面的命令了,
- [root@localhost ~]# ls 1.txt && wc -l 1.txt
- 1.txt
- 25 1.txt
- [root@localhost ~]# ls 1a.txt && wc -l 1.txt
ls: 无法访问 1a.txt: 没有那个文件或目录
[root@localhost ~]#
来源: http://www.bubuko.com/infodetail-2574042.html