他のシェルでテスト

他のシェルでテスト

not通知()を表示する機能があります。したがって、これを使用してコマンドが完了したタイミングを表示できます。

sleep 5; not

しかし、時には;notOS Xの端末で(数年前)、現在のコマンドが実行されている間に2番目のコマンドを入力することができました。第2の命令は、第1の命令が完了した後に実行される。

だから入力sleep 5Enterしてすぐに入力しますnotEntersleep終了後に実行されますnot

しかし、Linuxでの私の経験によると、これは起こりません。終了後にsleepコマンドラインが表示されますが、not登録されEnterません。 Terminator、Konsole、tty をテストしました。

この動作は端末エミュレータによって異なりますか?それでは、あなたが望む方法で動作するものはありますか?または、私が選択した端末(ターミネーター)でこれを行う方法はありますか?

他のシェルでテスト

動作しません。つまり、2番目のコマンドは登録されていません。

  • bash
  • bash --norc
  • bash --norc --noprofile
  • sh

動作します。つまり、2番目の命令レジスタは次のようになります。

  • bash --norc --noprofile --noediting
  • zsh

~/.inputrcデフォルトのシェルからその行を選択的に削除し、再bashテストしました。問題を次の行に追跡しました。削除されると、2番目のコマンドが期待どおりに登録されます。

Control-j: menu-complete

Ctrl奇妙なことは、+をバインドしようとするとi問題がないということです。この項目が2番目のコマンドが登録されるのを防ぐ理由は何Ctrlですかjmenu-complete

ベストアンサー1

bashを使用していると仮定すると、^ Z(Ctrl + Zなど)を押してプロセスを停止し、背景に移動し、別のbashプロンプトを表示します。 input fg; not、前者は停止したプロセスを継続し、完了すると返されます。

または、待機したいプログラムのプロセスID(2342など)を確認してください。新しいShouldに次のように入力します。

until kill -0 2342; do sleep 1; done; not

これは毎秒確認されます。

おすすめ記事