Think Twice
IT技術メモ | Linuxのメモ
Created: 2021-02-26 / Updated: 2021-02-26

Linuxでコマンド履歴を戻りすぎた時に先に進む方法


目次


はじめに

今まで、Ctrl + Rでコマンド履歴を戻りすぎた時、先に進む方法が分からず、
仕方なくCtrl + Cで一旦終了させてから再度Ctrl + Rでやり直すという方法を取っていましたが、 当然ながら、先に進む方法も用意されています。
しかし、有効にするのにちょっとした設定が必要となるようでした。

結論から先に言うと、先に進むコマンドはCtrl + Sなのですが、
デフォルトだとこちらには「スクリーンロック」という機能がバインドされているようです。
ちなみにスクリーンロックは、画面をロックしてくれる機能(詳しくは 横道">横道からどうぞ)のことで、
私は多分この先もきっと使わないので、この機能は無効にして履歴を進められるようにすることにしました。

ということで設定方法を見て行きましょう。

設定

設定を確認(設定前)

Copy
$ stty -a
speed 38400 baud; rows 30; columns 120; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q;
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
※赤文字部分

起動スクリプトに追記

自分用なら ~/.bashrc、全ユーザに適用でよければ /etc/bashrc に以下を追記します。

標準だとスクリーンロックが割り当てられているため、それを解除する
Copy
stty stop undef
stty start undef
編集後、再読み込み。

設定を確認(設定後)

Copy
$ stty -a
speed 38400 baud; rows 30; columns 120; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>;
stop = <undef>; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
※赤文字部分

操作イメージ

Ctrl + Rで履歴検索(reverse-i-search)になる。

その後、Ctrl + Sで履歴を進む(i-search)になる。

Ctrl + Gで元に戻る。


参考

横道

参考サイト