シェルのショートカット設定に手を加える | 株式会社スタイラジーの「居心地の良い」ブログ

株式会社スタイラジーの「居心地の良い」ブログ

会社の事や仕事の事、
その他イベントなど、
色々な話題を思うがままに
株式会社スタイラジー社員
の日常を紹介します。

株式会社スタイラジーの
「居心地の良い」ブログ、
2008年1月7日スタート!

 

こんにちは日本国旗

 

前回は、【ANSI エスケープシーケンスによるカラー表示】について紹介しましたが、

今回は、【シェルのショートカット設定に手を加える】についてです!

 

1. Ctrl + s で検索したかった

先の記事 [historyコマンドの設定]

(https://ameblo.jp/stylagy/entry-12401395867.html) におきまして、

> 未来方向には `Ctrl + s` で検索できます。

ただしこのショートカットは別の機能に割り当てられていることが多く、

一般には使用できません(割り当てを解除する方法もあるのですが…)。

 

という記述をしました。

その「割り当て」に関するお話です。

 

2. Ctrl + s のデフォルトの割り当て

`Ctrl + s` を押下すると、画面の表示が止まります。何のキーを押しても、効果が無いように見えます。

これは実は画面の再描画が発生しなくなっているだけで、キー入力そのものは受け付けられています。

`Ctrl + q`で再び描画が始まり、その間に何かキー操作をしていればその結果が画面に出力されます。

上記以外にも、


・ 実行中コマンドの中止 `Ctrl + c`

・ 入力の終わりを意味する `Ctrl + d`

・ 単語単位のバックスペース `Ctrl + w`

 

これらの機能が次の要領で制御できます。

 

3. 端末を制御するコマンド「stty」

```

$ stty --all

speed 38400 baud; rows 53; columns 192; 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; flush = ^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

```

この出力結果の2行目を見てください。ここにショートカットの設定があります。

 

```

$ stty stop undef

```

とすることで、 `Ctrl + s` のショートカット割り当てが解除されます。

```

$ stty --all

speed 38400 baud; rows 53; columns 192; line = 0;

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = <undef>; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^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  
```
この状態で `Ctrl + s` を押下すると、プロンプトが消えて下記のように置き換わります。

 

```  
(i-search)`':
```  
※実はこの状態で検索位置が一番下(もっとも現在に近い過去)なので、この後何を入力してもヒットするコマンドはありません。
`Ctrl + r` でプロンプトを                    
```    
(reverse-i-search)`':
```    
 
にすれば検索の方向が過去に向くので、history の結果に含まれるコマンドであればヒットします。
元に戻したいなら `stty stop ^S` で機能を再割り当てしましょう。
 
4. その他
申し訳ありませんが、`stty -a` の結果は今まだ2行目以外は意味が分かっていません。
いずれ改めて勉強して出直しますウシシ          
     

 

 

次回は、

クロスサイトスクリプティングです!!


ではまた合格