別のコマンドが完了した後、1つのコマンドをキューに追加して実行する方法は?

別のコマンドが完了した後、1つのコマンドをキューに追加して実行する方法は?

時々私は完了するのに長い時間がかかるプログラムを始めましたが、(emerge)それを待たずに寝る必要があることに気づきました。これを最初から知っていたら走ったでしょう。

program; halt

しかし、プログラムを起動しましたが、プロセスが完了したらコンピュータがシャットダウンするように「予約」するにはどうすればよいですか?Ctrl+zそれでは大丈夫ですかfg; halt

答え1

はい、可能です。

不明な場合は、次のコマンドでテストできます。

  • sleep 15

  • Ctrl+z

  • fg; echo "it works"

答え2

halt別の方法は、最初のコマンドの実行中に端末に入力することです。最初のコマンドがある時点で入力を読み取らない限り、端末のバッファに格納され、シェルは最初のプログラムが入力を読み取った状態で終了します。

答え3

waitコマンドの使用

$ sleep 10 &
[1] 29703
$ wait 29703 && echo hello
[1]+  Done                    sleep 10
hello

関連情報