4

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 をリダイレクトできるかどうかはまだ知りませんが、ここで提案されているように、最終的にはシェル スクリプトになりました。

#!/bin/sh
# wrapper script to suppress messages sent to STDERR on launch
# from the command line.
/usr/bin/xemacs "$@" 2>/dev/null
4

2 に答える 2

5

これは、エイリアスを使用しないことが最善のオプションであると思われます。代わりにシェルスクリプトを使用してみてください。

#!/bin/tcsh

(xemacs $* > /dev/tty ) >& /dev/null
于 2008-09-25T21:34:59.370 に答える
2

試す

alias emacs '(\emacs \!* > /dev/tty) >& /dev/null'

「正しく配置されていない () の」メッセージは、入力パラメーターを emacs に誤って配置したことが原因です。\!*エイリアス定義に " " がない場合、" " は次のようにemacs abcなります。

(/usr/bin/emacs > /dev/tty) >& /dev/null abc

\!*」を含めると、「emacs abc」は次のようになります。

(/usr/bin/emacs abc > /dev/tty) >& /dev/null
于 2008-11-21T02:26:52.770 に答える