端末でバックグラウンドコマンドを実行するときにPIDと終了ステータスを非表示にする方法

端末でバックグラウンドコマンドを実行するときにPIDと終了ステータスを非表示にする方法

100行を超えるテキストファイルがあり、各行はシェン注文する:

echo foo
...
echo bar

私は〜を探していますシェン指定された行番号に関連付けられている対応するファイルでコマンドを実行する端末からコマンドを呼び出すことができます。通常、端末で実行されるコマンドに関連するシステム関連の内容を端末に表示したくありません。

たとえば、このようなものを使用するとxdotool type "$(sed -n 1p file)" &(よりエレガントなコマンドが可能であることに注意してください)

次の端子出力が表示されます。

[1] 9531
user@host:~$ echo foo

この行を抑制したいです[1] 9531しかし覚えて、私はそういいえ抑えたいエコバーさて、ここで他のコマンドではなく、必要なコマンドを実行したいかどうかを確認する機会があるからです。また、コマンドプロンプトの左側にテキストを表示したくありません。

それから<をクリックしました。入力する>私のキーボードキーを使って、次のようになります。

foo
[1]+  Done                    xdotool type "$(sed -n 1p file)" &
user@host:~$

この行を抑制したいです[1]+ Done...

この2つのラインの端子出力をどのように抑制できますか?私が見つけることができるすべてのリダイレクト方法を試しましたが、楽しかったです。

答え1

&簡単にするために、バックグラウンドでコマンド(記号)を実行したときに表示される一般的な出力が表示されます。この単純化されたバージョンを実行すると、同じ結果が表示されます。

ls &

この出力が表示されないようにするには、コマンドを括弧で囲むことができます。

(ls &)

またはあなたの場合

(xdotool type "$(sed -n 1p file)" &)

特別なケースでは、実際には必要ないような&ので、コマンドから削除する方が簡単です。

xdotool type "$(sed -n 1p file)"

ポリスチレン

すべてのファイルを最初から最後まで順番に実行するには、次の作業を行うことをお勧めします。

x=0

次に、各行に対して次を実行します。

x=$((x+1)); (xdotool type "$(sed -n "${x}p" file)" &)

これにより、毎回番号を変更する必要がなくなります。

また、これを見てください: ファイル内のすべてのコマンドを対話式に実行する方法

関連情報