Команда history в Linux (история Bash)
Команда history в Linux – это мощный инструмент для пользователей, работающих с оболочкой Bash. Она хранит информацию о ранее выполненных командах, позволяя пользователям просматривать, вспоминать и даже повторно выполнять команды, не набирая их снова. Это может значительно повысить производительность, поскольку экономит время и снижает вероятность ошибок при повторном наборе длинных команд.
Что такое история Bash?
Bash, как и многие другие оболочки, хранит записи о введенных вами командах в файле истории. В большинстве дистрибутивов Linux эта история хранится в файле .bash_history в домашней директории каждого пользователя (~/.bash_history). По умолчанию каждая команда, введенная в оболочку, добавляется в этот файл по завершении сеанса, что позволяет пользователям повторно обращаться к командам, введенным в предыдущих сеансах.
Базовое использование команды history
Команда history проста в использовании и предоставляет различные способы просмотра и взаимодействия с историей команд. Вот некоторые из наиболее распространенных способов использования:
- Отобразить историю команд:
Выполнение команды history без каких-либо аргументов отобразит список последних введенных вами команд с номером рядом с каждой из них.history
Это отобразит последние n команд, где n обычно составляет около 500 или 1000 в зависимости от конфигурации вашей системы.
- Укажите количество команд:
Вы можете ограничить количество отображаемых команд, указав число. Например, чтобы просмотреть последние 10 команд:history 10
Вызов команд из истории
Команда history также позволяет легко вызывать и повторно использовать ранее выполненные команды:
- Использование символа ! (восклицательный знак):
Это позволяет повторно выполнять команды непосредственно из истории:- !! – Повторное выполнение последней выполненной команды.
!!
- !n – Выполнение команды в позиции n в списке истории.
!42
Повторное выполнение команды, находящейся под номером 42 в истории.
- !string – Находит последнюю команду, начинающуюся с string, и выполняет ее.
!git
Это приведет к выполнению последней команды, начинающейся с git.
- !! – Повторное выполнение последней выполненной команды.
- Использование клавиш со стрелками:
Вы можете использовать клавиши со стрелками вверх и вниз для прокрутки предыдущих команд прямо в терминале. Это особенно полезно для быстрого поиска последних команд.
Редактирование и изменение истории
- Удаление определенных записей:
Вы можете удалить определенную команду из истории, используя команду history -d, за которой следует номер строки:history -d 42
Это приведет к удалению команды в строке 42 в списке истории.
- Очистить всю историю:
Чтобы удалить все команды из файла истории, используйте:history -c
Это очистит историю для текущего сеанса. Чтобы также очистить сохраненную историю в ~/.bash_history, перезапишите этот файл:
history -c && > ~/.bash_history
Настройка истории Bash
Поведение истории можно настроить с помощью переменных окружения и параметров конфигурации в файлах ~/.bashrc или ~/.bash_profile:
- HISTSIZE:
Эта переменная определяет, сколько команд будет храниться в памяти во время сеанса. Например, чтобы сохранить 1000 команд:export HISTSIZE=1000
- HISTFILESIZE:
Эта переменная задает количество строк (команд), которые сохраняются в файле ~/.bash_history. Например:export HISTFILESIZE=2000
Это означает, что 2000 команд будут сохранены в файле истории даже после выхода из системы.
- HISTCONTROL:
Эта переменная определяет способ хранения команд. Общие опции включают:- ignoredups – предотвращает добавление дубликатов команд в историю.
- ignorespace – Команды, начинающиеся с пробела, не добавляются в историю.
- ignoreboth – Комбинирует ignoredups и ignorespace.
Пример настройки HISTCONTROL на игнорирование дубликатов:
export HISTCONTROL=ignoredups
- HISTTIMEFORMAT – ФОРМАТ ВРЕМЕНИ:
Чтобы включить временную метку в каждую запись истории, установите HISTTIMEFORMAT:export HISTTIMEFORMAT="%F %T "
Это добавит к каждой записи истории дату (%F) и время (%T).
Поиск в истории
- Обратный поиск с помощью Ctrl r:
Один из самых эффективных способов поиска команды в истории – использование Ctrl r. Начните вводить часть команды, и Bash будет находить совпадающие команды по мере ввода. Повторное нажатие Ctrl r приведет к циклическому просмотру предыдущих совпадений. - Grep с историей:
Вы также можете использовать grep для поиска в истории:history | grep git
Это покажет все команды, содержащие слово git.
Заключение
Команда history является основополагающей частью работы с оболочкой Bash, предлагая способ отслеживания прошлых команд и оптимизации рабочих процессов. Благодаря возможности вспоминать, искать и настраивать историю команд, она помогает сделать работу в командной строке более эффективной и удобной. Освоив историю и связанные с ней возможности, пользователи смогут значительно ускорить свою работу в среде Linux.