Просмотр истории команд, запущенных в терминале


75

Есть ли способ сохранить все мои набранные команды терминала и просмотреть их как историю в журнале?

Ответы:


92

Это автоматически делается. Bash хранит ваши команды в ~/.bash_history. Если вы хотите посмотреть историю, либо распечатайте вывод этого файла, используя один из

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Или вы можете использовать встроенную команду bash:

history

Чтобы очистить историю, удалите файл и очистите временную историю:

rm ~/.bash_history && history -c

Размер истории по умолчанию составляет 500 команд. Однако вы можете увеличить это значение, добавив в ~/.bashrcфайл строку для установки HISTSIZEпеременной:

HISTSIZE=<number of entries, -1 for unlimited>

Это вступит в силу не сразу, а только для новых сеансов. Чтобы применить это, повторно введите .bashrcфайл:

. ~/.bashrc

или запустить HISTSIZE=...в текущем сеансе.


1
По умолчанию он сохраняет только последние 500 команд. Вы можете изменить номер для сохранения, но вам нужно только случайно запустить его с настройками по умолчанию один раз, и вся ваша старая история исчезнет.
Касперд

Это не работает для меня на Ubuntu 16
Nam G VU

31

Вы можете набрать historyна терминале, чтобы просмотреть все предыдущие выполненные команды.


Вы можете обрезать вывод до нескольких строк (где 5 - количество строк):

history 5

Если вы хотите просматривать только команды, содержащие строку (то есть mv), вы можете сделать это:

history | grep mv

Вы можете вызвать команду, набрав, !а затем номер записи.

Допустим, у меня есть такая история:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Для запуска mkdir fooвы можете напечатать !2.
  • Чтобы выполнить последнюю команду, вы можете использовать !-1или!!
  • Для запуска предпоследнего можно использовать !-2

Если вы запускаете команду, которая дает сбой из-за того, что ей нужны привилегии root (то есть touch /etc/foo), вы можете использовать ее sudo !!для запуска последней команды от имени root.


  • Если вы наберете, !manвы выполните последнюю команду, которая начинается сman
  • Если вы введете !?man?его, он выполнит последнюю содержащую команду man(не обязательно в начале строки)

Если у вас есть опечатка в команде, вы можете исправить это следующим образом. Допустим , что я печатаю cat .bash_hi, чтобы заменить .bash_hiна .bash_historyмне нужно только набрать ^hi^history^.


Источник: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps


2
Также вы можете нажать Ctrl-R, чтобы выполнить поиск в хосте при вводе.
Mhmd

historyработаю для меня на Ubuntu 16. Спасибо и должно быть принято!
Нам G VU

9

Просто введите:

history > print.txt

В вашем текущем рабочем каталоге будет создан новый файл с именем print.txt.


3
Отрезает команды после 1000
Антуан

3

Я часто просто хочу эти последние команды тоже. Чтобы публиковать свои заметки по разработке или, ну, в общем, такие сайты для обмена стеками ... Это оказалось очень полезным, удалив ненужные номера строк

history | cut -c 8- | tail

или, если вам нравится псевдоним, номера строк удаляются и сразу же с отступом (так же, как это необходимо для уценки кода)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"

1
Проще в использовании fc: askubuntu.com/a/839642/158442
Muru

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.