пятница, 18 февраля 2011 г.

bash - обращение к нужной команде из history

Как известно, список использованных команд в bash'e можно посмотреть, набрав команду history:
$ history
   1  echo "test"
   2  echo "Hello World"
   3  find . -mtime +5
   ..
.
Периодически, приходится искать в history длинные и сложные команды, например, такие как вот эта:
find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
Выводит список самых тяжелых директорий в текущей.
Раньше я искал ее так:
$  history | grep find
  231  find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
Копировал мышкой и взаново вбивал в адресную строку. Однако все изменилось, когда я узнал, что можно все делать намного проще. Достаточно лишь набрать ![номер команды], и она отрабатываает заново:
$ !231
find . -mindepth 1 -maxdepth 1 -type d -exec du -bs {} \; | sort -n -r | awk '{print $2}' | head -10 | xargs du -hs
.....