文件                文件描述符

输入文件->标准输入            0

输出文件->标准输出            1

错误输出文件->标准错误          2


输出重定向符号:

    >:覆盖输出

    >>:追加输出


set -c:禁止对已经存在的文件进行覆盖重定向

            在禁止设置后强制覆盖输出,使用>|

set +c:关闭上述功能

标准输出

覆盖模式标准输出重定向
[root@liang-study basic]# ls /var > a.txt
[root@liang-study basic]# cat a.txt 
account
cache
crash
cvs
db
追加模式标准输出重定向
[root@liang-study basic]# ll /home >> a.txt
[root@liang-study basic]# cat a.txt 
account
cache
crash
cvs
db
empty
total 16948
-rw-r--r--   1 root     root      5484681 Dec  8 12:24 4.1.0.tar.gz
drwxr-xr-x   2 root     root         4096 Dec 20 10:55 basic
drwx------   2 chenchao chenchao     4096 Dec 14 17:34 chenchao
drwxrwxr-x   8 root     root         4096 Dec  8 12:25 ipython-4.1.0
drwxr-xr-x.  2 root     root         4096 Dec  7 19:05 logs
drwx------.  2 root     root        16384 Dec  7 19:00 lost+found

标准错误输出

覆盖模式标准错误输出重定向
[root@liang-study basic]# ll /var12 2> b.txt
[root@liang-study basic]# cat b.txt 
ls: cannot access /var12: No such file or directory
追加模式标准错误输出重定向
[root@liang-study basic]# ll /var12 2>> b.txt
[root@liang-study basic]# cat b.txt          
ls: cannot access /var12: No such file or directory
ls: cannot access /var12: No such file or directory

标准输出和标准错误输出同时重定向

[root@liang-study basic]# ll /var12 &> b.txt  
[root@liang-study basic]# ll /var &> b.txt  
[root@liang-study basic]# cat b.txt 
total 76
drwxr-xr-x.  2 root root 4096 Dec 20 03:43 account
drwxr-xr-x. 11 root root 4096 Dec  7 19:04 cache
drwxr-xr-x.  2 root root 4096 Nov 18 23:19 crash
drwxr-xr-x.  2 root root 4096 Nov 22  2013 cvs
drwxr-xr-x.  3 root root 4096 Dec  7 19:04 db

即输出到屏幕又保存到文件中

[root@liang-study basic]# echo "hello word" | tee c.txt
hello word
[root@liang-study basic]# cat c.txt 
hello word


特殊例子:获取nginx版本号

[root@qa-test-lb-103-101 ~]# /usr/local/nginx/sbin/nginx -v 
nginx version: DLEngine/10.2.2
[root@qa-test-lb-103-101 ~]# /usr/local/nginx/sbin/nginx -v | grep nginx |awk -F '/' '{print $2}'
nginx version: DLEngine/10.2.2

上例可以看到,对nginx -v的输出使用awk处理并没有效果,继续看实验

[root@qa-test-lb-103-101 ~]# /usr/local/nginx/sbin/nginx -v > a.txt
nginx version: DLEngine/10.2.2
[root@qa-test-lb-103-101 ~]# /usr/local/nginx/sbin/nginx -v 2> a.txt
[root@qa-test-lb-103-101 ~]# cat a.txt 
nginx version: DLEngine/10.2.2

明白了吧,nginx -v不是标准输出,而是标准错误输出。标准错误输出不可使用awk等做处理。

可通过下面办法处理

[root@qa-test-lb-103-101 ~]# /usr/local/nginx/sbin/nginx -v |& grep nginx |awk -F '/' '{print $2}'
10.2.2

上述中在管道符“|”后增加&,表示将标准错误输出转化成标准输出,再对输出做awk处理即可切割或者过滤。