在tcsh中,我试图从.aliases文件中的命令重定向STDERR。
我发现可以像这样从命令行重定向STDERR。。。
$ (xemacs > /dev/tty) >& /dev/null。。。但是,当我把这个放在我的.aliases文件中时,我会得到一个别名循环。。。
$ cat .aliases
alias xemacs '(xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
Alias loop.
$。。。因此,我在.aliases中的命令前面放了一个反斜杠,这允许命令运行。。。
$ cat .aliases
alias xemacs '(\xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
[1] 17295
$ 。。。但现在我不能给命令任何论据:
$ xemacs foo.txt &
Badly placed ()'s.
[1] Done ( \xemacs > /dev/tty ) >& /dev/null
$ 有人能提供任何解决方案吗?提前谢谢你!
更新:我仍然很好奇是否可以从.aliases重定向tcsh中的STDERR,但是正如这里所建议的,我最终得到了一个shell脚本:
#!/bin/sh
# wrapper script to suppress messages sent to STDERR on launch
# from the command line.
/usr/bin/xemacs "$@" 2>/dev/null发布于 2008-09-25 21:34:59
我怀疑在这种情况下,不使用别名是最好的选择--尝试使用shell脚本代替:
#!/bin/tcsh
(xemacs $* > /dev/tty ) >& /dev/null发布于 2008-11-21 02:26:52
试一试
alias emacs '(\emacs \!* > /dev/tty) >& /dev/null'“错误放置()”消息来自将输入参数错置到emacs。
(/usr/bin/emacs > /dev/tty) >& /dev/null abc在包含"\!*“之后,"emacs abc”变成
(/usr/bin/emacs abc > /dev/tty) >& /dev/nullhttps://stackoverflow.com/questions/136233
复制相似问题