bashで最近使ったコマンド内の最後のWORDを入力する

結論

bashでは、Esc+.で直前のコマンド履歴から最後のWORDを入力できる。

解説

例えば、こんな操作をしたい場合。

cat foo.bar | very/long/path/extremely-long-filename
less very/long/path/extremely-long-filename

最初からtee使えよ、という話はさておいて。
2行目でもう一度この長いパスを打つのは馬鹿らしい。履歴を戻って不要な部分を削除するのは悪くない考えだが、キーを目的の位置まで移動させたりするのがまだ面倒に感じられる。

そんなときに、Esc+.、即ちAltを押しながら或いはEscを押して離してから.(ピリオド)を押すと、直前のコマンド履歴から最後のWORDをカーソル位置に入力できる。この場合であれば、もちろん very/long/path/extremely-long-filename となる。
従って、less と入力した後にEsc+.を入力すれば、一瞬で目的達成というわけである。素晴らしい。

なお、WORDと書いたのはVim的なあれで、要するにスペースやタブ文字などの空白で区切られた部分ということである。また、コマンドがそもそも1WORDである場合は、そのコマンドがそのまま入力される。

連打することも可能

cd /var/log
ls
ls -al

例えばこのように入力した後、Esc+.を連打すると、1回目の押下で-al、2回目でls、3回目で/var/logが入力される。この際、入力値は追記されるのではなく、押下の度に切り替わっていく。
「何手前だか忘れたけど、コピーしたはずのファイルにアクセスしたい」というときにはそのパスが出てくるまで連打していれば良いわけである。
地味に便利。