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

sl

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

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

lsを含めUNIX(Linux)コマンドは、連打するものではなく考えて入力するべきですが、仕事で煽られるとその焦りから頭より先に手を動かしてしまい……、いや、むしろ頭は止まっていると言った方が良いでしょう。とにかくcdとlsの連打をするばかりになっていました。こうなるとミスを誘発し仕事が進みません。そんな折、絶妙に機関車が走り出したのです。
突然の機関車の出現に圧倒され自分を取り戻した私は、lsの連打を止めることができました。意味のないls連打への戒めでしょうか。slコマンドを作られた人の頭の良さに脱帽します。

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

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

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

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コマンドは偉大です。考えて使わせていただきましょう。

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

  1. Hey, kilelr job on that one you guys!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA