4 tcsh
在tcsh中我试图从我的.aliases文件中的命令重定向STDERR.
我发现我可以像这样从命令行重定向STDERR...
$ (xemacs > /dev/tty) >& /dev/null
Run Code Online (Sandbox Code Playgroud)
...但是当我把它放在我的.aliases文件中时,我得到了一个别名循环...
$ cat .aliases
alias xemacs '(xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
Alias loop.
$
Run Code Online (Sandbox Code Playgroud)
...所以我在.aliases中的命令之前放了一个反斜杠,它允许命令运行...
$ cat .aliases
alias xemacs '(\xemacs > /dev/tty ) >& /dev/null'
$ xemacs &
[1] 17295
$
Run Code Online (Sandbox Code Playgroud)
...但现在我不能给命令任何参数:
$ xemacs foo.txt &
Badly placed ()'s.
[1] Done ( \xemacs > /dev/tty ) >& /dev/null
$
Run Code Online (Sandbox Code Playgroud)
谁能提供任何解决方案?先感谢您!
更新:我仍然很好奇是否可以从.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
Run Code Online (Sandbox Code Playgroud)
小智 5
我怀疑这是一个不使用别名的情况是最好的选择 - 尝试使用shell脚本代替:
#!/bin/tcsh
(xemacs $* > /dev/tty ) >& /dev/null
Run Code Online (Sandbox Code Playgroud)