Bashを使用した開発やシステム管理において、コマンドラインでの入力作業は日常的なタスクです。
コマンドが長くなればなるほど、入力ミスの修正や不要な部分の削除に時間がかかってしまうことがあります。
バックスペースキーを連打して文字を消す作業は、効率が良いとは言えません。
そこで重要になるのが、Bashに標準で備わっているショートカットキーの活用です。
これらの機能を習得することで、カーソル位置から行末までを一瞬で消したり、行全体をクリアしたりすることが可能になります。
本記事では、Bashでの作業スピードを飛躍的に高めるための行削除ショートカットについて詳しく紹介します。
Bashの入力モードとショートカットの基本
Bashのコマンドライン編集機能は、内部的に「Readline」というライブラリによって提供されています。
デフォルトではEmacsモードが有効になっており、多くの一般的なショートカットはこのモードに基づいています。
一方で、Vimの操作に慣れているエンジニア向けに「Viモード」も用意されていますが、標準的な環境ではEmacs風の操作が一般的です。
本記事で紹介するショートカットは、特別な設定なしで利用できる標準的なEmacsモードの操作を中心としています。
これらの操作を指に覚えさせることで、思考を妨げることなくコマンドを編集できるようになります。
カーソル位置を基準にした行削除ショートカット
最も頻繁に使用されるのが、現在のカーソル位置から前後の文字列を削除する操作です。
Ctrl + K:カーソル位置から行末までを削除
カーソルのある位置から、その行の最後までの文字列をすべて削除したい場合は、Ctrl + Kを使用します。
この「K」は「Kill(キル)」の頭文字を意味しており、行の後半部分を切り取るイメージです。
例えば、長いパスを入力した後にサブディレクトリ名だけを書き換えたい場合に非常に便利です。
# 入力中の状態(|はカーソル位置)
$ cp /var/log/apache2/access.log |/home/user/backup/
# ここで Ctrl + K を入力
$ cp /var/log/apache2/access.log
Ctrl + U:カーソル位置から行頭までを削除
逆に、カーソル位置から行の先頭に向かって削除したい場合は、Ctrl + Uを使用します。
これは、コマンドのオプションを維持したまま、先頭のコマンド自体を別のものに変えたいときに重宝します。
また、パスワード入力時などに最初から打ち直したい場合にもよく使われるテクニックです。
# 入力中の状態
$ sudo systemctl restart |nginx.service
# ここで Ctrl + U を入力
nginx.service
単語単位での削除ショートカット
行全体ではなく、直前の単語だけを消したい場合も多いでしょう。
Bashには、スペースを区切りとして単語を認識し、効率的に削除する機能があります。
Ctrl + W:カーソル直前の単語を削除
カーソルの直前にある単語を削除するには、Ctrl + Wを使います。
これは「Word」の頭文字からきており、コマンドの引数を一つだけ修正したいときに最適です。
多くのGUIアプリケーションでも同様の挙動をするため、馴染み深いショートカットと言えます。
Alt + D:カーソル直後の単語を削除
カーソルのすぐ後ろにある単語を削除する場合は、Alt + Dを押します。
この操作はカーソルを動かさずに、右側の単語を次々と消していく際に役立ちます。
なお、ターミナルソフトの設定によっては、Altキーがメタキーとして認識されない場合があるため注意が必要です。
削除した内容の復元(ヤンク)
Bashにおける「削除」の多くは、実際にはクリップボードのような領域(キルリング)への「切り取り」に近い挙動をします。
誤って消してしまった場合や、消した内容を別の場所に貼り付けたい場合には、Ctrl + Yを使用します。
これを「ヤンク(Yank)」と呼び、直前にCtrl + KやCtrl + Uで消した内容をカーソル位置に復元できます。
例えば、行末の引数を切り取って、行の中央に移動させるといった操作がコマンドライン上で完結します。
行全体を瞬時にクリアする方法
現在の入力をすべて破棄して、新しいプロンプトを表示させたい場面もあります。
Ctrl + C:現在の入力をキャンセル
厳密には「削除」ではありませんが、Ctrl + Cを押すと現在の行をそのまま残して、新しい行を表示します。
複雑なコマンドを打っている途中で「やはり最初からやり直したい」と思ったときに最も安全な方法です。
Ctrl + L:画面全体をクリアする
入力中の行の内容は維持したまま、ターミナルの表示が溜まって見づらくなった場合は、Ctrl + Lを押します。
これにより、現在の入力行を画面の一番上に保持した状態で、画面全体がリフレッシュされます。
これは clear コマンドを実行するのと同様の効果がありますが、入力中のテキストが消えない点がメリットです。
ショートカット一覧と使い分け
ここまで紹介した主要なショートカットを、以下の表にまとめました。
| ショートカット | 機能 | 主な活用シーン |
|---|---|---|
Ctrl + K | カーソル以降を削除 | パスや引数の後半部分を修正する際 |
Ctrl + U | カーソル以前を削除 | コマンド本体を書き換える、または全消去 |
Ctrl + W | 直前の1単語を削除 | 直前の引数ミスを素早く修正する際 |
Alt + D | 直後の1単語を削除 | カーソルより右側の不要な単語を消す際 |
Ctrl + Y | 削除した内容を貼り付け | 誤削除の復元やテキストの移動 |
Ctrl + C | 入力を破棄して改行 | 入力を中断して最初からやり直す際 |
応用的な削除テクニック
基本的なショートカットを組み合わせることで、より高度な編集が可能になります。
例えば、「行全体を完全に消去して、空の状態から始めたい」というケースを考えます。
この場合、まず Ctrl + E でカーソルを行末に移動させ、その後に Ctrl + U を入力するのが確実な方法です。
あるいは、Ctrl + A で行頭に移動してから Ctrl + K を押すことでも同じ結果が得られます。
このようにカーソル移動のショートカット(Ctrl + A や Ctrl + E)と組み合わせることで、削除の自由度は格段に上がります。
また、Bashの設定ファイルである .bashrc や .inputrc をカスタマイズすることで、これらの挙動を変更することも可能です。
しかし、標準のショートカットを覚えておくことで、SSH経由でアクセスした他人のサーバーや、構築したばかりの環境でも迷わず操作できる強みがあります。
まとめ
Bashでの行削除ショートカットは、コマンドライン作業のストレスを大幅に軽減してくれる強力なツールです。
特に行末まで消す Ctrl + K や、行頭まで消す Ctrl + U は、エンジニアにとって必須のテクニックと言えるでしょう。
最初は意識的に使う必要がありますが、繰り返し練習することで、無意識のうちに指が動くようになります。
今回紹介したショートカットを活用して、より迅速かつ正確なターミナル操作を目指してください。
効率的なコマンド操作は、プログラミングやインフラ管理における生産性を向上させる第一歩となります。
