shell命令`ls -z> output.txt`和`ls -z 2> output.txt`之间的区别?

时间:2016-02-26 05:08:44

标签: linux bash shell

我正在尝试学习shell命令。我知道ls >output.txt会将输出保存到output.txt。但是,ls -z >output.txt究竟做了什么?在我的书中,它说它不会将输出保存到output.txt。如果是这样,它在哪里保存/打印?是-z是什么原因导致它无法保存?

最后,ls -z 2>output.txt做了什么?我知道2指的是stderr(所以标准错误)。这是否意味着它会在ls中保存output.txt的错误(如果有)?如果是,stdout在哪里打印/保存?在这种情况下,-z意味着什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Linux上-z没有选项ls。那么让我们看看会发生什么:

$ LANG=C ls -z  > /tmp/x
ls: invalid option -- 'z'
Try 'ls --help' for more information.

错误消息转到连接到终端的STDERR。 标准输出(为空)被重定向到/ tmp / x,因此我们得到一个空文件。

$ LANG=C ls -z  2> /tmp/x

在第二种情况下,STDOUT连接到终端,但没有输出。发送到STDERR的错误消息落在/ tmp / x:

$ cat /tmp/x
ls: invalid option -- 'z'
Try 'ls --help' for more information.