文件 文件描述符
输入文件->标准输入 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处理即可切割或者过滤。