Linux shell基础知识

8.10、shell 特殊符号_cut命令

  • *任意个任意字符
  • ?任意一个字符
  • #注释字符
  • \脱义字符
  • |管道符
	1. [root@localhost ~]# a=1
	2. [root@localhost ~]# b=2
	3. [root@localhost ~]# echo \$a\$b          \脱义
	4. $a$b
	5. [root@localhost ~]#
	1. [root@localhost ~]# cat /etc/passwd |head
	2. root:x:0:0:root:/root:/bin/bash
	3. bin:x:1:1:bin:/bin:/sbin/nologin
	4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	5. adm:x:3:4:adm:/var/adm:/sbin/nologin
	6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	7. sync:x:5:0:sync:/sbin:/bin/sync
	8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	9. halt:x:7:0:halt:/sbin:/sbin/halt
	10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	11. operator:x:11:0:operator:/root:/sbin/nologin
	12. [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ':' -f 1      //-d参数指定分隔符,-f指定段号,-c指定第几个字符
	13. root
	14. bin
	15. [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ':' -f 1-3
	16. root:x:0
	17. bin:x:1
	18. [root@localhost ~]# 
	19. [root@localhost ~]# cat /etc/passwd |head -2 |cut -c 5
	20. :
	21. x
	22. [root@localhost ~]# cat /etc/passwd |head -2 |cut -c 4
	23. t
	24. :
	25. [root@localhost ~]# 

8.11、sort_wc_uniq命令

  • sort排序,-n以数字排序,-r反序,-t分隔符,-kn1/-kn1,n2

  • wc -l统计行数,-m统计字符数,-w统计词

  • uniq去重,-c统计行数

  • tee和>类似,重定向的同时还在屏幕显示

  • tr替换字符,tr 'a' 'b',大小写替换tr '[a-z]' '[A-Z]

  • split切割,-b大小(默认单位字节),-l行数

  • sort排序

	1. [root@localhost ~]# sort /etc/passwd
	2. adm:x:3:4:adm:/var/adm:/sbin/nologin     //默认按ascll码排序
	3. bin:x:1:1:bin:/bin:/sbin/nologin
	4. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
	5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	6. dbus:x:81:81:System message bus:/:/sbin/nologin
	7. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
	8. games:x:12:100:games:/usr/games:/sbin/nologin
	9. halt:x:7:0:halt:/sbin:/sbin/halt
	10. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	12. nobody:x:99:99:Nobody:/:/sbin/nologin
	13. operator:x:11:0:operator:/root:/sbin/nologin
	14. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
	15. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
	16. root:x:0:0:root:/root:/bin/bash
	17. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	18. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
	19. sync:x:5:0:sync:/sbin:/bin/sync
	20. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
	21. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
	22. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
	23. [root@localhost ~]# cat /etc/passwd
	24. root:x:0:0:root:/root:/bin/bash
	25. bin:x:1:1:bin:/bin:/sbin/nologin
	26. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	27. adm:x:3:4:adm:/var/adm:/sbin/nologin
	28. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	29. sync:x:5:0:sync:/sbin:/bin/sync
	30. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	31. halt:x:7:0:halt:/sbin:/sbin/halt
	32. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	33. operator:x:11:0:operator:/root:/sbin/nologin
	34. games:x:12:100:games:/usr/games:/sbin/nologin
	35. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
	36. nobody:x:99:99:Nobody:/:/sbin/nologin
	37. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
	38. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
	39. dbus:x:81:81:System message bus:/:/sbin/nologin
	40. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
	41. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
	42. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
	43. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
	44. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
	45. [root@localhost ~]# 
  • sort命令结合uniq命令
	1. [root@localhost ~]# sort 1.txt |uniq
	2. 

	3. 123123
	4. 123123123123123123
	5. abcdef
	6. adm:x:3:4:adm:/var/adm:/sbin/nologin
	7. bin:x:1:1:bin:/bin:/sbin/nologin
	8. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	9. halt:x:7:0:halt:/sbin:/sbin/halt
	10. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	12. operator:x:11:0:operator:/root:/sbin/nologin
	13. root:x:0:0:root:/root:/bin/bash
	14. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	15. sync:x:5:0:sync:/sbin:/bin/sync
	16. [root@localhost ~]# 

  • wc -l查看行数
	1. [root@localhost ~]# wc -l 1.txt 
	2. 36 1.txt

  • wc -w
	1. [root@localhost ~]# wc -w 1.txt 
	2. 35 1.txt
	3. [root@localhost ~]# 

  • uniq去重复
	1. [root@localhost ~]# uniq 1.txt 
	2. 123123123123123123
	3. root:x:0:0:root:/root:/bin/bash
	4. bin:x:1:1:bin:/bin:/sbin/nologin
	5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	6. adm:x:3:4:adm:/var/adm:/sbin/nologin
	7. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	8. sync:x:5:0:sync:/sbin:/bin/sync
	9. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	10. halt:x:7:0:halt:/sbin:/sbin/halt
	11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	12. operator:x:11:0:operator:/root:/sbin/nologin
	13. root:x:0:0:root:/root:/bin/bash
	14. bin:x:1:1:bin:/bin:/sbin/nologin
	15. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	16. adm:x:3:4:adm:/var/adm:/sbin/nologin
	17. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	18. sync:x:5:0:sync:/sbin:/bin/sync
	19. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	20. halt:x:7:0:halt:/sbin:/sbin/halt
	21. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	22. operator:x:11:0:operator:/root:/sbin/nologin
	23. 123123
	24. abcdef
	25. 

	26. [root@localhost ~]# cat 1.txt 
	27. 123123123123123123
	28. 123123123123123123
	29. 123123123123123123
	30. 123123123123123123
	31. 123123123123123123
	32. 123123123123123123
	33. 123123123123123123
	34. 123123123123123123
	35. 123123123123123123
	36. 123123123123123123
	37. 123123123123123123
	38. 123123123123123123
	39. 123123123123123123
	40. root:x:0:0:root:/root:/bin/bash
	41. bin:x:1:1:bin:/bin:/sbin/nologin
	42. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	43. adm:x:3:4:adm:/var/adm:/sbin/nologin
	44. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	45. sync:x:5:0:sync:/sbin:/bin/sync
	46. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	47. halt:x:7:0:halt:/sbin:/sbin/halt
	48. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	49. operator:x:11:0:operator:/root:/sbin/nologin
	50. root:x:0:0:root:/root:/bin/bash
	51. bin:x:1:1:bin:/bin:/sbin/nologin
	52. daemon:x:2:2:daemon:/sbin:/sbin/nologin
	53. adm:x:3:4:adm:/var/adm:/sbin/nologin
	54. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	55. sync:x:5:0:sync:/sbin:/bin/sync
	56. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	57. halt:x:7:0:halt:/sbin:/sbin/halt
	58. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	59. operator:x:11:0:operator:/root:/sbin/nologin
	60. 123123
	61. abcdef
  • uniq -c参数统计重复次数
	1. [root@localhost ~]# uniq -c 1.txt 
	2.      13 123123123123123123
	3.       1 root:x:0:0:root:/root:/bin/bash
	4.       1 bin:x:1:1:bin:/bin:/sbin/nologin
	5.       1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	6.       1 adm:x:3:4:adm:/var/adm:/sbin/nologin
	7.       1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	8.       1 sync:x:5:0:sync:/sbin:/bin/sync
	9.       1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	10.       1 halt:x:7:0:halt:/sbin:/sbin/halt
	11.       1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	12.       1 operator:x:11:0:operator:/root:/sbin/nologin
	13.       1 root:x:0:0:root:/root:/bin/bash
	14.       1 bin:x:1:1:bin:/bin:/sbin/nologin
	15.       1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	16.       1 adm:x:3:4:adm:/var/adm:/sbin/nologin
	17.       1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	18.       1 sync:x:5:0:sync:/sbin:/bin/sync
	19.       1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	20.       1 halt:x:7:0:halt:/sbin:/sbin/halt
	21.       1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	22.       1 operator:x:11:0:operator:/root:/sbin/nologin
	23.       1 123123
	24.       1 abcdef
	25.       1 
	26. [root@localhost ~]# 

8.12、tee_tr_split命令

  • tee和输出重定向类似 -a参数追加
	1. [root@localhost ~]# sort 1.txt |uniq -c > 11.txt
	2. [root@localhost ~]# cat 11.txt 
	3.       1 
	4.       1 123123
	5.      13 123123123123123123
	6.       1 abcdef
	7.       2 adm:x:3:4:adm:/var/adm:/sbin/nologin
	8.       2 bin:x:1:1:bin:/bin:/sbin/nologin
	9.       2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	10.       2 halt:x:7:0:halt:/sbin:/sbin/halt
	11.       2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	12.       2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	13.       2 operator:x:11:0:operator:/root:/sbin/nologin
	14.       2 root:x:0:0:root:/root:/bin/bash
	15.       2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	16.       2 sync:x:5:0:sync:/sbin:/bin/sync
	17. [root@localhost ~]# cat 11.txt ^[[2^C
	18. [root@localhost ~]# sort 1.txt |uniq -c |tee 11.txt 
	19.       1 
	20.       1 123123
	21.      13 123123123123123123
	22.       1 abcdef
	23.       2 adm:x:3:4:adm:/var/adm:/sbin/nologin
	24.       2 bin:x:1:1:bin:/bin:/sbin/nologin
	25.       2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	26.       2 halt:x:7:0:halt:/sbin:/sbin/halt
	27.       2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	28.       2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	29.       2 operator:x:11:0:operator:/root:/sbin/nologin
	30.       2 root:x:0:0:root:/root:/bin/bash
	31.       2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	32.       2 sync:x:5:0:sync:/sbin:/bin/sync
	33. [root@localhost ~]# cat 11.txt 
	34.       1 
	35.       1 123123
	36.      13 123123123123123123
	37.       1 abcdef
	38.       2 adm:x:3:4:adm:/var/adm:/sbin/nologin
	39.       2 bin:x:1:1:bin:/bin:/sbin/nologin
	40.       2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	41.       2 halt:x:7:0:halt:/sbin:/sbin/halt
	42.       2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	43.       2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	44.       2 operator:x:11:0:operator:/root:/sbin/nologin
	45.       2 root:x:0:0:root:/root:/bin/bash
	46.       2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	47.       2 sync:x:5:0:sync:/sbin:/bin/sync
	48. [root@localhost ~]# >11.txt 
	49. [root@localhost ~]# cat 11.txt 
	50. [root@localhost ~]# cat 11.txt 
	51. [root@localhost ~]# !s
	52. sort 1.txt |uniq -c |tee 11.txt 
	53.       1 
	54.       1 123123
	55.      13 123123123123123123
	56.       1 abcdef
	57.       2 adm:x:3:4:adm:/var/adm:/sbin/nologin
	58.       2 bin:x:1:1:bin:/bin:/sbin/nologin
	59.       2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
	60.       2 halt:x:7:0:halt:/sbin:/sbin/halt
	61.       2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	62.       2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
	63.       2 operator:x:11:0:operator:/root:/sbin/nologin
	64.       2 root:x:0:0:root:/root:/bin/bash
	65.       2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	66.       2 sync:x:5:0:sync:/sbin:/bin/sync
	67. [root@localhost ~]# 
  • tr替换字符,针对字符操作
	1. [root@localhost ~]# echo "liyang" |tr '[ly]' '[LY]'
	2. LiYang
	3. [root@localhost ~]# 
	4. [root@localhost ~]# echo "liyang" |tr '[ly]' '[LY]'
	5. LiYang
	6. [root@localhost ~]# echo "liyang" |tr '[a-z]' '[A-Z]'
	7. LIYANG
	8. [root@localhost ~]# 
  • split切割,-b大小(默认单位字节),-l行数,一般用于查看日志(内容巨大)
	1. [root@localhost ~]# split -b 100M bigfile
	2. [root@localhost ~]# split -l 1000 bigfile
	3. [root@localhost ~]#
	4. [root@localhost ~]# find /etc/ -type f -name "*conf" -exec cat {} >> 11.txt \;
	5. [root@localhost ~]# split -b 100k 11.txt 
	6. [root@localhost ~]# ls
	7. 11.txt  1.txt  3.txt  5.txt            a.txt  xaa  xac  xae  xag  xai  xak  xam
	8. 14.txt  2.txt  4.txt  anaconda-ks.cfg  b.txt  xab  xad  xaf  xah  xaj  xal
	9. [root@localhost ~]# rm -f x*
	10. [root@localhost ~]# ls
	11. 11.txt  14.txt  1.txt  2.txt  3.txt  4.txt  5.txt  anaconda-ks.cfg  a.txt  b.txt
	12. [root@localhost ~]# 

8.13、shell特殊符号(下)

  • $变量前缀,!$组合,正则里面表示行尾
  • ; 多条命令写到一行,用分号分隔
  • ~用户家目录,后面正则表达式表示匹配符
  • &放到命令后面,会把命令丢到后台
  • []指定字符中的一个,[0-9],[a-zA-Z],[abc]
  • ||和&&,用于命令之间
	1. [root@localhost ~]# ls 1.txt ; wc -l 11.txt 
	2. 1.txt
	3. 34396 11.txt
	4. [root@localhost ~]# 
  • “>”正确重定向,会覆盖之前的文件
  • ”>>”追加重定向(正确)
  • 2>错误重定向
  • 2>>错误追加重定向
  • &>正确错误输出重定向
  • ||shell里表示或者的意思,执行命令时,前一条执行成功后,后一条就不在执行
  • &&命令在执行两条命令时,前一条成功后,才会继续执行,如果不成功,后面的命令就不会执行
	1. [root@localhost ~]# ls 1a.txt || wc 1.txt 
	2. ls: 无法访问1a.txt: 没有那个文件或目录
	3.   36   35 1032 1.txt
	4. [root@localhost ~]# ls 1a.txt && wc -l 1.txt 
	5. ls: 无法访问1a.txt: 没有那个文件或目录
	6. [root@localhost ~]# 
  • 实际应用
	1. [root@localhost ~]# [ -d liyang ] || mkdir liyang
	2. [root@localhost ~]# ls
	3. 11.txt  14.txt  1.txt  2.txt  3.txt  4.txt  5.txt  anaconda-ks.cfg  a.txt  b.txt  liyang
	4. [root@localhost ~]# 
	5. [root@localhost ~]# [ -d liyang ] && mkdir liyang
	6. mkdir: 无法创建目录"liyang": 文件已存在
	7. [root@localhost ~]# 

扩展

  1. source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
  2. Linux特殊符号大全http://ask.apelearn.com/question/7720
  3. sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975

转载于:https://my.oschina.net/u/3706694/blog/1575864

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值