每当我在bash shell中出现错误时,错误消息总会被打印到终端(例如语法不佳)
$ totem Desktop/songs/song1.mp3
** Message: Error: Resource not found.
gstfilesrc.c(1055): gst_file_src_start (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
No such file "/home/me/Desktop/songs/song1.mp3"
那么如果stderr默认打印到终端,那么将stderr重定向到stdout的目的是什么?
$ command-name 2>&1
答案 0 :(得分:3)
默认情况下,stdout
和stderr
都会定向到终端。如果您将stderr
重定向到stdout
,那么它也会转到终端。
如果要删除stderr输出,请将其重定向到void:
$ command-name 2> /dev/null
答案 1 :(得分:2)
请注意,stdout
默认打印到终端。通过command-name 2>&1
,你基本上将stderr
重定向到同一个地方。
重定向的顺序也很重要。
所以你要找的是command-name >file_for_stdout 2>&1
答案 2 :(得分:1)
stderr
和stdout
都显示在控制终端上。如果你像你一样多路复用它们,它们都将输出到stdout
输出到的任何地方。然后,您可以将stdout
重定向到文件以在单个文件中获取输出和错误。
$ command >log 2>&1
将错误和输出都放入名为`log的文件中。