theonehub.app

KEYBOARD — キーボードとターミナル入力

ターミナルのショートカット — Bashの行編集と実行中の操作を分ける

ターミナルのショートカット — Bashの行編集と実行中の操作を分けるのアイキャッチ

Ctrl+A・E・RなどBashの行編集と、Ctrl+C・D・Zの違いを解説。キーが効かないときに、シェル・tmux・アプリを切り分ける方法も紹介します。

この記事の目次

ターミナルで同じCtrlキーを押しても、入力中のシェルと、実行中のアプリでは結果が違います。ショートカットを覚える前に「いま誰がキーを受け取っているか」を確認すると、予想外の終了や中断を避けやすくなります。

以下の行編集は、BashのReadlineで標準のEmacs形式のキーバインドを使う場合の例です。Zsh、Fish、Viモード、IDE内のターミナル、独自設定では異なることがあります。キーの意味はGNU Bashの公式マニュアルを基準にしています。

入力中の行を編集する

キーBashの行編集での役割使う場面
Ctrl+A行頭へ移動コマンド名を直す
Ctrl+E行末へ移動引数を足す
Ctrl+Uカーソルから行頭までを削除入力の前半をやり直す
Ctrl+Kカーソルから行末までを削除不要な後半を消す
Ctrl+W手前の単語を削除引数を直す
Ctrl+Y削除した文字列を戻す消しすぎを戻す

ここでの「削除」は、入力している文字列への操作です。ファイルそのものを消す操作ではありません。ただし、修正後にEnterを押せばその行が実行されるので、コマンド全体を読んでから確定します。

履歴検索は、確認してから実行する

Ctrl+Rは入力履歴を逆方向に検索するためのキーです。前に使った語を入力して候補を探し、見つかった行の接続先やファイル名を確認します。以前成功したコマンドでも、今いるディレクトリで同じ結果になるとは限りません。

練習するなら、まず自分で入力したpwdなどの無害なコマンドを探してください。履歴には秘密情報や誤って打ったコマンドが残る場合もあります。画面共有やスクリーンショットに出す前に、内容を確認します。

Ctrl+C・D・Zは同じ「終了」ではない

キー典型的な役割注意点
Ctrl+C実行中の前面プロセスへ割り込みアプリが独自に処理することもある
Ctrl+D入力終端として扱われる空のシェル入力で終了につながることがある
Ctrl+Z前面のジョブを一時停止終了したわけではなく、停止したジョブが残る

Ctrl+Dは万能の終了コマンドではありません。Ctrl+Zで停止したジョブは、対応するシェルではjobsで確認し、fgで前面に戻せます。作業内容を保存する前に、分からないキーを試して抜けようとしないでください。

入力行の編集、履歴の呼び出し、実行中の制御を区別する
入力行の編集、履歴の呼び出し、実行中の制御を区別する
画像を選ぶと拡大できます。
  1. 入力中の行では、移動や部分削除の操作を使います。
  2. 履歴から呼び出した行は、宛先やファイル名を確認してから実行します。
  3. 実行中の割り込み、入力終端、中断は同じ操作ではありません。

キーが効かないときの切り分け

  1. 今の画面がシェルの入力待ちか、エディターやCLIアプリの中かを確認する。
  2. tmux内なら、キーがtmuxに割り当てられていないか確認する。
  3. 端末アプリやOSが先にショートカットを使っていないか確認する。
  4. シェルの編集モードや、自分で変更したキーバインドを確認する。

たとえばtmuxの標準では、Ctrl+Bを押してから次のキーを押す形で操作します。Ctrl+Bが単独のアプリ操作として届かない場合、キーボードの故障と決めつける前に、この層を確認します。

小さな練習で覚える

Bashの入力待ちでecho sampleと入力し、まだEnterを押さずにCtrl+AとCtrl+Eで移動します。次にCtrl+Wで末尾の単語を消し、Ctrl+Yで戻します。行がecho sampleになっていることを読んでから実行すると、表示と操作の対応を確認できます。

スマホではCtrlキーの出し方も道具ごとに違います。AndroidのSSHクライアントの確認表を使い、頻繁に使うキーを無理なく送れるかを調べてください。

行を編集する練習と、処理を止める練習を混ぜない

ショートカットの練習では、まず入力待ちの行を扱います。文字が消える、カーソルが移る、削除した文字を戻す、という結果を画面で確認できるためです。実行中の処理で中断キーを試す練習とは分けてください。

たとえば、入力途中の引数を直す場面では、最初にカーソル位置を見ます。行頭や行末へ移動したあと、どの範囲が削除されたかを読み、必要なら戻します。最後にコマンド名と引数を通して確認してから Enter を押します。キーを覚えることより、編集後の行が意図した内容になったことを確認するのが先です。

操作の段階確認する対象
移動するカーソルが目的の位置にあるか
消す・戻す入力行のどの文字が変わったか
実行する行全体が意図したコマンドか
結果を見るエラーの有無と、必要な結果が出たか

慣れてくると入力行を読まずに実行したくなりますが、履歴から呼び出した行には前の作業のパスが残ります。練習で速く押せるようになることと、今の対象に正しく適用できることは分けて考えます。

効かなかったキーを、再現できる記録にする

キーが期待どおりに働かないときは、「Ctrl が効かない」だけでは原因を探しにくくなります。どのキーを組み合わせ、どの画面で、何を期待し、何が起きたかを書きます。

例として「SSH 接続後、tmux 内のシェル入力待ちで Ctrl+A を押したが、行頭へ移動しなかった」という記録なら、受け取り先と経路がわかります。続いて tmux の外でも同じか、別の入力方法でも同じかを一つずつ比べます。設定を変えた場合は、その内容と戻し方も残します。

また、入力が止まったように見える状態と、処理が終わった状態を同一視しないようにします。画面の表示だけで判断できない場合は、現在動いているアプリの操作案内を確認します。別のアプリで覚えた終了キーを繰り返すより、今の画面で何が入力を受け取っているかを確かめることが、作業を失わずに戻る手掛かりになります。

参考リンク