(五)输出重定向命令

> 重定向输出(覆盖)
>>重定向输出(追加)
1>正确重定向输出(覆盖)
2>错误重定向输出(覆盖)
1>>正确重定向输出(追加)
2>>错误重定向输出(追加)
# > 将输出结果以"覆盖"的形式存储在指定的文件中, 若文件不存在则自动创建

# >> 将输出结果以“追加”的形式存储在指定的文件中, 若文件不存在则自动创建

如果指令执行失败呢? 输出结果就不会保存到指定文件中,所以就需要将输出的正确结果保存到一个文件中, 输出的错误结果保存到另一个文件中,可以借助 1> 和 2>

[root@localhost 20141009]# ls dd >log
ls: 无法访问dd: 没有那个文件或目录
[root@localhost 20141009]#
[root@localhost 20141009]# ls dd >right.log 2>wrong.log
[root@localhost 20141009]# cat right.log
[root@localhost 20141009]# cat wrong.log
ls: 无法访问dd: 没有那个文件或目录
[root@localhost 20141009]#

Linux是通过什么来判断的呢?因为每个当前指令的执行结果都保存在环境变量“?”中,当指令执行成功时 ?=0,当指令执行失败时 ?!=0。Linux就是通过它来判断输出结果保存到哪个文件中的:

[root@localhost 20141009]# ll ss
ls: 无法访问ss: 没有那个文件或目录
[root@localhost 20141009]# echo $?
2
[root@localhost 20141009]# cd 20141009/
-bash: cd: 20141009/: 没有那个文件或目录
[root@localhost 20141009]# echo $?
1
[root@localhost 20141009]# cd
[root@localhost ~]# echo $?
0

如果想不论指令执行正确与否,都将结果输出到同一个指定文件中,用&>

[root@localhost 20141009]# ll sssss &>log
[root@localhost 20141009]# cat log
ls: 无法访问sssss: 没有那个文件或目录
[root@localhost 20141009]# ll &>>log
[root@localhost 20141009]# cat log
ls: 无法访问sssss: 没有那个文件或目录
总用量 8
-rw-r--r--. 1 root root 51 10月  9 22:43 log
-rw-r--r--. 1 root root 20 10月  9 22:10 test

  覆盖和追加相似,不再另作描述

posted @ 2014-10-09 22:47  小彩笔  阅读(157)  评论(0)    收藏  举报