如何将stdout和stderr结合用于不同的外壳?


18

我知道一些外壳的答案,例如cmd.exe可以:

some.exe > out.txt 2>&1

对于其他shell(bash,ksh,tcsh,powershell等),您如何实现相同的目的?

Answers:


16

鱼壳

要将标准输出和标准错误都重定向到文件all_output.txt,您可以编写:

echo Hello > all_output.txt ^&1

3
如果管道输出到下一条命令,请使用2> | 相反:echo Hello 2> | 更少
Jeffrey04

管道语法可能已更改。我的鱼壳对两者使用相同的语法“ ^&1”。
基思·本特鲁普

2>&1也有效- ^本质上是fish的简写>2。请注意,2>| less^| less通过管道传输stderr;用管道输送我们和错误,都做^&1 | less
贝尼·切尔尼亚夫斯基-帕斯金

重定向/错误输出和错误的语法速记仍在讨论中github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-


2

Powershell中是完全一样的:

2>&1不向get进程发送错误,powershell 2>&1
          成功输出流。

(来自about_Redirection)。

bash至少在和ksh中,我也知道它可以这样工作。

这似乎是一个惯例。

快速找到它的方法是打开shell的手册页并进行搜索&1(使用/,然后键入&1)。这在其他情况下很少发生。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.