クリーンな方法でプログラムを待ちます(たとえば、別のターミナルウィンドウで)。

クリーンな方法でプログラムを待ちます(たとえば、別のターミナルウィンドウで)。

コマンドを実行し、最初のコマンドが完了した後に別のコマンドを実行するには、次のコマンドを実行できます。

command1 &

実行中のプロセスのPIDを印刷しますcommand1

command1その後、作業が終わったら、何をすべきかを考えて、次のことを行うことができます。

wait [PID printed by the previous command] && command2

command1ただし、これは同じ端末ウィンドウ内でのみ機能し、出力を印刷すると非常に汚れます。新しい端末ウィンドウを開いて待つと、次の内容が表示されます。

$ wait 10668
bash: wait: pid 10668 is not a child of this shell

プログラムが最初のコマンドの出力を削除せずに、現在実行されているコマンドの出力に次のコマンドを書き込むのを待つことをサポートするターミナルエミュレータはありますか(例:にパイピング/dev/null)?

wait必ずしも解決する必要はありません。右クリックして「返却後に現在のコマンドを実行」を選択します。

単にコマンドを接続するのではなく、コマンドを実行してそれからこれが完了したらすぐに実行する項目を決定します。

答え1

通常、長期実行コマンドを発行した後に次に実行するコマンドを準備するには、シェルを使用します。職業管理それを達成するために。例えば、あなたは与えてcommand1くれる代わりに与えてくれ&、与えたいcommand2と思うので停止する現在実行中のコマンドを入力しますcontrol-z。これでシェルプロンプトが再び表示されるので、次のように入力します。

fg; command2

最初のコマンドを再開し、fg完了するとシェルは2番目のコマンドを開始します。

command1 を起動すると、&バックグラウンドで実行されます。を使用して前景にインポートfgして一時停止し、前と同じことを実行できます。

答え2

前のコマンドが完了したらすぐにコマンドを実行するには、;次のように区別できます。

command1 ; command2

または、次のように最初のコマンドが返されたときに2番目のコマンドを実行したい場合true

command1 && command2

関連情報