8.10 shell特殊符号cut命令

8.11 sort_wc_uniq命令

8.12 tee_tr_split命令

8.13 shell特殊符号下


# 8.10 shell 特殊符_cut命令
---
- * 任意个任意字符
- ?任意一个字符
-  井号#注释字符  写命令的时候前面加一个#,那么这条命令就不生效,包括shell脚本里面也是,前面加个#表示这一行不生效,可以加一些注释说明的文字
```
<root@aminglinux-01 ~># #ls a.txt
<root@aminglinux-01 ~>##dkdkdkd
<root@aminglinux-01 ~>#
```

- \ 脱义字符
```
<root@aminglinux-01 ~>#a=1
<root@aminglinux-01 ~>#b=2
<root@aminglinux-01 ~>#c=$a$b
<root@aminglinux-01 ~>#echo $c
12
<root@aminglinux-01 ~>#
```
- 现在就想让这个c=这个$a$b 的字符串,之前给的方法是用单引号,还可以使用\脱义字符
```
<root@aminglinux-01 ~>#c='$a$b^C

<root@aminglinux-01 ~>#c=\$a\$b
<root@aminglinux-01 ~>#echo $c
$a$b
<root@aminglinux-01 ~>#
```

- | 管道符

![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170819/231012229.png?p_w_picpathslim)

- cut命令的用法
```
<root@aminglinux-01 ~>#cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
<root@aminglinux-01 ~>#cat /etc/passwd |head -2 |cut -d ":" -f 1
root
bin
<root@aminglinux-01 ~>#cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
<root@aminglinux-01 ~>#cat /etc/passwd |head -2 |cut -d ":" -f 1-3
root:x:0
bin:x:1
<root@aminglinux-01 ~>#

<root@aminglinux-01 ~>#cat /etc/passwd |head -2 |cut -c 4
t
:
<root@aminglinux-01 ~>#

```
- 针对这前俩行,切割,-d指定分隔符,-f指定段号,-c指定第几个字符 截取它的第一段用 -f 1 ,截取1 2 段就用 -f 1,2 用逗号隔开,1-3段就用-f 1-3  , cut 截取 -c 4 截取第四个字符


# 8.11 sort wc  uniq命令

