Linux где хранится history

📑 Команда history или работа с историей введенных команд

Иногда при работе в Linux Ubuntu/Mint в терминальном режиме нам нужно выполнять одни и те же команды несколько раз. Это занимает очень много времени и порождает ошибки при вводе, особенно если эти команды очень длинные.

К счастью, Bash имеет хорошее решение этой проблемы — историю bash. Используя механизм истории bash, ранее выполненные команды могут легко извлекаться и выполняться без повторного ввода команды. Linux хранит историю командной строки каждого пользователя в домашнем каталоге.

По умолчанию команда bash — history отображает список ранее набранных команд с номерами строк. Но вы также можете получить историю команд с указанием даты и времени и повторно запускать эти команды различными способами.

Настройки истории команд

В файле .bashrc вашей домашней директории существует несколько переменных, которые используются для управления записями истории команд. Bash хранит историю команд двумя способами — история может быть сохранена в файле и в оперативной памяти.

Переменная HOSTFILE используется для установки местоположения и имени файла истории. По умолчанию историческая информация хранится в файле .bash_history. Сколько команд может быть сохранено в файле, задается с помощью переменной HISTFILESIZE (в принцепе эта переменная задаёт размер файла истории), а количество команд текущего сеанса может храниться в памяти — с помощью переменной HISTSIZE.

Откройте файл .bashrc в любом редакторе и выясните настройки этих параметров по умолчанию. Здесь для редактирования этого файла используется текстовый редактор nano.

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000

В соответствии с содержимым этого файла значение HISTFILESIZE по умолчанию равно 2000, а HISTSIZE — 1000. Вы можете изменить эти значения по своему выбору.

Если вы не хотите, чтобы исполняемые команды записывались в историю, вы можете переменную окружения HISTSIZE сделать равной 0, после чего команды перестанут записываться в историю:

Включить/отключить перезапись файла истории

Для каждого нового сеанса файл истории дописывается текущими командами истории в конце сеанса. Для этого существует запись в файле .bashrc:

# append to the history file, don't overwrite it shopt -s histappend

Чтобы проверить текущую настройку перезаписи истории можно не открывать файл в редакторе, а выполнить команду:

Если вы хотите хотите добавлятьть новые записи истории в конец файла, выполните следующую команду:

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

Читайте также:  Canon scanner driver linux

Тогда на проверку настройки выдаст:

$ shopped histappend histappend off

Показать список ранее выполненных команд bash

Чтобы получить список выполненых команд, выполните следующую основную команду

Вы можете получить определенное количество истории, указав номер с помощью команды истории. Следующая команда извлекает 3 последние выполненные команды из истории.

Список истории конкретной команды можно получить с помощью команды команда history. Например, следующая команда возвращает список истории всех команд «ls».

Выполнение команды из истории bash

Вы можете легко выполнить любую команду из истории, указав номер строки с символом «!». Следующая команда выполнит команду строки № 17 из файла истории

Если использовать два восклицательных знака, будет повторена предыдущая команда:

Для того, чтобы вывести историю команд с игнорированием дублей достаточно использовать значение erasedups переменной окружения HISTCONTROL:

$ export HISTCONTROL=ignoreboth:erasedups $ history 1 ls … 344 export HISTCONTROL=ignoreboth:erasedups 345 history

Для очистки истории команд достаточно использовать параметр -c команды history:

  • Методы монтирования дисков в Linux
  • Введение в диспетчер логических томов (LVM)
  • Локальное туннелирование с помощью SSH: несколько примеров
  • Альтернативы SSH, которые в некоторых случаях лучше оригинала
  • Полный набор лучших и современных консольных программ для Linux
  • Установка ZoneMinder на Ubuntu 22.04 (Linux Mint 21) и nginx
  • Устанавливаем GIMP в Ubuntu 22.04 (Linux Mint 21)
  • Устанавливаем qBittorrent в Linux Ubuntu/Mint
  • Исправляем ошибку — network unreachable resolving ‘./NS/IN’: 2001:503:c27::2:30#53
  • Установка remmina из ppa в Ubuntu 22.04 или Mint 21
  • Исправляем: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg)
  • Что такое зомби-процесс в Linux?
  • Хитрости командной строки Bash, которые помогут вам работать быстрее
  • Команда ls в Linux — подробно и с примерами
  • Команда mkdir в Linux — подробно и с примерами
  • Список непечатаемых символов Linux, MacOS или Windows
  • Команда chmod в Linux — подробно и с примерами
  • Команда cat и примеры её использования в Linux
  • Как установить приложение Yarock Music Player
  • Запуск нескольких команд Linux одной составной командой
  • Файловый менеджер nnn
  • Версия системы и версия ядра Ubuntu/Mint
  • Запуск команд на удаленном сервере через SSH
  • Цветовые схемы и внешний вид MC (midnight commander)
  • Переключение кодировок в MC
  • Шпаргалка по горячим клавишам для файловых панелей MC (midnight commander)
  • Ошибка NO_PUBKEY. Как найти GPG-ключ и добавить его в базу apt системы Ubuntu
  • Установка драйвера wifi Asus wl-167g v3 (rtl8192) для Ubuntu 16.04 и 18.04
  • Как настроить wifi из командной строки в Ubuntu
  • Изменение имени сетевого интерфейса в Ununtu/Mint
  • nmon — удобный инструмент для мониторинга Linux систем
  • Ошибка: 502 bad gateway — connect() to unix:/run/php/php-fpm.sock failed (11: Resource temporarily unavailable)
  • Команда history или работа с историей введенных команд
  • Шпаргалка по архиватору 7z (7-Zip) в Linux Ubuntu/Mint
  • Преобразование видео от 1080p до 720p с наименьшими потерями с использованием ffmpeg
  • Как посмотреть все доступные шрифты в терминале (CLI)?
  • Команда id — найти UID пользователя или GID
  • Лучшие рекомендации по повышению безопасности для серверов OpenSSH
  • Разрешения файлов директории .SSH
  • Настройка Nginx FastCGI Cache для сокращения времени отклика сервера WordPress
  • Как получить реальный IP-адрес пользователя в nginx за обратным прокси-сервером nginx
  • Чем отличается прямой прокси от обратного прокси
  • Руководство по iptables (Iptables Tutorial 1.1.19)
  • Настройка автозапуска скриптов в Linux Ubuntu/Mint
  • Устанавливаем оболочку bash про умолчанию
  • SOCS5 прокси сервер DANTE — установка и настройка
  • Сервис online настройки параметров сервера nginx
  • nmblookup — аналог команды Windows nbtstat для Linux.
  • Inxi — программа вывода информации о системе и железе в Linux
  • dnstop — мониторинг и анализатор DNS-трафика
