Как просмотреть файл `.bash_history` через командную строку?

72

Я хочу просмотреть содержимое моего .bash_historyфайла, но не знаю, как туда добраться из командной строки.

isupportopensource
источник
7
Как насчетhistory | less
MadMike
2
Вы проверяли /home/username/.bash_history ?
Митч
2
NB: .bash_historyдобавляется только когда терминал закрыт.
Николас Ферхельст

Ответы:

56

Если вы хотите получить доступ к собственно самому файлу, просто используйте ваш любимый текстовый редактор (я использую , emacsно вы можете использовать plumaиз geditили vimили любых других ):

emacs ~/.bash_history

Это местоположение по умолчанию, если ваш файл истории. Если вы ничего не нашли там, возможно, вы изменили имя файла истории. Это хранится в $HISTFILEпеременной, поэтому распечатайте его, чтобы проверить его текущее значение:

echo $HISTFILE

Если вместо файла, вы просто хотите увидеть историю, вы можете запустить , historyкак @ minerz029 предложил. Команда без параметров просто выводит содержимое вашего последующее команды выполняется в текущей оболочке , которые еще не были записаны в этот файл с номерами строк.history$HISTFILE

Тердон
источник
49

Если вы на самом деле нужно вывод .bash_historyфайла, заменить historyс
cat ~/.bash_historyво всех приведенных ниже команд.

Если вам действительно нужны команды без цифр, используйте эту команду вместо history:

history | cut -d' ' -f 4-

в противном случае не будет никакой разницы (кроме случаев, когда вы используете другую оболочку).


Последние 15 команд

Вы можете использовать

history | tail -n 15

чтобы получить только последние 15 строк вашей истории с последним напечатанным последним (внизу).


В поисках команды

В качестве альтернативы используйте

history | grep "apt-get" | tail -n 15

получить последние 15 команд, содержащихся apt-getс последним выполненным напечатанным последним (внизу). Вы можете заменить apt-getлюбую команду (или аргумент команды), которую хотите найти (это может быть регулярное выражение).


Прокрутка истории

Вы можете использовать

history | tac | less

прокрутить все выполненные команды, начиная с самых последних вверху. Нажмите qдля выхода.

Точно так же используйте

history | grep "apt-get" | tac | less

прокрутить все команды, выполненные с " apt-get" в них (включая аргументы), начиная с самых последних вверху. Нажмите qдля выхода.

харакири
источник
15

В дополнение к отличному ответу minerz029.

Повторим: команда «history» печатает историю вместе с номером рядом с ней.

Вы можете направить вывод истории в grep, и т. Д.

Выход истории также показывает число слева от выхода. например

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

С этим номером вы можете повторно запустить команду.

например, для повторного запуска 473 я бы набрал в терминале

 admin@xen1~$ !473

затем нажмите клавишу ввода, чтобы повторить команду рядом с 473 в выводе истории.

Вы также можете осуществлять интерактивный поиск в истории команд в обратном направлении, печатая ctrl + rклавиши, а затем начинайте вводить часть содержимого команды, и она будет искать и заполнять ее. Когда вы нашли его, вы можете набрать его, чтобы повторить, или нажать [tab]клавишу, чтобы скопировать его в командную строку, чтобы сначала отредактировать команду.

Конечно, эти два последних варианта работают в оболочке bash. Я не уверен, работают ли эти функции в других оболочках. Но поскольку bash является оболочкой по умолчанию в Ubuntu, вы должны найти их там.

Мэтт Н
источник
1

введите описание изображения здесь

Вы можете попробовать историю в стиле «предложить окно» https://github.com/dvorka/hstr - она ​​читает историю Bash и обеспечивает быструю навигацию.

Мартин Дворжак
источник