私は長いコマンドのリストをBashに貼り付け、実行中にそれを停止することにしました。 Ctrl+Z と Ctrl+C は何もしません。 1行ずつ実行されます。最後に、このコマンドを実行するにはサービスが必要だったため、サービスを停止して代わりに別のSSHインスタンスを使用しましたが、コマンドは順番に失敗しました。
このタスクを実行するためにサービスを停止できない場合は、リストの継続を停止するにはどうすればよいですか?
ベストアンサー1
「ではしないでください」と答える質問だ。
これは悪い習慣なので、できるだけ避けるべきです。すでに持っている場合は破ってみてください。それ以外の場合は、自分がしたことの結果を受け入れます。
Ctrl-Cテキストをシェルに貼り付けると、ユーザーが直接入力したかのように入力バッファがそのテキストで埋められ、その後にバッファに入力するキーストロークやその他の項目Ctrl-Zは、バッファの内容が消費されるまで貼り付けられるまで処理されません。 。キューに入って待つ必要があります。
代わりに、コマンドをテキストエディタに貼り付け、必要に応じて編集し、ファイルに保存してスクリプトを実行します。
または、何らかの理由で一時ファイルにスクリプトを保存したくない場合は、シェルのコマンドラインエディタモードを起動し、コマンドをエディタに貼り付けて編集し、保存して終了して実行します。これは、実際にバルクテキストをシェルに貼り付けることによる望ましくない結果を防ぐ方法です。
では、bash
エディタモードが呼び出され、edit-and-execute-command
呼び出しが転送されますCtrl-XCtrl-E。現在の行を編集するために$VISUAL
、$EDITOR
または(順番に)実行を試みるので、emacs
コピー貼り付けだけでなく、履歴の行編集にも便利です。他のいくつかのシェル(例zsh
:)にも同様の機能があります。