Loose-Info.com
Last Update 2022/10/10
TOP - 各種テスト - bash - readline

readline


(注) 共通キー表記
C : Control
M : Meta(Alt、Esc先押等)

(注) 表示・挙動
基本的にキーマップなどはデフォルトの状態
画面・動作は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


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。