概要
4月も終わりになり、GW明けから新人さんもそろそろ実務開始されるところも多いのではないでしょうか。
ということで、自分が新人のときに何度も遭遇してパニクっていた件についてメモメモ。
今までWindowsばっかり触っていて、Linuxなんてほとんど触ったことない状態でターミナルを開いてポチポチしているといきなり「何も入力出来なくなる」ことが、自分が新人の頃に何度かありました。
当時は知識も無いので、「意味わからん。。このターミナル落としてやり直そう・・」ってやってました。
これ、大抵ターミナル上で「Ctrl+s」を押してしまっているはずです。Linuxなどのターミナルでは「Ctrl+s」を押すと、「画面への出力を止めろ」って命令を発行したことになります。なので、何も出力されない状態になります。実は、入力は受け付けられています。出力が停止状態になっているだけです。
解除するには「Ctrl+q」を押します。これは、「画面への出力を開始しろ」って命令を発行します。押した後、溜まっていた出力がドバって出力されます。
これ、自分でCtrl+sを意識して押してしまってる場合ってほとんど無いんですよねw Windowsで作業してると保存するためのショートカットキーが Ctrl+s なので、無意識に押してしまってる場合がほとんど。なので、いきなりターミナルがフリーズしたように感じる。
なので、まとめとして
いきなり画面が何も入力出来なくなったら、とりあえずCtrl+q押してみましょう
ということになります。
stty コマンドで設定を見てみる
上記のような端末に設定されている内容を見てみたい場合は以下のコマンドを打ち込むと見れます。
$ stty -a
たとえば、以下のように出力されます。
$ stty -a speed 38400 baud; rows 33; columns 111; 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
なんかいっぱい出てますが、結果の3〜4行目に
start = ^Q; stop = ^S;
というのが見えますね。^
は Ctrl
を表します。なので、^Q
は Ctrl+q
となります。同じように ^S
は Ctrl+s
です。
参考情報
上の記事で無効化する方法が記載されていますが、業務でやってると勝手に設定変えれない場合も多いです。なので、ログインするたびに stty stop undef; stty start undef
を打ち込むか、慣れてしまうというのも手です。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場