はじめに
Linuxでサーバ作業をする際に、Ctrl+R
コマンドを使用して過去のコマンドを履歴から検索し再利用するということをやっていたが、他にもショートカットがあるということで調べてみた。
作業の効率がかなりあがるのでぜひ覚えておきたい。
環境
Windows 10 Professional
WSL2 (Ubuntu 22.04 LTS)
libreadline8
前提知識
基本的にLinuxディストリビューションでは、ショートカットが使えるのだが、なぜショートカットが使えるのかだけ知っておく。
このショートカットは、GNU Readline
というライブラリによって使用できるため、 libreadline
がインストールされていれば使用できるようになっている。
今回使用する環境では下記のようだった。
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 + F | 1文字前に移動 |
Ctrl + B | 1文字後ろに移動 |
Alt + F | カーソルを 1 語前に移動する |
Alt + B | カーソルを 1 単語後ろに移動する |
Bash コントロール/プロセス
ショートカット | アクション |
---|---|
Ctrl + L | clear コマンドと同様に、端末画面をクリアする |
Ctrl + S | 画面へのコマンド出力を停止する |
Ctrl + Z | 現在のコマンドの実行を中断し、バックグラウンドに移動する |
Ctrl + Q | 中断されたコマンドを再開する |
Ctrl + C | SIGI シグナルを送信し、現在実行中のコマンドを強制終了する |
Ctrl + D | 現在のターミナルを閉じる |
Bash履歴操作
ショートカット | アクション |
---|---|
Ctrl + R | bash 履歴のインクリメンタル逆検索 |
Ctrl + S | 次に最新のコマンドを取得する |
Ctrl + J | 現在のコマンドで履歴検索を終了する |
Ctrl + O | Ctrl + 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 + I | TAB のようにコマンドを補完する |
参考
- GNU Readline
https://ja.wikipedia.org/wiki/GNU_Readline - readline.git
https://git.savannah.gnu.org/cgit/readline.git/tree/ - Handy Keyboard Shortcuts for the Linux Bash Terminal
https://www.makeuseof.com/linux-bash-terminal-shortcuts/
おわりに
ショートカットについて、コマンド補完の TAB
や Ctrl+R
くらいしか使用していなかったが、
これを機にショートカット集を覚えておきたい。
特に、 Ctrl+A
(先頭に移動), Alt+F
(ワード移動), Ctrl+U
(カーソルから全部削除) は覚えておきたい。
今回記事の作成にあたって、ChatGPT
に協力していただいた。GNU Readline
を知ることができてよかった。