Answers:
2>重定向不适用于csh或tcsh。
使用chsh
命令将您的shell更改为/ bin / sh或/ usr / local / bin / bash以便使用2>
样式重定向。注意:请勿将root用户的shell更改为/ usr / local / bin / bash
csh和tcsh不能分别重定向标准输出和错误,但是>&
会将组合的输出重定向到文件。
pkg_add
在FreeBSD 上运行,所以我假设这是针对root用户的(/ bin / csh是FreeBSD上root的默认设置)。在这种情况下,你应该不会改变外壳到/ usr / local / bin目录/ bash的。/ bin / sh是可以接受的。您也可以在以root用户身份登录后仅切换到另一个shell。
我不确定您是要隐藏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,然后我们可以根据需要重定向它。
我知道如何在Csh中执行此操作,但是使用2个Shell:
csh -c 'SOME_COMMAND 1>/dev/null' |& tee file.txt
这种方法允许仅将 stderr 重定向到file.txt,而无需stdout-即您想要的。
sh
。