Есть ли способ сохранить все мои введенные команды терминала и просмотреть их как историю в журнале?
Это делается автоматически. 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^
.
Просто введите :
history > print.txt
Новый файл под названием print.txt будет создан в вашем текущем рабочем каталоге.
Возможно, вы захотите попробовать https://github.com/dvorka/hstr который позволяет просто просмотр, навигация и фильтрация вашей истории Bash в стиле "предложить поле":
Это может быть легко связанный к Ctrl-r и/или Ctrl-s
Я тоже часто просто хочу получить эти последние команды. Для публикации в моих заметках по разработке или, ну, на сайтах stackexchange, подобных этим... Это оказалось очень полезным, удаляя ненужные номера строк:
history | cut -c 8- | tail
или, если вам нравится это как псевдоним, номера строк удаляются и сразу же отступаются (так же, как это необходимо для уценки кавычек кода)
alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\} / /gi'"