## sort排序
- 默认sort排序按照 阿斯玛ASCII排序
```
[root@aminglinux-01 ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/home/user5:/bin/bash
user6:x:1008:1010::/home/user6:/bin/bash
[root@aminglinux-01 ~]# 
```
- 先做个实验,取/etc/passwd/的前10行 追加到 1.txt下
```
[root@aminglinux-01 ~]# head /etc/passwd >> 1.txt
[root@aminglinux-01 ~]# vim 1.txt

1.txt
2.txt
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
2222222aaaaaaa
488888888888asldkfas
*slkdf
222111
223333
22aaa
<
>
{
]
~                                                                  
~                                                                  
~                                                                  
~                                                                  
~                                                                  
~                                                                  
:wq
```
- sort 1.txt 看下
```
[root@aminglinux-01 ~]# vim 1.txt
[root@aminglinux-01 ~]# sort 1.txt
<
>
]
{
1.txt
222111
2222222aaaaaaa
223333
22aaa
2.txt
488888888888asldkfas
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*slkdf
sync:x:5:0:sync:/sbin:/bin/sync
[root@aminglinux-01 ~]# 
```
- 看下,特殊符号排在前面,然后是数字,然后是字母,然后是*,这就是sort 
- sort -n 会以数字去排序,字母和特殊符号 默认情况下都默认是0
```
[root@aminglinux-01 ~]# sort -n 1.txt
<
>
]
{
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*slkdf
sync:x:5:0:sync:/sbin:/bin/sync
1.txt
2.txt
22aaa
222111
223333
2222222aaaaaaa
488888888888asldkfas
[root@aminglinux-01 ~]# 
```
- sort -nr 加上r 就会反序排序
```
[root@aminglinux-01 ~]# sort -nr 1.txt
488888888888asldkfas
2222222aaaaaaa
223333
222111
22aaa
2.txt
1.txt
sync:x:5:0:sync:/sbin:/bin/sync
*slkdf
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
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
{
]
>
<
[root@aminglinux-01 ~]#
```
- sort -t 分隔符 -kn1/-kn1,n2 用的比较少了解下即可
- wc -l 统计行数
- wc -m 统计字符数
- wc -w 统计词
```
[root@aminglinux-01 ~]# wc -l 1.txt
22 1.txt
[root@aminglinux-01 ~]# wc -m 1.txt
468 1.txt
[root@aminglinux-01 ~]#
```
- 先做一个实验vim 2.txt 在里面写入 123 abc
```
[root@aminglinux-01 ~]# vim 2.txt

123
abc 
~                                                                  
:wq  
[root@aminglinux-01 ~]# vim 2.txt
[root@aminglinux-01 ~]# wc -m 2.txt
8 2.txt
[root@aminglinux-01 ~]# cat -A 2.txt     
cat -A 显示所有内容 所以有2个隐藏的$(换行符$) ,总共就是8个字符
123$
abc$
[root@aminglinux-01 ~]# 
```
- wc -w统计词  以空白字符 作为分隔符
```
[root@aminglinux-01 ~]# wc -w 2.txt
2 2.txt
[root@aminglinux-01 ~]#
2个词 123 是一个词  abc 是一个词

[root@aminglinux-01 ~]# vim 2.txt

123
abc 1111,222

[root@aminglinux-01 ~]# vim 2.txt
[root@aminglinux-01 ~]# wc -w 2.txt
3 2.txt
[root@aminglinux-01 ~]# cat 2.txt
123
abc 1111,222
[root@aminglinux-01 ~]# 
```
- uniq命令
```
[root@aminglinux-01 ~]# vi 2.txt

123
abc 1111,222
123
abc
1
2
1

[root@aminglinux-01 ~]# vi 2.txt
[root@aminglinux-01 ~]# cat 2.txt
123
abc 1111,222
123
abc
1
2
1
[root@aminglinux-01 ~]#

下面来用nqia 
[root@aminglinux-01 ~]# uniq 2.txt
123
abc 1111,222
123
abc
1
2
1

没有任何变化?
```
- 再次编辑vim 2.txt 把内容 2放到下面去
```
[root@aminglinux-01 ~]# vim 2.txt
[root@aminglinux-01 ~]# cat 2.txt
123
abc 1111,222
123
abc
1
1
2
[root@aminglinux-01 ~]# uniq 2.txt
123
abc 1111,222
123
abc
1
2
[root@aminglinux-01 ~]#
```
- 现在去重了,原来是 1 1 2 现在是 1 2,所以去重是条件的,需要先排序再去重
```
[root@aminglinux-01 ~]# sort 2.txt  先排序
1
1
123
123
2
abc
abc 1111,222
[root@aminglinux-01 ~]# sort 2.txt |uniq 先排序再管道符去重
1
123
2
abc
abc 1111,222
[root@aminglinux-01 ~]#
```
```
[root@aminglinux-01 ~]# sort 2.txt |uniq -c 
uniq -c 统计重复次数
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]# 
```


- [x]  srot 、cut、uniq、cat、less、more、head、tail、wc等等会对文件做一些操作,但是并不会更改文件的内容


# 8.12 tee tr split 命令

- tee 和 输出重定向很类似

```
[root@aminglinux-01 ~]# sort 2.txt |uniq -c > a.txt
[root@aminglinux-01 ~]# cat a.txt
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]#
[root@aminglinux-01 ~]# sort 2.txt |uniq -c | tee a.txt
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]# 
```
- 可以先清空a.txt里的内容 >a.txt  就是清空
```
[root@aminglinux-01 ~]# >a.txt
[root@aminglinux-01 ~]# cat a.txt
[root@aminglinux-01 ~]# sort 2.txt |uniq -c | tee a.txt
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]#
```
- tee -a 追加 等同于>>
```
[root@aminglinux-01 ~]# sort 2.txt |uniq -c | tee -a a.txt
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]# cat a.txt
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
      2 1
      2 123
      1 2
      1 abc
      1 abc 1111,222
[root@aminglinux-01 ~]# 
```
- tr 命令 tr 是用来替换字符的  tr "a" "b",  大小写替换tr '[a-z]' '[A-Z]'
```
[root@aminglinux-01 ~]# echo "aminglinux" |tr 'a' 'A'
Aminglinux
[root@aminglinux-01 ~]# 
[root@aminglinux-01 ~]# echo "aminglinux" |tr '[al]' '[AL]'
AmingLinux

全部换成大写
[root@aminglinux-01 ~]# echo "aminglinux" |tr '[a-z]' '[A-Z]'
AMINGLINUX
[root@aminglinux-01 ~]#
改成数字
[root@aminglinux-01 ~]# echo "aminglinux" |tr '[a-z]' '1'
1111111111
[root@aminglinux-01 ~]# 
```
- split 切割,一个大文件切割成小文件 -b 大小 (默认单位字节),-l 行数
[root@aminglinux-01 ~]# split -b 100M bigfile^C
[root@aminglinux-01 ~]# split -l 1000 bigfile^C

