“*” 通配符,代表零个或多个字符
[root@aming01 ~]# ls 1.txt 2.txt 666 aa.txt anaconda-ks.cfg txt.1 [root@aming01 ~]# ls *.txt 1.txt 2.txt aa.txt
“?” 代表一个字符
[root@aming01 ~]# ls 1.txt 2.txt 666 aa.txt anaconda-ks.cfg txt.1 [root@aming01 ~]# ls .* aa.txt [root@aming01 ~]# ls .* 1.txt 2.txt
“#” 注释字符
“\” 脱意字符
[root@aming01 ~]# echo a$b a [root@aming01 ~]# echo a\$b a$b
“|” 管道符,将管道符左边的命令的输入内容,传递给右边的命令,例如我有一次做实验时,别人给我的解释
用来截取字符串,用法为cut -d ‘分某字符’ [-cf] n ,n是数字
-d:后面跟分割字符,需要用单引号括起来
-c:后面接的是第几个字符
-f:后面接的是第几个区块
cat passwd.bak这个文件,head只查看前两行,cut -d截取分割符号为“:”, -f 1 表示截取第一段,2表示第二段,1-3表示头三段;
[root@aming01 ~]# cp /etc/passwd ./passwd.bak [root@aming01 ~]# cat passwd.bak |head -3 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@aming01 ~]# cat passwd.bak |head -3 |cut -d ":" -f 1 root bin daemon [root@aming01 ~]# cat passwd.bak |head -3 |cut -d ":" -f 2 x x x [root@aming01 ~]# cat passwd.bak |head -3 |cut -d ":" -f 1-4 root:x:0:0 bin:x:1:1 daemon:x:2:2
用做排序,格式为sort [-t 分隔符] [-kn1,n2] [-nru],n1和n2指的是数字,后面不加选项,则按ASCⅡ码值排序
-n: 以纯数字排序,而其中的字符和字母都会默认为0
-r :反向排序
-u:去重复
-t :分隔符
-kn1,n2:表示由n1区间排序到n2区间 [root@aming01 ~]# vi passwd.bak [root@aming01 ~]# sort -n passwd.bak 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 hhh:x:1001:1005::/home/qwe:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin su1:x:1003:1003::/home/su1:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin user1:x:1002:1002::/home/user1:/bin/bash
加上-r选项
[root@aming01 ~]# sort -nr passwd.bak user1:x:1002:1002::/home/user1:/bin/bash systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync su1:x:1003:1003::/home/su1:/bin/bash
用于统计文档的行数、字符数或词数
-l:统计行数
-m:统计字符数
-w:统计词数,以空格或空白字符区分
[root@aming01 ~]# wc -l passwd.bak 21 passwd.bak [root@aming01 ~]# wc -m passwd.bak 913 passwd.bak [root@aming01 ~]# wc -w passwd.bak 29 passwd.bak
cat -A命令可以显示隐藏字符,换行符$
[root@aming01 ~]# cat -A passwd.bak 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$
用来删除重复的行,经常与sort命令连在一起使用,先排序再去重,uniq -c表示统计重复的行数(常用)
先排序,后去重
[root@aming01 ~]# vim 1.txt [root@aming01 ~]# cat 1.txt 111 123 111 456 456 666 [root@aming01 ~]# uniq -i 1.txt 111 123 111 456 666 [root@aming01 ~]# sort 1.txt |uniq -i 111 123 456 666
-c:统计内容相同的行的数量,需要先进行排序
[root@aming01 ~]# sort 1.txt |uniq -c 1 2 111 1 123 2 456 1 666
tee可以进行双向重定向,可以将命令的输出内容同时输入到文件和终端显示。
与输入输出重定向不同,tee命令需要配合管道符使用
[root@aming01 ~]# sort 1.txt |uniq -c > 2.txt [root@aming01 ~]# cat 2.txt 1 2 111 1 123 2 456 1 666 [root@aming01 ~]# sort 1.txt |uniq -c |tee 2.txt 1 2 111 1 123 2 456 1 666
tee -a:-a选项以追加的方式将内容输入文件。 不使用-a选项时会覆盖文件原来的内容
[root@aming01 ~]# sort 1.txt |uniq -c |tee -a 2.txt 1 2 111 1 123 2 456 1 666 [root@aming01 ~]# cat 2.txt 1 2 111 1 123 2 456 1 666 1 2 111 1 123 2 456 1 666
用于替换字符,常用于把小写字母变成大写字母,替换数字时,要去掉方括号[ ]
split可以指定文件大小,也可以指定文件名字前缀
split还可以根据行数分割
shell特殊符号下
;多条命令写到一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
正确重定向 >> 追加重定向 2> 错误重定向 2>> 错误追加重定向 &> 正确和错误输出重定向
[ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
|| 和 && ,用于命令之间
||表示或者,放在两条命令之间,如果第一命令执行不成功,那么执行第二天命令;如果第一条命令执行成功,那么不会执行第二条命令
&&:只有前面的命令执行成功,才会执行后面的命令
判断1122目录是否存在,命令[ -d 1122 ]
相关测验题目(必须要做):http://ask.apelearn.com/question/5437
简易审计系统(必须要预习): http://www.68idc.cn/help/server/linux/2014042190951.html
关于PROMPT_COMMAND环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html
source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
Linux特殊符号大全http://ask.apelearn.com/question/7720
sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975