Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux上通过管道将命令输出到文件_Linux_Ubuntu - Fatal编程技术网

如何在Linux上通过管道将命令输出到文件

如何在Linux上通过管道将命令输出到文件,linux,ubuntu,Linux,Ubuntu,我正在CLI上运行任务,这会提示我输入是/否 选择一个选项后,屏幕上会滚动显示大量信息,包括几个错误。我想通过管道将此输出传输到一个文件,以便查看错误。简单的“>”无效,因为该命令需要键盘输入 我运行的是Ubuntu 9.1。使用2>,而不仅仅是如果程序是由理智的人编写的,你可能想要的是标准而不是标准。您可以使用以下方法来实现这一点 foo2>errors.txt command &> output.txt 您可以使用&>将stdout和stderr重定向到一个文件。这是comm

我正在CLI上运行任务,这会提示我输入是/否

选择一个选项后,屏幕上会滚动显示大量信息,包括几个错误。我想通过管道将此输出传输到一个文件,以便查看错误。简单的“>”无效,因为该命令需要键盘输入


我运行的是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
告诉bash
2
是一个文件描述符编号,而不是文件名。(2) 在
之前写入数字不需要
&
,因为文件名在左侧永远无效。(3)
&>
是一种用于重定向stdout和stderr的特殊语法。它也可以写成
&
,不过
&>
是首选。这两种语法都是特殊的。不要试图自己去理解
&
的意思。将
&>
视为单个操作符。
echo yes | command > output.txt