Command-Line
stderr 重定向在 csh 中不起作用
我執行以下命令:
pkg_add emacs-23.4,2.tbz 2> output.log
輸出仍然顯示在終端中。當我按下
↑
時,我得到pkg_add emacs-23.4,2.tbz 2 > output.log
之前有一個空格
2
。我最初沒有放這個。我試試
pkg_add emacs-23.4,2.tbz > output.log 2>&1
同樣,當我按下 時
↑
,已添加空格。為什麼這會發生在我身上?
我在 FreeBSD 上執行 csh。
2> 重定向不適用於 csh 或 tcsh。
使用該
chsh
命令將您的 shell 更改為 /bin/sh 或 /usr/local/bin/bash 以使用2>
樣式重定向。**注意:**不要將 root 的 shell 更改為 /usr/local/bin/bashcsh 和 tcsh 不能分別重定向標準輸出和錯誤,但
>&
會將組合輸出重定向到文件。
我不確定您是要隱藏 STDERR 還是將其重定向到 STDOUT。
要將 STDOUT 重定向到文件:
pkg_add emacs-23.4,2.tbz > stdout.log
要將 STDOUT 和 STDERR 重定向到文件:
pkg_add emacs-23.4,2.tbz > & stdxxx.log
要將 STDOUT 重定向到文件並隱藏 STDERR:
( pkg_add emacs-23.4,2.tbz > stdout.log ) > & /dev/null
要將 STDOUT 重定向到控制台並隱藏 STDERR:
( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & /dev/null
要將 STDOUT 重定向到控制台並將 STDERR 重定向到文件:
( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & stderr.log
要將 STDOUT 重定向到文件並將 STDERR 重定向到文件:
( pkg_add emacs-23.4,2.tbz > stdout.log ) > & stderr.log
編輯:這行得通的原因是()中的動作首先發生;因此,如果我們重定向了 STDOUT,那麼它在 () 之外將不再可用。這給我們留下了 STDERR,然後我們可以根據需要重定向它。