Вопрос или проблема
Я хочу просмотреть содержимое моего файла .bash_history
, но не знаю, как добраться до него через командную строку.
Если вы хотите получить доступ к самому файлу, просто используйте свой любимый текстовый редактор (я использую emacs
, но вы можете использовать pluma
, gedit
или vim
, или любой другой):
emacs ~/.bash_history
Это место по умолчанию для вашего файла истории. Если вы не найдете здесь ничего, возможно, вы изменили имя файла истории. Это содержится в переменной $HISTFILE
, поэтому выведите её значение, чтобы проверить текущее название:
echo $HISTFILE
Если вместо файла вы просто хотите увидеть историю команд, вы можете запустить history
, как предложил @minerz029. Команда history
без опций просто выводит содержимое вашего $HISTFILE
, за которым следуют команды, выполненные в текущей оболочке и ещё не записанные в этот файл, с номерами строк.
Если вам действительно нужен вывод из файла .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 для выхода.
В дополнение к отличному ответу minerz029.
Повторюсь – команда ‘history’ выводит историю вместе с номером рядом с каждой командой.
Вы можете направить вывод команды history в grep, less и другие утилиты.
Вывод history также показывает номер слева рядом с выводом. например
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
затем нажал клавишу enter, чтобы повторить команду рядом с 473 в выводе истории.
Вы также можете искать интерактивно назад в истории команд, набрав ctrl + r
, затем начав набирать часть содержимого команды, и она будет найдена и заполнена. Когда вы её найдете, вы можете нажать enter, чтобы повторить её, или нажать [tab]
, чтобы скопировать её в строку команд для редактирования.
Конечно, эти последние две опции работают в оболочке bash. Я не уверен, работают ли эти функции в других оболочках. Но так как bash – это оболочка по умолчанию в Ubuntu, вы должны найти их там.
Вы можете попробовать историю в стиле “suggest box” https://github.com/dvorka/hstr – она читает историю Bash и позволяет быстро перемещаться.
Если вы хотите вывести историю команд из любого файла истории, расположенного не в ~/.bashrc
, вы также можете сделать следующее:
(history -cr "$path_to_hist_file" ; history)
Ответ или решение
Просмотр файла .bash_history
через командную строку может быть очень полезным процессом для пользователей, специализирующихся в IT и работающих с оболочкой Bash. Это дает возможность отслеживать ранее выполненные команды, помогая анализировать рабочий процесс, восстанавливать ранее введенные команды и выявлять ошибки в написании скриптов. Рассмотрим подробнее, как можно осуществить просмотр этого файла и какие инструменты могут быть использованы в этих целях.
Теория
Файл .bash_history
— это текстовый файл, в который Bash записывает историю команд, выполненных пользователем. По умолчанию, этот файл находится в домашней директории пользователя и именуется как ~/.bash_history
. Это базовое место хранения, однако его местоположение и имя могут быть изменены путем конфигурирования переменной окружения HISTFILE
, которая определяет текущий файл истории.
Пример
Если вы хотите открыть файл истории команд с использованием текстового редактора, это можно сделать, используя команду в командной строке. Например, команда:
emacs ~/.bash_history
откроет файл в редакторе Emacs. Однако, в зависимости от предпочитаемого редактора, вы можете использовать и другие команды, такие как vim ~/.bash_history
, nano ~/.bash_history
, gedit ~/.bash_history
, и так далее.
Чтобы убедиться в том, что вы работаете с правильным файлом истории, стоит проверить значение переменной HISTFILE
. Сделать это можно с помощью команды:
echo $HISTFILE
Эта команда выведет актуальный путь к файлу истории, если он был изменен.
Применение
Если ваша цель состоит в том, чтобы быстро просмотреть историю без использования текстового редактора или если вам требуется дополнительная фильтрация, существует несколько команд, которые могут облегчить этот процесс.
-
Команда
history
: Простая командаhistory
выведет текущую историю команды с номерами строк, что может быть полезно для мгновенного доступа к последним событиям:history
Она отображает команды, еще не записанные в
.bash_history
, что полезно для просмотра команд текущего сеанса. -
Использование
cat
: Если вам нужно вывести содержимое файла.bash_history
напрямую, используйте:cat ~/.bash_history
Это представит весь документ в виде длинного списка.
-
Фильтрация
grep
: Для поиска определенных команд в истории можно использовать комбинацию сgrep
:history | grep "apt-get"
Эта команда найдет все упоминания
apt-get
. -
Пролистывание истории: Использование
less
позволяет пролистывать историю:history | less
-
Последние 15 команд: Чтобы вывести только последние 15 команд, можно использовать:
history | tail -n 15
-
Интерактивный поиск: Bash позволяет выполнять интерактивный поиск по истории команд с помощью сочетания клавиш
Ctrl + R
, что мгновенно находит и выполняет команды. -
Повторение команд: Используются номера строк из вывода
history
для быстрого повторения команд, например:!473
Эти методики полезны для быстрого ревизирования и повторного выполнения команд, анализа потока работы и обеспечения надёжности в программировании. Убедитесь, что принимаете во внимание конфиденциальность и безопасность данных в вашем .bash_history
, поскольку он может содержать чувствительную информацию, такую как команды, обеспечивающие доступ к системе.
Таким образом, работа с .bash_history
предоставляет множество возможностей для IT-специалистов, стремящихся к оптимизации процессов и улучшению программирования в оболочке Bash. Обладая этими инструментами и методами, вы сможете более продуктивно взаимодействовать с командной строкой и поддерживать эффективный рабочий процесс.