前のコマンドの終了後にコマンドを実行する

前のコマンドの終了後にコマンドを実行する

現在実行中のコマンドが終了した後にユーザーがコマンドを実行できるターミナル エミュレータはありますか?

私はソフトウェアを探しているのであって、コマンドを連結する方法 (たとえば、 または&&経由;) の説明を探しているのではありません。何か他のことが終わった後に何かを実行したいが、すべてを事前に計画していないことがよくあるだけです。「現在のコマンドの終了後に実行」という小さなコンテキスト メニュー エントリがあり、新しいターミナル ウィンドウを開いてまさにそれを実行すると素晴らしいと思います。

答え1

Bash CLI を使用していると想定します。事前にどの程度計画を立てるかに応じて、これを行うには少なくとも 2 つの方法があります。

コマンドを入力してenter、それが終了したら別のコマンドを実行したい場合は、次のようにします。

001 $ date; sleep 10
002 Mon, Jan 25, 2016  3:08:35 PM
003 tty; date
004 $ tty; date
005 /dev/pty2
006 Mon, Jan 25, 2016  3:08:45 PM

ノート:

  • 行番号(「001 ...」)が追加されます
  • 行001: 2つのコマンドが により連続して実行され;、2番目のコマンドは長時間実行されます
  • 行 002: 参照用に行 001 の「date」からの即時出力
  • 行 003: 行 001 の「sleep」コマンドの実行中にユーザーが追加のコマンドを入力すると、入力内容はエコーされますが、「sleep」が完了するまで解釈されません。
  • 行 004:$行 001 の 2 番目のコマンドの実行終了を示すプロンプトが表示され、残りは行 003 の再エコーです。
  • 行 005: 行 003 で入力された 'tty' コマンドの出力
  • 行 006: 行 003 で入力された「date」コマンドの出力、行 002 と比較

ただし、最初のコマンドの後に何か他のものを開始したいことが事前にわかっていて、まだ何を開始するかがわからない場合は、次のように明示的に待機できます。

006 $ date; sleep 20 &
007 Mon, Jan 25, 2016  3:13:52 PM
008 [1] 504840
009 $ wait 504840; tty; date
010 [1]+  Done                    sleep 20
011 /dev/pty2
012 Mon, Jan 25, 2016  3:14:12 PM

ノート:

  • 行006: 参照用に「date」、その後「sleep」コマンドが最後にバックグラウンドにプッシュされます&
  • 行 007: 行 006 の「date」の出力 (参考)
  • 行 008:&行 006 の出力。'sleep' コマンドの PID を示します。
  • 行 009: 'wait' は、指定された PID のプロセスが完了するまで待機します。
  • 行010: 行006の「sleep」が完了すると、「tty; date」が解釈されます
  • 行 011: 行 009 の 'tty' の出力
  • 行 012: 行 009 の 'date' の出力、行 007 と比較

答え2

現在のコマンドが実行されているシェル ウィンドウに新しいコマンドを入力または貼り付けると、シェルはそれを認識し、現在のコマンドが終了した後にそれを実行します。

追加のメニューエントリは必要ありません。

例えば:

$ command1
command2
$ $

(繰り返しプロンプトが表示されるのは、シェルが の実行後にプロンプ​​トを表示するためですcommand1) command2

注意command1killcommand2すぐに実行されますが、Ctrl-Cこのシェルに入力すると中止されます両方コマンド。

関連情報