一、shell特殊符
* 任意个任意字符
? 任意一个字符
# 注释字符
\ 脱义字符
| 管道符
$ 变量的前缀
!$ 正则里面表示行尾
; 多条命令写到一行,用;进行分割
~ 用户的家目录,正则表达式表示匹配符
& 放在命令后面,将命令放到后台
[] 指定字符中的一个
|| 或者
[root@localhost spilt]# ls 2.txt || wc -l 3.txt #只要前面一条命令成功执行,那么后面的命令就不执行
2.txt
[root@localhost spilt]# ls 3.txt || wc -l 2.txt #如果前面的命令不成功,那么执行后面的命令
ls: 无法访问3.txt: 没有那个文件或目录
5398 2.txt
[root@localhost spilt]# ls 3.txt && wc -l 2.txt #只要前面一条命令执行不成功,那么后面的命令就不执行
ls: 无法访问3.txt: 没有那个文件或目录
[root@localhost spilt]# ls 2.txt && wc -l 3.txt #如果前面的命令成功执行,那么后面的命令才执行
2.txt
wc: 3.txt: 没有那个文件或目录
判断一个目录是否存在,如果不存在就创建,
[root@localhost spilt]# ls
2.txt
[root@localhost spilt]# [ -d linux ] || mkdir linux #[ -d linux ]判断一个目录是否存在,没有存在linux目录,执行后面命令创建linux目录
[root@localhost spilt]# ls
2.txt linux
[root@localhost spilt]# [ -d linux ] && mkdir linux #因为linux目录已经存在,前面的命令执行不成功,后面的命令不执行
mkdir: 无法创建目录"linux": 文件已存在
二、. cut 分割
-d指定分隔符 -f指定第几段 -c 指定第几个字符
1. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1 #文件前两行,并按照冒号为分隔符,截取第一段
root
bin
2. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1,2,3 #文件前两行,并按照冒号为分隔符,截取前三段
root:x:0
bin:x:1
3. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1-5 #截取第一到第五段
root:x:0:0:root
bin:x:1:1:bin
4. [root@localhost ~]# head -n2 /etc/passwd |cut -c 3 #指定第三个字符
o
n
5. [root@localhost ~]# head -n2 /etc/passwd |cut -c 3-5 #指定第3-5个字符
ot:
n:x
三、 sort
1. sort 排序,默认按照ASCII进行排序
[root@localhost ~]# head -n5 /etc/passwd |sort 查看/etc/passwd的前5行并进行排序
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
2. sort -n 按照数字进行排序,字母或者特殊符号都会认为是0
[root@localhost ~]# sort -n /etc/passwd #按照数字进行排序
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin3. sort -r 反序进行排序
[root@localhost ~]# sort -nr /etc/passwd #反序进行排序,大的数字在前面
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
四、 wc
wc -l 统计行数
[root@localhost ~]# wc -l /etc/passwd
25 /etc/passwd
wc -m 统计字符数,$每一行的换行符也算一个字符
[root@localhost ~]# wc -m /etc/passwd
1185 /etc/passwd
wc -w 统计词数,以空白字符作为分隔符号
[root@localhost ~]# wc -w /etc/passwd
48 /etc/passwd
五、uniq
去重复,但是需要先进行排序
[root@localhost ~]# uniq /etc/passwd #单独使用uniq相同的字符相邻才有用,所以要先进行排序
[root@localhost ~]# sort /etc/paswd|uniq #先排序再去重
uniq -c 统计重复的次数
[root@localhost ~]# sort /etc/passwd |uniq -c
六、tee
tee 和>的功能类似,重定向还可以将结果打印在屏幕上
tee -a 和>>功能类似,追加重定向
[root@localhost ~]# sort /etc/passwd |uniq -c |tee 1.txt #对/etc/passwd进行排序去重,并将结果重定向到1.txt
七、 tr 替换字符
[root@localhost ~]# echo "rainlinux" |tr '[rl]' '[RL]' #将rl小写替换为大写
RainLinux
[root@localhost ~]# echo "rainlinux" |tr '[a-z]' '[A-Z]' #将所有的字符替换为大写
RAINLINUX
八、split
split -b 切割文件,按照大小进行切割
[root@localhost spilt]# split -b 1M rr.txt #按照1M的大小切割文件rr.txt
[root@localhost spilt]# ls
rr.txt xaa xab xac xad xae xaf xag xah
split -l 切割文件,按照行数进行切割
[root@localhost spilt]# split -l 1000 2.txt # 将2.txt每1000行分割为1个文件
[root@localhost spilt]# ls
2.txt xaa xab xac xad xae xaf