如何在bash中的一行进行双重定向?

时间:2016-11-25 15:34:05

标签: bash redirect

我想运行du,并将stdout重定向到一个文件,并将stderr重定向到另一个文件。

我有一句话:

    du -ah / | sort -h >/home/username/stdout.txt 2>/home/username/stderr.txt

我知道这应该总是会产生错误,因为/ proc /中的内容并不像du希望的那样有形 - 这很好。这行将使用我想要查看的所有内容填充stdout.txt,但stderr仍会溢出到控制台中,并且stderr.txt文件仍为空。有没有办法做这样的交错重定向,或者我必须两次运行该行,每行都有自己的重定向?

1 个答案:

答案 0 :(得分:2)

您正在捕获由sort发出的错误流,而不是du(在stderr上没有重定向),这解释了您的文件是空的。

您希望对stdout的输出进行排序,并在stderr(未排序)中捕获du命令的错误。比如这样做:

du -ah / 2>/home/username/stderr.txt | sort -h >/home/username/stdout.txt