```

[root@aminglinux-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@aminglinux-01 ~]# du -sh a.txt
256K	a.txt
[root@aminglinux-01 ~]# find /etc/ -type f -name "*conf" -exec echo {} >> a.txt \;
[root@aminglinux-01 ~]# du -sh a.txt
448K	a.txt

[root@aminglinux-01 ~]# ls
111  1_heard.txt  1.txt   1.txt.bak  2.txt      3.txt  anaconda-ks.cfg.1  biji.txt
123  1_sorft.txt  1.txt~  234        2.txt.bak  4.txt  bb.txt             test
[root@aminglinux-01 ~]# 
[root@aminglinux-01 ~]# mv a.txt test/
[root@aminglinux-01 ~]# cd test
[root@aminglinux-01 test]# ls
a.txt
[root@aminglinux-01 test]# 
```


- split 分割成1000字节一个文件
```
[root@aminglinux-01 test]# split -b 1000 a.txt
[root@aminglinux-01 test]# ls
a.txt  xan  xbb  xbp  xcd  xcr  xdf  xdt  xeh  xev  xfj  xfx  xgl  xgz  xhn  xib  xip  xjd  xjr
xaa    xao  xbc  xbq  xce  xcs  xdg  xdu  xei  xew  xfk  xfy  xgm  xha  xho  xic  xiq  xje  xjs
xab    xap  xbd  xbr  xcf  xct  xdh  xdv  xej  xex  xfl  xfz  xgn  xhb  xhp  xid  xir  xjf  xjt
xac    xaq  xbe  xbs  xcg  xcu  xdi  xdw  xek  xey  xfm  xga  xgo  xhc  xhq  xie  xis  xjg  xju
xad    xar  xbf  xbt  xch  xcv  xdj  xdx  xel  xez  xfn  xgb  xgp  xhd  xhr  xif  xit  xjh  xjv
xae    xas  xbg  xbu  xci  xcw  xdk  xdy  xem  xfa  xfo  xgc  xgq  xhe  xhs  xig  xiu  xji  xjw
xaf    xat  xbh  xbv  xcj  xcx  xdl  xdz  xen  xfb  xfp  xgd  xgr  xhf  xht  xih  xiv  xjj  xjx
xag    xau  xbi  xbw  xck  xcy  xdm  xea  xeo  xfc  xfq  xge  xgs  xhg  xhu  xii  xiw  xjk  xjy
xah    xav  xbj  xbx  xcl  xcz  xdn  xeb  xep  xfd  xfr  xgf  xgt  xhh  xhv  xij  xix  xjl  xjz
xai    xaw  xbk  xby  xcm  xda  xdo  xec  xeq  xfe  xfs  xgg  xgu  xhi  xhw  xik  xiy  xjm  xka
xaj    xax  xbl  xbz  xcn  xdb  xdp  xed  xer  xff  xft  xgh  xgv  xhj  xhx  xil  xiz  xjn
xak    xay  xbm  xca  xco  xdc  xdq  xee  xes  xfg  xfu  xgi  xgw  xhk  xhy  xim  xja  xjo
xal    xaz  xbn  xcb  xcp  xdd  xdr  xef  xet  xfh  xfv  xgj  xgx  xhl  xhz  xin  xjb  xjp
xam    xba  xbo  xcc  xcq  xde  xds  xeg  xeu  xfi  xfw  xgk  xgy  xhm  xia  xio  xjc  xjq
[root@aminglinux-01 test]# du -sh 
1.3M	.

[root@aminglinux-01 test]# du -sh *
256K	a.txt
4.0K	xaa
4.0K	xab
4.0K	xac
4.0K	xad
4.0K	xae
4.0K	xaf
4.0K	xag

...   这里为了节约空间,省略了很多

4.0K	xjw
4.0K	xjx
4.0K	xjy
4.0K	xjz
4.0K	xka
[root@aminglinux-01 test]# du -sb *
260054	a.txt
1000	xaa
1000	xab
1000	xix
1000	xiy
1000	xiz
...   这里为了节约空间,省略了很多
1000	xjt
1000	xju
1000	xjv
1000	xjw
1000	xjx
1000	xjy
1000	xjz
54	xka
[root@aminglinux-01 test]# ls
a.txt  xan  xbb  xbp  xcd  xcr  xdf  xdt  xeh  xev  xfj  xfx  xgl  xgz  xhn  xib  xip  xjd  xjr
xaa    xao  xbc  xbq  xce  xcs  xdg  xdu  xei  xew  xfk  xfy  xgm  xha  xho  xic  xiq  xje  xjs
xab    xap  xbd  xbr  xcf  xct  xdh  xdv  xej  xex  xfl  xfz  xgn  xhb  xhp  xid  xir  xjf  xjt
xac    xaq  xbe  xbs  xcg  xcu  xdi  xdw  xek  xey  xfm  xga  xgo  xhc  xhq  xie  xis  xjg  xju
xad    xar  xbf  xbt  xch  xcv  xdj  xdx  xel  xez  xfn  xgb  xgp  xhd  xhr  xif  xit  xjh  xjv
xae    xas  xbg  xbu  xci  xcw  xdk  xdy  xem  xfa  xfo  xgc  xgq  xhe  xhs  xig  xiu  xji  xjw
xaf    xat  xbh  xbv  xcj  xcx  xdl  xdz  xen  xfb  xfp  xgd  xgr  xhf  xht  xih  xiv  xjj  xjx
xag    xau  xbi  xbw  xck  xcy  xdm  xea  xeo  xfc  xfq  xge  xgs  xhg  xhu  xii  xiw  xjk  xjy
xah    xav  xbj  xbx  xcl  xcz  xdn  xeb  xep  xfd  xfr  xgf  xgt  xhh  xhv  xij  xix  xjl  xjz
xai    xaw  xbk  xby  xcm  xda  xdo  xec  xeq  xfe  xfs  xgg  xgu  xhi  xhw  xik  xiy  xjm  xka
xaj    xax  xbl  xbz  xcn  xdb  xdp  xed  xer  xff  xft  xgh  xgv  xhj  xhx  xil  xiz  xjn
xak    xay  xbm  xca  xco  xdc  xdq  xee  xes  xfg  xfu  xgi  xgw  xhk  xhy  xim  xja  xjo
xal    xaz  xbn  xcb  xcp  xdd  xdr  xef  xet  xfh  xfv  xgj  xgx  xhl  xhz  xin  xjb  xjp
xam    xba  xbo  xcc  xcq  xde  xds  xeg  xeu  xfi  xfw  xgk  xgy  xhm  xia  xio  xjc  xjq
[root@aminglinux-01 test]# rm -f x*
[root@aminglinux-01 test]# ls
a.txt
[root@aminglinux-01 test]# 
```
指定每个100k split -b  (默认大小是字节)
```
[root@aminglinux-01 test]# split -b 100k a.txt
[root@aminglinux-01 test]# ls
a.txt  xaa  xab  xac
[root@aminglinux-01 test]# du -sh *
256K	a.txt
100K	xaa
100K	xab
56K	xac
[root@aminglinux-01 test]# rm -f x*
[root@aminglinux-01 test]# split -b 100k abc
split: 无法打开"abc" 读取数据: 没有那个文件或目录
[root@aminglinux-01 test]# split -b 100k abc.
split: 无法打开"abc." 读取数据: 没有那个文件或目录
[root@aminglinux-01 test]# split -b 100k a.txt  abc
[root@aminglinux-01 test]# ls
abcaa  abcab  abcac  a.txt
[root@aminglinux-01 test]# rm -f abc*    指定名字
[root@aminglinux-01 test]# split -b 100k a.txt  abc.
[root@aminglinux-01 test]# ls
abc.aa  abc.ab  abc.ac  a.txt
[root@aminglinux-01 test]# rm -f abc*
[root@aminglinux-01 test]#
```
- 除了指定大小之外,还可以指定行 split -l 
```
[root@aminglinux-01 test]# split -l 1000 a.txt
[root@aminglinux-01 test]# ls
a.txt  xaa  xab  xac  xad  xae  xaf  xag
[root@aminglinux-01 test]# ls -l
总用量 520
-rw-r--r--. 1 root root 260054 8月  20 17:45 a.txt
-rw-r--r--. 1 root root  44712 8月  20 18:15 xaa
-rw-r--r--. 1 root root  44151 8月  20 18:15 xab
-rw-r--r--. 1 root root  37982 8月  20 18:15 xac
-rw-r--r--. 1 root root  39801 8月  20 18:15 xad
-rw-r--r--. 1 root root  35102 8月  20 18:15 xae
-rw-r--r--. 1 root root  39350 8月  20 18:15 xaf
-rw-r--r--. 1 root root  18956 8月  20 18:15 xag
[root@aminglinux-01 test]# wc -l *  查看行数
  6601 a.txt
  1000 xaa
  1000 xab
  1000 xac
  1000 xad
  1000 xae
  1000 xaf
   601 xag
 13202 总用量
[root@aminglinux-01 test]#
```

