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

Вопрос или проблема

Я хочу просмотреть содержимое моего файла .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

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

Применение

Если ваша цель состоит в том, чтобы быстро просмотреть историю без использования текстового редактора или если вам требуется дополнительная фильтрация, существует несколько команд, которые могут облегчить этот процесс.

  1. Команда history: Простая команда history выведет текущую историю команды с номерами строк, что может быть полезно для мгновенного доступа к последним событиям:

    history

    Она отображает команды, еще не записанные в .bash_history, что полезно для просмотра команд текущего сеанса.

  2. Использование cat: Если вам нужно вывести содержимое файла .bash_history напрямую, используйте:

    cat ~/.bash_history

    Это представит весь документ в виде длинного списка.

  3. Фильтрация grep: Для поиска определенных команд в истории можно использовать комбинацию с grep:

    history | grep "apt-get"

    Эта команда найдет все упоминания apt-get.

  4. Пролистывание истории: Использование less позволяет пролистывать историю:

    history | less
  5. Последние 15 команд: Чтобы вывести только последние 15 команд, можно использовать:

    history | tail -n 15
  6. Интерактивный поиск: Bash позволяет выполнять интерактивный поиск по истории команд с помощью сочетания клавиш Ctrl + R, что мгновенно находит и выполняет команды.

  7. Повторение команд: Используются номера строк из вывода history для быстрого повторения команд, например:

    !473

Эти методики полезны для быстрого ревизирования и повторного выполнения команд, анализа потока работы и обеспечения надёжности в программировании. Убедитесь, что принимаете во внимание конфиденциальность и безопасность данных в вашем .bash_history, поскольку он может содержать чувствительную информацию, такую как команды, обеспечивающие доступ к системе.

Таким образом, работа с .bash_history предоставляет множество возможностей для IT-специалистов, стремящихся к оптимизации процессов и улучшению программирования в оболочке Bash. Обладая этими инструментами и методами, вы сможете более продуктивно взаимодействовать с командной строкой и поддерживать эффективный рабочий процесс.

Оцените материал
Добавить комментарий

Капча загружается...