我正在命令行界面上运行一个任务,需要对我进行是/否选择。
在做出选择后,大量信息会在屏幕上滚动显示,包括一些错误信息。我想将这些输出导入到文件中,以便查看错误信息。由于该命令需要键盘输入,简单的'>'符号无法实现。
我使用的操作系统是Ubuntu 9.1。
command &> output.txt
你可以使用&>
将标准输出和错误输出重定向到一个文件中。这个符号是 command > output.txt 2>&1
的简写,其中的 2>&1
表示“将 stderr 发送到与 stdout 相同的位置”(stdout 是文件描述符 1,stderr 是 2)。less
并立即查看结果,我通常不会费心去将其保存到文件中:command 2>&1 | less
1
,2
)的两侧都使用了 &
。使用 &2
或 2&
,甚至 2&>1
或 2>&1
有什么区别吗? - Fredrick Gauss2&>1
是无效的。我本意是写 2>&1
。 - John Kugelman&
符号后面跟着一个数字(例如2>&1)代表什么意思?如果没有数字呢(你说没有数字代表标准输出和标准错误输出都会被重定向到同一位置,对吗)? - Fredrick Gauss>2
,那么bash会将输出写入一个名为2
的文件。而写>&2
则告诉bash,2
是一个文件描述符号,而不是一个文件名。(2)在>
之前写数字不需要加上&
,因为文件名在左边是无效的。(3)&>
是一种特殊的语法,用于重定向标准输出和标准错误输出。它也可以写成>&
,但是&>
更受欢迎。这两个都是特殊的语法。不要试图单独理解>
和&
的含义。把&>
看作一个单一的运算符。 - John Kugelman2>&1
。 - John Kugelmanecho yes | command > output.txt
根据命令读取输入的方式(一些程序在显示提示符之前会丢弃stdin中的所有内容,但大多数程序不会),这应该适用于任何理智的CLI环境。
echo yes | command
而不是 command < \
echo yes`。(还有一个可能有用的
yes` 命令。) - Jukka Matilainen使用2>
而不是仅使用>
。
您可以使用2>选项将错误发送到文件中。
示例:
命令 2> error.txt
(使用2>选项) --- 如果在执行命令时出现任何错误,它将被发送到error.txt文件中。