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

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

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

cat ~/.bash_historyless ~/.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=... в вашей текущей сессии.

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


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

history 5

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

history | grep mv

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

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

1 ls -la2 mkdir foo3 mv bar.txt foo
  • Бежать mkdir foo, вы можете ввести !2.
  • Чтобы выполнить последнюю команду, вы можете использовать !-1 или !!
  • Чтобы запустить предпоследний, вы можете использовать !-2

Если вы выполняете команду, которая завершается ошибкой, потому что для нее требуются права суперпользователя (т.е. 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

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

history > print.txt

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

Возможно, вы захотите попробовать https://github.com/dvorka/hstr который позволяет просто просмотр, навигация и фильтрация вашей истории Bash в стиле "предложить поле":

enter image description here

Это может быть легко связанный к Ctrl-r и/или Ctrl-s

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

history | cut -c 8- | tail

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

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