はじめに

Linuxでサーバ作業をする際に、Ctrl+R コマンドを使用して過去のコマンドを履歴から検索し再利用するということをやっていたが、他にもショートカットがあるということで調べてみた。
作業の効率がかなりあがるのでぜひ覚えておきたい。

環境

1
2
3
Windows 10 Professional
WSL2 (Ubuntu 22.04 LTS)
libreadline8

前提知識

基本的にLinuxディストリビューションでは、ショートカットが使えるのだが、なぜショートカットが使えるのかだけ知っておく。
このショートカットは、GNU Readline というライブラリによって使用できるため、 libreadline がインストールされていれば使用できるようになっている。
今回使用する環境では下記のようだった。

1
2
dpkg -l | grep libreadline
ii  libreadline8:amd64                   8.1.2-1                                 amd64        GNU readline and history libraries, run-time libraries

また、readline の実装については、下記ページで見られる。
https://git.savannah.gnu.org/cgit/readline.git/tree/

GNU Readlineについて

GNU Readline(グニュー・リードライン)は、GNUプロジェクトが開発・保守しているライブラリの1つ。GPLでライセンスされ、bashなどのプロジェクトで使われている。 Readlineを使ったアプリケーションでは、CTRL-B押下でカーソルを1文字ぶん戻し、CTRL-F押下で1文字ぶん進め、CTRL-Rでコマンド履歴を検索できる。これらのショートカットキー(前述はデフォルトであり、vi風のバインディングも可能)はGNUの最も有名なプロジェクトであるテキストエディタのGNU Emacsに倣ったものである。Readlineには他にも、キルリング(コピー・アンド・ペーストをより柔軟にしたもの)、コマンド行補完といった基本機能がある。クロスプラットフォームのライブラリであるため、アプリケーションの行編集動作を各種システムで同一にすることができる。 Readlineは設定ファイルでカスタマイズでき、設定ファイルの位置はデフォルト (~/.inputrc) もあるが、アプリケーションで指定したパスでもよい。このファイルでキーバインディングなどをカスタマイズできる。

GNU Readline - wikipediaより引用

基本は emacs 操作に似ている。
また、設定ファイルで キーバインディングも変えられる。
ということなので、操作に慣れているのであればすぐに覚えられそうだ。

ショートカット集

特に覚えておきたいショートカットを記載しておく。

Bash

ショートカットアクション
Ctrl + Aコマンドラインの先頭に移動
Ctrl + Eコマンドラインの最後に移動
Ctrl + F1文字前に移動
Ctrl + B1文字後ろに移動
Alt + Fカーソルを 1 語前に移動する
Alt + Bカーソルを 1 単語後ろに移動する

Bash コントロール/プロセス

ショートカットアクション
Ctrl + Lclear コマンドと同様に、端末画面をクリアする
Ctrl + S画面へのコマンド出力を停止する
Ctrl + Z現在のコマンドの実行を中断し、バックグラウンドに移動する
Ctrl + Q中断されたコマンドを再開する
Ctrl + CSIGI シグナルを送信し、現在実行中のコマンドを強制終了する
Ctrl + D現在のターミナルを閉じる

Bash履歴操作

ショートカットアクション
Ctrl + Rbash 履歴のインクリメンタル逆検索
Ctrl + S次に最新のコマンドを取得する
Ctrl + J現在のコマンドで履歴検索を終了する
Ctrl + OCtrl + S および Ctrl + R で見つかったコマンドを実行して再入力する
Ctrl + G履歴検索モードを終了する
Ctrl + P / ↑前のコマンドに移動
Ctrl + N / ↓次のコマンドに移動

Bash編集

ショートカットアクション
Ctrl + Uカーソルの前からコマンドの開始までを削除
Ctrl + Kカーソルからコマンドの最後までを削除
Ctrl + Wカーソルの前のコマンド/引数を削除する
Ctrl + Dカーソルの下の文字を削除する
Ctrl + Hカーソルの前の文字を削除する
Alt + D単語の終わりまで文字から削除する
Alt + バックスペース単語の先頭まで文字から削除する
Alt + <bash 履歴の最初の行に移動する
Alt + >bash履歴の最終行に移動する

バッシュ情報

ショートカットアクション
TABコマンドまたはファイル/ディレクトリ名をオートコンプリートする
Ctrl + ITAB のようにコマンドを補完する

参考

おわりに

ショートカットについて、コマンド補完の TABCtrl+R くらいしか使用していなかったが、
これを機にショートカット集を覚えておきたい。
特に、 Ctrl+A (先頭に移動), Alt+F (ワード移動), Ctrl+U (カーソルから全部削除) は覚えておきたい。
今回記事の作成にあたって、ChatGPT に協力していただいた。
GNU Readline を知ることができてよかった。
chatgpt-1