0

bashでコマンドラインへの出力を抑制するbash関数を書きたいと思います。

$HOME/.bashrc に以下を含めました

# suspend output to the terminal
noout(){
        $* &>/dev/null &
}

例として、evince のエイリアスを作成しました。

alias evince='noout evince'

これは、ファイル名にスペースが含まれていないファイルに対しては問題なく機能します。ただし、次のようなものを起動すると:

evince Jack\ London\ -\ The\ Star\ Rover.pdf

Bash はファイル名をいくつかのビットに分割し、evince はいくつかの空のウィンドウを開きます。

それを機能させるために助けてくれてありがとう。

4

1 に答える 1

1

これを試して:

noout() {
    "$@" >/dev/null 2>&1 &
}

バックグラウンドで実行する理由はわかりませんが、それはあなたの選択です。私の答えの関連する側面は、引用符と の$@代わりに を使用することです$*シェルスクリプトでの「$@」の意味も参照してください。

于 2013-10-01T09:00:56.480 に答える