无法使用 Bash 重定向管道中的错误?
Trouble redirecting an error in pipeline using Bash?
ls -lhR /etc/ | egrep *.conf$ >/home/student/total_size.txt 2>/home/student/error.txt
所以我使用此命令从 /etc/
获取所有 .conf 文件。我想要 total_size.txt
中的输出和 error.txt
中的错误。我的输出看起来不错,但错误不会重定向到 error.txt
,它们出现在我的终端中:
ls: cannot open directory '/etc/cups/ssl': Permission denied
我不知道该怎么办;我试过 2>>
而不是 2>
但它也不起作用。
发生这种情况是因为 ls
的 stderr
仍然指向终端。您需要将管道包裹在花括号中,并在外部进行重定向。例如:
{ ls -lhR /etc/ | egrep *.conf$; } >/home/student/total_size.txt 2>/home/student/error.txt
试试这个,应该可以解决问题。
ls -lhR /etc/ 2>>/home/student/error.txt | egrep *.conf$ >/home/student/total_size.txt
错误是由 ls
而非 egrep
产生的。
ls -lhR /etc/ | egrep *.conf$ >/home/student/total_size.txt 2>/home/student/error.txt
所以我使用此命令从 /etc/
获取所有 .conf 文件。我想要 total_size.txt
中的输出和 error.txt
中的错误。我的输出看起来不错,但错误不会重定向到 error.txt
,它们出现在我的终端中:
ls: cannot open directory '/etc/cups/ssl': Permission denied
我不知道该怎么办;我试过 2>>
而不是 2>
但它也不起作用。
发生这种情况是因为 ls
的 stderr
仍然指向终端。您需要将管道包裹在花括号中,并在外部进行重定向。例如:
{ ls -lhR /etc/ | egrep *.conf$; } >/home/student/total_size.txt 2>/home/student/error.txt
试试这个,应该可以解决问题。
ls -lhR /etc/ 2>>/home/student/error.txt | egrep *.conf$ >/home/student/total_size.txt
错误是由 ls
而非 egrep
产生的。