lsしたのに汽車が走った〜ミスタッチしやすいコマンドとは〜

6-2.並び替え

そんなコマンドがあることすら知らなかったのですが、lsを実行したつもりが突然画面が真っ黒になり機関車が走りだしました。

sl command

slコマンド。機関車が出現するジョークプログラムのようです。

lsを含めLinux(Unix)コマンドは、連打するものではなく考えて入力するべきですが、仕事で煽られるとその焦りから頭より先に手を動かしてしまい……、いや、むしろ頭は止まっていると言った方が良いでしょう。とにかくcdとlsの連打をするばかりになることって多々あると思います。

早くコマンド入力を終えねば、コミットの時間に間に合いません。
周囲から心配されて、プレッシャーにしかならない要らない応援が、頭をオーバーヒートさせます。ミスを誘発し仕事が進まないが指だけがキーボードを連打している状態。

そんな折、機関車が走り出したのです。

ぽっぽーー

たった今まで真剣に真っ黒コンソールにコマンド入力していたはずなのに、機関車が画面内を通り過ぎたんです。

突然の機関車出現に圧倒され自分を取り戻した私は、lsの連打を止めることができました。意味のないls連打への戒めでしょうか。slコマンドを作られた人の頭の良さに脱帽します。

ちなみに、slを実行してこんな風に出てしまう場合は、残念ながらslコマンドがインストールされていません。

takk~$ sl
bash: sl: command not found
takk~$ 

どうしてもslが見たい人は

takk~$ sudo apt install sl

さて、連打が原因にせよ、なぜタッチミスがあったのでしょう。

key_ls
lsは、右手薬指でl、左手薬指でs、次に右手でENTERという順でタッチするので、より早くタッチしようとした時に、左手が右手を飛び越えることがあるようです。

一方cdコマンドは、こちらもlsと同じく2文字でlsよりもよく使いますが、左手のみでタッチします。しかも中指を連続して使いますので、タッチミスしにくいコマンドと言えます。
key_cd

sl

lsと同じように2文字でタッチミスのしやすいコマンドがあるか探してみましょう。
探すディレクトリは以下とします。
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin

~$ find -P /bin /sbin /usr/bin /usr/sbin \
> /usr/local/bin /usr/local/sbin |
> rev | cut -d\/ -f1 | rev | 
> sed -n '/^..$/p' |
> sort | uniq > 2cmd.txt
~$ pr -t5 2cmd.txt | expand
7z            df            iw            mv            sg
ab            dh            js            nc            sh
al            du            lc            nl            sn
ar            ed            ld            nm            ss
as            ex            ln            od            su
at            fp            lp            pc            tc
bc            gs            ls            pg            tr
cc            hd            lv            pr            ul
cp            id            m4            ps            vi
dc            io            mc            ri            wc
dd            ip            mt            rm            xz
~$ 

2文字のコマンドは結構多いのですね。
上記コマンドの解説です。findに探したいディレクトリを並べて、結果を取得します。
次に、結果をcutで列抽出しますが、cutコマンドで指定するフィールドの一番目を指定するため(つまりコマンド本体の名前)にrevを使っています。そうです。あまり使われないrevが可哀想なので無理やり使っています。
最後にsedで2文字のコマンドを選出しています。uniqは重複があった時の念の為に実施しています。

では、左手のキーを1、右手のキーを2に置換して、12または21でタッチするコマンドを抽出してみます。

~$ perl -ne 'chop;print;s/[qwertasdfgzxcvb]/1/g;s/[yuiophjklnm]/2/g;printf" %s\n",$_' 2cmd.txt | grep '12\|21'
al 12
cp 12
dh 12
du 12
fp 12
hd 21
id 21
iw 21
js 21
lc 21
ld 21
ls 21
lv 21
mc 21
mt 21
mv 21
nc 21
od 21
pc 21
pg 21
pr 21
ps 21
ri 12
rm 12
sh 12
sn 12
su 12
vi 12
~$ 

左右コンボのコマンド(左右の手を交互に使うコマンド)を並べてみました。当然lsも一覧の中にいますね。(どんなコマンドが一覧になるかは、何をインストールしているか次第です。)
こうして見てみると、ls以外のコマンドに関して、タッチミスはしたことがないかもしれません。lsのように引数なしで使うコマンドが少ないってのもありますが、lsほど使っていないってことが一番の理由だと思います。

つまり、lsコマンドは偉大です。考えて使わせていただきましょう。

コメント

タイトルとURLをコピーしました