11

私はシェル (私の場合は Bash) からコマンドを頻繁に実行しますが、これらのコマンドはすぐにフォークして無視したいものです。実際、私silentはそれを行うスクリプト ( ) を頻繁に作成しました。

#!/bin/bash
$@ &> /dev/null &

その後、たとえば実行できます

silent inkscape myfile.svg

また、フォークしたばかりのプロセスのデバッグ出力によって端末が汚染されることもありません。

2 つの質問があります。

  1. これを行う「公式の」方法はあり&> /dev/null &ますか?

  2. そうでない場合、コマンドの後にタブ補完silentをあたかも存在しないかのように機能させる方法はありますか? 例を挙げると、 を入力した後、 を押したときにsilent inkscbash がコマンドをオートコンプリートするようにしたいと思います。silent inkscape[tab]

4

4 に答える 4

4

exec "$@" &> /dev/null &余談ですが、おそらくsilentスクリプトでサブシェルを破棄させたいと思うでしょう。引用符で囲む"$@"と、スペースが邪魔にならないようになります。

#2について:complete -F _command silentあなたが望むようなことをするべきです。(私はそのスクリプトの私のバージョンを呼び出し、私の中launchに持っcomplete -F launchています.bash_profile

于 2011-12-08T15:50:26.693 に答える
3

nohup は多かれ少なかれあなたが望むことをするようです。タブ補完の問題は、スクリプトの引数としてファイル名を補完しようとしていると bash が認識しているのに対し、補完規則では nohup がコマンドを最初の引数として受け取ることを認識しているためです。

Nohup は stout と stderr を nohup.out にリダイレクトし、シェルが終了してもコマンドを実行したままにします。

于 2011-12-08T23:11:40.307 に答える
2

これは、xterm などからインタラクティブな (そしておしゃべりな) X アプリを起動するために使用する小さなスクリプトです。

#!/bin/bash
exe="$1"
shift
"$exe" "$@" 2>/tmp/$$."$exe".err 1>&2 & disown $!

出力はありません。端末が終了しても終了しませんが、何か問題が発生した場合に備えて、すべての出力のログが /tmp にあります

ログが必要ない場合は、代わりに /dev/null を使用してください。

スクリプトアレルギーの場合は、関数からも機能します。

于 2011-12-08T17:39:23.283 に答える
0

おそらく、タブキーを「再バインド」できたら?Enter キーを使用したスーパーユーザー Stackoverflow の例を示しますこれは正しい考えですか?

于 2011-12-08T15:44:44.783 に答える