我想运行du,并将stdout重定向到一个文件,并将stderr重定向到另一个文件。
我有一句话:
du -ah / | sort -h >/home/username/stdout.txt 2>/home/username/stderr.txt
我知道这应该总是会产生错误,因为/ proc /中的内容并不像du希望的那样有形 - 这很好。这行将使用我想要查看的所有内容填充stdout.txt,但stderr仍会溢出到控制台中,并且stderr.txt文件仍为空。有没有办法做这样的交错重定向,或者我必须两次运行该行,每行都有自己的重定向?
答案 0 :(得分:2)
您正在捕获由sort
发出的错误流,而不是du
(在stderr上没有重定向),这解释了您的文件是空的。
您希望对stdout的输出进行排序,并在stderr(未排序)中捕获du
命令的错误。比如这样做:
du -ah / 2>/home/username/stderr.txt | sort -h >/home/username/stdout.txt