Команда history
выводит всю историю текущего сеанса. Подобно:
1 ls
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history
Для того, чтобы искать предметы, представляющие интерес, я могу труба history
с grep
как
history | grep ls
1 ls
6 ls
10 ls
Я также могу просмотреть последние 3 команды, такие как:
history 3
11 history
12 history | grep ls
13 history 3
Но как мне получить определенный диапазон истории? Например что-то вроде:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
bash
command-history
Слартибартфаст
источник
источник
x
команды, а затем передатьhead
.history | grep something
результаты команд, пронумерованных123 234 345
в истории , показаны, и я могу не знать номер последней выполненной команды (history
в данном случае). Моя последняя команда может быть пронумерована 400, 500 или как угодно. Итак, сначала я должен проверить это число, выяснить разницу, перечислить последниеx
команды, а затем передатьhead
Ответы:
Вместо этого
history
вы можете использоватьfc
, что позволит вам выбрать диапазон:источник
fc -l -16 -10
.Если вы должны использовать команду history, направьте ее через sed или awk:
В противном случае ответ cuonglm является лучшим вариантом.
источник
head
иtail
решит эту проблему еще менее изящно. Для диапазона 10-> 25 вам придется использоватьhistory | head 25 | tail 15
.Использование истории с grep в числах строк вокруг команды, которую я ищу, работает лучше всего для меня.
Например, я ищу то, что я сделал
ping mybox
, более или менее 20 строк.$ history | grep "ping mybox" 20325 ping mybox
Это строка,
20325
поэтому мне просто нужно отобразить строки, начинающиеся с номера в[20320..20339]
диапазоне.$ history | grep ^203[2-3][0-9]
источник