この分野では、fzfpecoが有名ですが、もっと粒度の低い(?)再利用をしたい場合のメモ

1. 直前の最後の引数を再利用(!$)

1
2
3
4
$ diff .ssh/config /home/username/.ssh/config

$ chmod 600 !$
chmod 600 /home/username/.ssh/config

2. 直前の全ての引数を再利用(!*)

1
2
3
4
$ diff .ssh/config /home/username/.ssh/config

$ cp !*
cp .ssh/config /home/username/.ssh/config

3. 1と2の合わせ技

1
2
3
4
5
6
7
$ diff .ssh/config /home/username/.ssh/config

$ cp !*
cp .ssh/config /home/username/.ssh/config

$ chmod 600 !$
chmod 600 /home/username/.ssh/config

4. 直前のコマンド全てを再利用(!!)

1
2
3
4
5
6
7
$ ls -l /root
ls: ディレクトリ '/root' を開くことが出来ません: 許可がありません

$ sudo !!
sudo ls -l /root
合計 0
$

5. historyから再利用

1
2
3
4
5
6
7
8
$ history | tail -n 3
423 ls -l /root
424 sudo ls -l /root
425 history | tail -n 3

$ !423
ls -l /root
ls: ディレクトリ '/root' を開くことが出来ません: 許可がありません

;&で通常のコマンド実行と同じ扱いでも実行出来ます

1
2
3
4
5
$ !423;!424
ls -l /root
ls: ディレクトリ '/root' を開くことが出来ません: 許可がありません
sudo ls -l /root
合計 0