Bashで残りのコマンドリストをキャンセルする方法は?

Bashで残りのコマンドリストをキャンセルする方法は?

Bashでは時々入力します。コマンドリストをクリックしましたが、Enter後でリストの最後にあるいくつかのコマンドにエラーがあることに気づきました。Ctrl+を押すと、C現在実行中のコマンドが終了し、リストの残りの部分がキャンセルされることがわかります。リストの残りの部分をキャンセルする方法はありますか?いいえ現在実行中のコマンドを終了しますか?

たとえば、次のように入力するとします。

foo; bar

または

foo && bar

これはfoo長期実行コマンドであるため、中断しないことが非常に重要であり、元に戻せず、bar望ましくない操作(shutdown -h nowまたはrm -rf /)を実行します。シェルが実行中にfoo完了し、foo後で実行しないように指示する一般的な方法はありますか?bar(はい、権限を変更してbar実行不可能にすることもできますが、そのようなものを同時に使用したい場合はbarあまり便利ではなく、ないか内蔵されてはいけません。動作しません。)rmbarbar

ベストアンサー1

CtrlZプログラムをバックグラウンドプロセスに移動すると効果があることがわかりました。

foo && bar

foo; barあなたが望む方法で制御を提供しないというコメントを指摘した@Arkadiusz Drabczykに感謝します。

それから:

^Z

[1]+  Stopped                 foo

このコマンドは最初の操作のみを停止し、

fg %1

これにより、fooジョブが前面に移動し、ジョブが完了して終了します。

PS:これはファイルに書き込む2つのスクリプトで確認できます。最初は、それを入れる時間を与えるために数秒間眠ります。

CtrlZなぜ実行中のコマンドだけを処理し、残りは無視するのか理解できません。私はあなたを知りたいです。

おすすめ記事