【发布时间】:2020-09-29 22:06:43
【问题描述】:
我想问一个关于使用 Bash Shell 将标准输出和错误重定向到同一个文件的问题。
我是 Linux 命令提示符的初学者,并且正在阅读 William E. Shotts 的一本名为“Linux 命令行”的书。年少者
在关于重定向的部分中,他指出要将标准输出和错误重定向到同一个文件,编写以下命令:
ls -l /bin/usr > ls-output.txt 2>&1
据我了解,/bin/usr 目录不存在,因此抛出错误并发送到标准错误文件。命令ls -l /bin/usr 的输出被重定向到文本文件ls-output.txt,标准错误被重定向到2>&1 的标准输出。
我在两个方面感到困惑:
-
首先,事件的顺序。根据我的直觉,由于我认为命令是以 L-R 方式(从左到右)执行的,因此
ls命令的重定向似乎首先发生在标准错误流(@ 987654328@) 到标准输出流 (1)。 -
ampersand的使用。我从谷歌搜索中了解到,如果将&放在命令的末尾,这意味着可以在执行初始命令之前输入其他命令 - 当初始命令与计时器相结合时,该命令具有应用程序。我相信这里的 & 符号意味着&意味着我们正在重定向到一个文件 descriptor 而不是一个名为1的文件名,尽管我不确定这是否正确。
总的来说,我有两个问题:
- 上面命令的执行顺序是什么?
- 我的 & 符号
&的功能是否正确?如果不是,它的作用是什么?
【问题讨论】:
标签: linux bash shell io-redirection