# 8.13  shell特殊符号下
![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170820/225015664.png?p_w_picpathslim)

- $表示变量前缀,!$组合,正则里面表示行尾
- ;多条命令写到一行,用分号分割
```
[root@aminglinux-01 ~]# ls 1.txt; wc -l 2.txt
1.txt
7 2.txt
[root@aminglinux-01 ~]# 
```
- ~表示用户的家目录,后面正则表达式 表示匹配符
- &放到命令后面,会把命令丢到后台
- > ,>> , 2> ,2>> , &>
- []指定字符中的一个[0-9],[a-zA-Z],[abc]
-||和 && 用于命令之间
1. ||表示俩条命令之间,
如果前面的命令执行不成功,就会执行第二条命令,或1命令或2命令
如果前面的命令1执行成功了,就不再执行后面的命令2。

```
[root@aminglinux-01 ~]# ls la.txt || wc -l 2.txt
ls: 无法访问la.txt: 没有那个文件或目录
7 2.txt
[root@aminglinux-01 ~]# ls 1.txt || wc -l 2.txt
1.txt
[root@aminglinux-01 ~]# 
```


2. && 正好相反
如果前面的命令错了,就不再执行后面的命令。
只有前面的命令成功了,才会执行后面的命令。

```
[root@aminglinux-01 ~]# ls la.txt && wc -l 2.txt
ls: 无法访问la.txt: 没有那个文件或目录
[root@aminglinux-01 ~]# ls 1.txt && wc -l 2.txt
1.txt
7 2.txt
[root@aminglinux-01 ~]#
```

- 举例
```
[root@aminglinux-01 ~]# [ -d aminglinux ] || mkdir aminglinux
- [ -d aminglinux ] || mkdir aminglinux
如果aminglinux这个目录不存在就创建aminglinux目录,

[root@aminglinux-01 ~]# ls
111  1_heard.txt  1.txt   1.txt.bak  2.txt      3.txt  aminglinux         bb.txt    test
123  1_sorft.txt  1.txt~  234        2.txt.bak  4.txt  anaconda-ks.cfg.1  biji.txt
[root@aminglinux-01 ~]# [ -d aminglinux ] &&  mkdir aminglinux
如果目录aminglinux 存在,再去创建目录aminglinux,
mkdir: 无法创建目录"aminglinux": 文件已存在

[root@aminglinux-01 ~]# [ -d aminglinux ] || mkdir aminglinux
如果这个目录已经存在,就不会执行后面的命令
[root@aminglinux-01 ~]# 
```




# 拓展
- [x]  相关测验题目:http://ask.apelearn.com/question/5437
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