Читайте также:  Посмотреть исходный код linux

Источник

6 Авг 2018 06:08:00 | 0 comments

Настраиваем ведение истории команд в Linux

Всем известно, что Bash ведет историю всех команд, введенных в консоли, но по умолчанию некоторые настройки хранения этой истории заданы не сильно рациональными.

Давайте сделаем ведение и чтение истории более удобным, а так же рассмотрим вопрос очистки истории команд.

Исходные данные: Debian 9

Как известно, история команд в Linux хранится в файле ~/.bash_history

Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла.
500 команд — это довольно мало, Вы легко можете потерять полезную команду которую выполнили скажем неделю назад.

Чтобы увеличить размер хранимой истории необходимо в файл ~/.bashrc добавить строки:

export HISTSIZE=10000 export HISTFILESIZE=10000

HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);
HISTFILESIZE — максимальное количество строк, содержащееся в файле истории ~/.bash_history (по умолчанию — 500);

Теперь у нас будет храниться история последних 10 тыс. команд.

Для применения настроек нужно выполнить:

Идем дальше, если Вы выполните команду history, то заметите, что выполненные подряд одни и те же команды повторяются в истории. Это жутко неудобно, давайте отключим такое поведение. Для этого в файл ~/.bashrc добавим строку:

export HISTCONTROL=ignoreboth:erasedups

Опция HISTCONTROL контролирует каким образом список команд сохраняется в истории.
ignorespace — не сохранять строки начинающиеся с символа
ignoredups — не сохранять строки, совпадающие с последней выполненной командой
ignoreboth — использовать обе опции ‘ignorespace’ и ‘ignoredups’
erasedups — удалять ВСЕ дубликаты команд с истории

Не забываем выполнить source ~/.bashrc для применения настроек на лету.

Следующая полезная настройка отвечает за игнорирование определенных команд при добавлении в историю, это HISTIGNORE.

Читайте также:  Чем отличается линукс от виндовс кратко

Давайте не будем сохранять в истории команды ls, ps и history с доп. опциями. Для этого в файл ~/.bashrc добавим строку:

export HISTIGNORE='ls:ps:history*'

Не забываем выполнить source ~/.bashrc для применения настроек на лету.

По умолчанию, Bash записывает историю команд в ~/.bash_history только при завершении сессии. Если Ваша сессия будет отключена некорректно, то как правило история команд в текущем сеансе не сохраниться — это неудобно. Чтобы это исправить нужно добавить в ~/.bashrc следующую строку:

Как Вы уже заметили, вывод истории команд не учитывает дату и время выполнения этой команды, а иногда бывает очень нужно понимать, когда же Вы выполнили эту команду. Но все можно поправить, чтобы добавить дату к списку команд нужно изменить формат вывода истории, для этого в ~/.bashrc нужно добавить строку:

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: '

Не забываем выполнить source ~/.bashrc для применения настроек на лету.

И в конце, все вышеописанные опции можно добавить в ~/.bashrc с помощью одной команды:

cat > ~/.bashrc export HISTSIZE=10000 export HISTFILESIZE=10000 export HISTCONTROL=ignoreboth:erasedups PROMPT_COMMAND='history -a' export HISTIGNORE='ls:ps:history*' export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: ' EOT source ~/.bashrc

Иногда случаются ситуации, когда необходимо очистить историю команд Linux. Например, Вы случайно ввели в консоле команду, содержащую пароль в открытом виде. В этом случае Вам потребуется либо удалить всю историю, либо только определенную ее часть.

Если нужно удалить конкретную строку в истории, то выполните:

Для удаления всей истории команд выполните:

Если нужно очистить историю команд только для текущей сессии, то выполните:

Следует обратить внимание, что если Вы сохраняете историю сразу по факту выполнения команды (настройка PROMPT_COMMAND=’history -a’), а не по выходу из сессии как это предусмотрено по умолчанию, то полную очистку истории указанными выше способами (опции -c и -r) Вы не сделаете, история в файле ~/.bash_history сохраниться. Тогда для полной очистки истории команд нужно очистить файл ~/.bash_history, для этого выполните:

и закройте текущую сессию, тогда история будет очищена полностью.

По умолчанию, история команд включена всегда и все введенные команды можно использовать повторно не затрачивая времени на их набор. Но при желании функцию ведения истории можно временно отключить. В Bash история команд в текущей сессии отключается с помощью команды:

Для включения ведения истории команд в текущей сессии выполните:

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.

Источник

Оцените статью
Adblock
detector