如何在Linux上通过管道将命令输出到文件
我正在CLI上运行任务,这会提示我输入是/否 选择一个选项后,屏幕上会滚动显示大量信息,包括几个错误。我想通过管道将此输出传输到一个文件,以便查看错误。简单的“>”无效,因为该命令需要键盘输入如何在Linux上通过管道将命令输出到文件,linux,ubuntu,Linux,Ubuntu,我正在CLI上运行任务,这会提示我输入是/否 选择一个选项后,屏幕上会滚动显示大量信息,包括几个错误。我想通过管道将此输出传输到一个文件,以便查看错误。简单的“>”无效,因为该命令需要键盘输入 我运行的是Ubuntu 9.1。使用2>,而不仅仅是如果程序是由理智的人编写的,你可能想要的是标准而不是标准。您可以使用以下方法来实现这一点 foo2>errors.txt command &> output.txt 您可以使用&>将stdout和stderr重定向到一个文件。这是comm
我运行的是Ubuntu 9.1。使用
2>
,而不仅仅是
如果程序是由理智的人编写的,你可能想要的是标准而不是标准。您可以使用以下方法来实现这一点
foo2>errors.txt
command &> output.txt
您可以使用&>
将stdout和stderr重定向到一个文件。这是command>output.txt 2>&1
的缩写,其中2>&1
表示“将stderr发送到与stdout相同的位置”(stdout是文件描述符1,stderr是2)
对于交互式命令,如果我可以使用less
并立即读取结果,我通常不会将其保存到文件中:
command 2>&1 | less
根据命令读取其输入的方式(有些程序在显示提示之前会丢弃stdin上的任何内容,但大多数程序不会),这应该适用于任何sane CLI环境。您可以使用2>选项向文件发送错误 例如: 命令2>error.txt
(使用选项2>)---查看在执行命令时是否会出现任何错误,并将其发送到文件error.txt。您正在运行的命令的名称是什么?make?我想你的意思是
echo yes | command
而不是command<`echo yes`
。(还有可能有用的yes
命令。)你说得对。我一开始以为他可以把他的输入放在一个文件中,后来我改主意只使用echo,但忘了更改命令行以匹配。现在已修复。很遗憾,这会重新格式化我想要编写文件的json。@metanerd:管道和重定向不会对通过它们的字节进行任何更改,因此如果json被重新格式化,那是因为其中一个涉及的命令执行了此操作。某些命令在检测到其输出被管道传输/重定向时会改变其行为,这可以解释您看到的内容。将stdout和stderr重定向到文件意味着他看不到实际的提示。我看不出他会比他在问题中描述的情况更好。你在数字的两边都使用了&
(1
,2
)。使用&2
或2&
,甚至2&>1
或2>&1
有什么区别吗?@FredrickGauss-Oops!我的答案有一个拼写错误<代码>2&>1无效。我想写2>&1
。当问题出现时:&
符号后面有数字(即2>&1)和没有数字(你说没有数字就是stdout和stderr,对不对)?(1)如果你写>2
,那么bash将写入名为2
的文件。编写&2
告诉bash2
是一个文件描述符编号,而不是文件名。(2) 在
之前写入数字不需要&
,因为文件名在左侧永远无效。(3) &>
是一种用于重定向stdout和stderr的特殊语法。它也可以写成&
,不过&>
是首选。这两种语法都是特殊的。不要试图自己去理解
和&
的意思。将&>
视为单个操作符。
echo yes | command > output.txt