Last Update 2022/10/10
readline
(注) 共通キー表記
C : Control
M : Meta(Alt、Esc先押等)
M : Meta(Alt、Esc先押等)
(注) 表示・挙動
基本的にキーマップなどはデフォルトの状態
画面・動作はHTML+CSSにて擬似的にイメージを再現
ブラウザによっては実際の表示と大きく異なる可能性有り
画面・動作はHTML+CSSにて擬似的にイメージを再現
ブラウザによっては実際の表示と大きく異なる可能性有り
(01)
移動のためのコマンド
beginning-of-line (C-a)
行の先頭に移動
end-of-line (C-e)
行の終端に移動
forward-char (C-f)
1文字前進
backward-char (C-b)
1文字後退
forward-word (M-f)
次の単語(文字と数字)の末尾に移動
backward-word (M-b)
現在または前の単語(文字と数字)の先頭に移動
$ echo "abcde"
clear-display (M-C-l)
画面と、端末のスクロールバッファをクリア
clear-screen (C-l)
画面をクリアしてから、現在の行を画面の先頭に残して再描画
$ ls -l
total 28
-rw-rw-r-- 1 testusr testusr 5 Sep 6 16:56 sample1.txt
-rw-rw-r-- 1 testusr testusr 5 Sep 6 22:45 sample2.txt
-rw-rw-r-- 1 testusr testusr 9 Sep 6 23:10 sample3.txt
-rwxr-xr-x 1 testusr testusr 602 Sep 7 09:21 sample.sh
drwxrwxr-x 2 testusr testusr 4096 Sep 16 12:11 workdir0
drwxrwxr-x 2 testusr testusr 4096 Sep 16 12:12 workdir1
drwxrwxr-x 2 testusr testusr 4096 Sep 16 11:59 workdir2
$
(02)
履歴操作のためのコマンド
accept-line (Newline, Return)
入力行の確定
previous-history (C-p)
履歴リストから前のコマンドを取得、リスト内を移動
next-history (C-n)
履歴リストから次のコマンドを取得、リスト内を移動
beginning-of-history (M-<)
履歴リストの最初の行に移動
end-of-history (M->)
現在の入力中の行に移動
右側は履歴リスト
$ history -c
$ echo "sample1"
sample1
$ echo "sample2"
sample2
$ echo "sample3"
sample3
$ history
1 echo "sample1"
2 echo "sample2"
3 echo "sample3"
4 history
$ echo "編集中"
non-incremental-reverse-search-history (M-p)
与えられた文字列を履歴後方に非インクリメンタル検索
non-incremental-forward-search-history (M-n)
与えられた文字列を履歴前方に非インクリメンタル検索
右側は履歴リスト
$ history -c
$ echo "sample1"
sample1
$ echo "sample2"
sample2
$ echo "sample3"
sample3
$ history
1 echo "sample1"
2 echo "sample2"
3 echo "sample3"
4 history
$ echo "編集中"
yank-nth-arg (M-C-y)
直前のコマンドの最初の引数をカーソル位置に挿入
$ ls workdir0 workdir1
workdir0:
sample.txt
workdir1:
sample.txt
$ ls -l workdir1
yank-last-arg (M-., M-_)
直前のコマンドの最後の引数をカーソル位置に挿入
$ history -c
$ cat sample1.txt
abc
$ cat sample2.txt
def
$ cat sample3.txt
ghi
$ ls -l
shell-expand-line (M-C-e)
現在行をシェルと同じように展開
$ samplevar="abcde"
$ echo $samplevar !#:$ <--- コマンドラインで[Enter]キー押下げにて実行
echo $samplevar $samplevar
abcde abcde <--- 展開結果をechoにて出力(参考情報)
$ echo $samplevar !#:$
history-expand-line (M-^)
現在行を履歴展開
$ samplevar="abcde"
$ echo $samplevar !#:$ <--- コマンドラインで[Enter]キー押下げにて実行
echo $samplevar $samplevar
abcde abcde <--- 展開結果をechoにて出力(参考情報)
$ echo $samplevar !#:$
(03)
テキストを変更するコマンド
delete-char (C-d)
現在のカーソル位置の文字を削除
transpose-chars (C-t)
カーソルの前の文字をカーソル位置に移動、カーソルは一つ前に移動
transpose-words (M-t)
カーソル位置の前にある単語をカーソルのある単語の後ろに移動、カーソルは移動した単語の後ろに移動
upcase-word (M-u)
現在カーソルのある(または後ろの)単語を大文字にする
downcase-word (M-l)
現在カーソルのある(または後ろの)単語を小文字にする
capitalize-word (M-c)
現在カーソルのある(または後ろの)単語のカーソル位置の文字を大文字にする(基本として大文字で始めるため)
$ echo sample1 sample2
end-of-file (C-d)
行に文字が無く行頭にカーソルがある場合EOFを返す
$ mapfile
sample1
sample2
(04)
キルとヤンク
kill-line (C-k)
現在のカーソル位置から行末までをキル
unix-line-discard (C-u)
現在のカーソル位置から行頭までをキル
kill-word (M-d)
現在のカーソル位置から単語の終わりまでをキル
unix-word-rubout (C-w)
単語の境界である空白から現在のカーソル位置の前までをキル
delete-horizontal-space (M-\)
現在のカーソル周りのスペースとタブを全てキル
$ echo sample1 sample2
yank (C-y)
キルリングの先頭を現在のカーソル位置へヤンク
yank-pop (M-y)
キルリングをローテートさせ、新たな先頭を現在のカーソル位置へヤンク
$ su testusr
Password:
$ echo sample1
(05)
補完(Completing)
complete (TAB)
現在のカーソル位置の前にあるテキストに対して補完を試みる
・「$」で始まる場合 : 変数
・「~」で始まる場合 : ユーザー名
・「@」で始まる場合 : ホスト名
・コマンド
・ファイル名
・「$」で始まる場合 : 変数
・「~」で始まる場合 : ユーザー名
・「@」で始まる場合 : ホスト名
・コマンド
・ファイル名
$ ls -l
total 24
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample1.txt
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample2.txt
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample3.txt
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:26 workdir0
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:26 workdir1
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:27 workdir2
$
possible-completions (M-?)
現在のカーソル位置の前にあるテキストの補完候補を列挙
insert-completions (M-*)
possible-completionsで生成される補完リストを現在のカーソル位置に挿入
complete-filename (M-/)
現在のカーソル位置の前にあるテキストのファイル名での補完を試みる
possible-filename-completions (C-x /)
現在のカーソル位置の前にあるテキストをファイル名として、可能となる補完をリストアップ
complete-into-braces (M-{)
現在のカーソル位置の前にあるテキストをファイル名として、可能となる補完を中かっこで囲まれた形式でリストアップ
$ ls -l
total 24
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample1.txt
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample2.txt
-rw-rw-r-- 1 testusr testusr 4 Sep 20 16:59 sample3.txt
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:26 workdir0
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:26 workdir1
drwxrwxr-x 2 testusr testusr 4096 Sep 30 16:27 workdir2
$
complete-username (M-~)
現在のカーソル位置の前にあるテキストをユーザー名として補完を試みる
possible-username-completions (C-x ~)
現在のカーソル位置の前にあるテキストをユーザー名として、可能となる補完をリストアップ
complete-variable (M-$)
現在のカーソル位置の前にあるテキストをシェル変数として補完を試みる
possible-variable-completions (C-x $)
現在のカーソル位置の前にあるテキストをシェル変数として、可能となる補完をリストアップ
complete-hostname (M-@)
現在のカーソル位置の前にあるテキストをホスト名として補完を試みる
possible-hostname-completions (C-x @)
現在のカーソル位置の前にあるテキストをホスト名として、可能となる補完をリストアップ
complete-command (M-!)
現在のカーソル位置の前にあるテキストをコマンド名として補完を試みる
possible-command-completions (C-x !)
現在のカーソル位置の前にあるテキストをコマンド名として、可能となる補完をリストアップ
$
dynamic-complete-history (M-TAB)
現在のカーソル位置の前にあるテキストを、履歴リストとの比較により補完を試みる
$ history
1 ls -l workdir1
2 ls -l workdir2
3 ls -l sample1.txt
4 history
$
(06)
キーボードマクロ
start-kbd-macro (C-x ()
現在のキーボードマクロに入力文字列の保存を開始
end-kbd-macro (C-x ))
現在のキーボードマクロに入力文字列の保存を停止
$ <--- [C-x (]入力でマクロ記録開始
実行環境
GNU bash, version 5.1.16
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。