2011-12-08 5 views
11

すぐにフォークしたい出力を無視したいシェル(私の場合はBash)から頻繁に実行します。実際に私はスクリプトを作成しました(silent)。単にコマンドの出力をフォークして/ dev/nullにリダイレクトする

#!/bin/bash 
[email protected] &> /dev/null & 

実行することができます。

silent inkscape myfile.svg 

私の端末は、私がフォークしたプロセスのデバッグ出力によって汚染されません。

私は2つの質問があります。

  1. は?、すなわち短いが、&> /dev/null &と同等のものをこれを行うの「公式」方法はありますか?

  2. もしそうでなければ、私のsilentコマンドのあとにタブ補完作業をする方法がありますか?たとえば、silent inkscと入力した後、[tab]を押すと、bashは私のコマンドをsilent inkscapeに自動完成します。

+0

あなたは「あたかもそこにいないかのように」書いています。申し訳ありませんが、それは何ですか?投稿を編集して明確にすることができます。がんばろう。 – shellter

+0

これは、bashに 'silent'への引数を通常のコマンドとして扱い、そのコマンドに対して通常のタブ補完を利用できるようにすることを意味します。だから、 '静かなgit pus [TAB]'は '静かなgit push 'に終わるだろう。 –

+1

2番目の質問を明確にしました。 gitの例はおそらくさらに良いでしょう。その場合、bashにgit補完プロファイルを使用させたいということを示しています。 – Philippe

答えて

4

脇に:silentスクリプトでexec "[email protected]" &> /dev/null &にして、サブシェルを破棄してくれるようにしたい場合は、"[email protected]"を引用符で囲むことでスペースを取らないようにします。

#2の場合:complete -F _command silentは、あなたが欲しいものを何かする必要があります。 (私はそのスクリプトlaunchの私のバージョンを呼び出して、私の.bash_profilecomplete -F launchを持っている)

0

「タブキーを再バインドできますか?スーパーユーザーのEnterキーを使用したStackoverflowのexampleが表示されます。これは正しい考えですか?

1

は、ここで私は、例えばからインタラクティブ(とおしゃべり)Xのアプリを起動するのに使う小さなスクリプトですターミナル終了した場合にxterm

#!/bin/bash 
exe="$1" 
shift 
"$exe" "[email protected]" 2>/tmp/$$."$exe".err 1>&2 & disown $! 

ませ出力は、死ぬことはないだろうが、あなたはログだけで使用したくない場合は、何かがうまくいかない場合は、すべての出力のログがで/ tmpに

があります代わりに/ dev/nullを使用します。

スクリプトアレルギーの場合でも機能します。

2

あなたはnohupのように見えます。タブ補完の問題は、bashはあなたがスクリプトの引数としてファイル名を完成しようとしていると考えているのに対し、その完了規則はnohupがコマンドを最初の引数として取ることを知っているからです。

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

+0

私は 'nohup'はほとんど私が望むものだと思います。私はその動作を理解する限り、プロセスを自動的にフォークしません。 – Philippe

+0

いいえ、バックグラウンドでプロセスを実行する必要がある場合は、「nohupコマンド」を使用できます。 – nelz

関連する問題