Полное руководство по команде history в Linux

Linux 命令大全Энциклопедия команд Linux

history — чрезвычайно полезная встроенная команда в Linux-системах. Она записывает всю историю команд, которые пользователи выполняли в терминале. Эта функция особенно ценна в следующих сценариях:

  1. Отслеживание операций: Просмотр ранее выполненных команд
  2. Быстрое повторное использование: Не нужно заново вводить длинные команды
  3. Диагностика проблем: Проверка записей о работе системы
  4. Повышение эффективности: Быстро выполняйте повторяющиеся задачи с помощью команд из истории

Когда вы вводите команды в терминале, Bash сохраняет их в памяти и записывает в~/.bash_historyфайл (при конфигурации по умолчанию).


Базовый синтаксис и использование

Базовый синтаксис команды history очень прост:

history [选项] [参数]

Распространённые формы

1. Просмотр всей истории:

history

2. Просмотр последних N записей:

history 10  # 显示最近10条命令

3. Очистка всей истории:

history -c

4. Удаление конкретной записи истории (например, удаление записи 1010):

history -d 1010

Подробное объяснение распространённых опций и параметров

Команда history поддерживает несколько полезных опций:

Опция Описание Пример
-c Очистить всю историю history -c
-d Удалить запись истории в указанной позиции history -d 1005
-a Немедленно записать историю из памяти в файл истории history -a
-n Прочитать непрочитанные записи истории из файла истории history -n
-r Прочитать содержимое файла истории в текущий сеанс history -r
-w Записать текущую историю в файл истории history -w

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

1. Быстрое выполнение команд истории

Пример

!n        # Выполнить n-ю команду из истории
!!        # Выполнить предыдущую команду
!string   # Выполнить последнюю команду, начинающуюся с string

Пример:

Пример

!1024     # Выполнить команду под номером 1024 в истории
!!        # Повторно выполнить предыдущую команду
!vim      # Выполнить последнюю команду, начинающуюся с vim

2. Поиск команд в истории

ИспользованиеCtrl+Rвы можете выполнить обратный поиск по командам истории; введите часть ключевого слова, чтобы найти соответствующую команду.

3. Подстановка команд из истории

Пример

^old^new  # Заменить old на new в предыдущей команде и выполнить

Пример:

Пример

$ cat file1.txt
$ ^file1^file2  # Эквивалентно выполнению cat file2.txt

4. Отображение временных меток команд

В~/.bashrcДобавьте следующую конфигурацию для отображения времени выполнения команд:

Пример

export HISTTIMEFORMAT="%F %T "

Затем выполните:

Пример

source ~/.bashrc

После этогоhistoryкоманда будет отображать время выполнения каждой команды.


Настройка переменных окружения

Поведение команды history можно настроить с помощью переменных окружения:

Переменная Описание Рекомендуемое значение
HISTSIZE Количество команд истории, хранящихся в памяти 5000
HISTFILESIZE Количество команд, хранящихся в файле истории 10000
HISTCONTROL Управляет способом записи истории ignoredups:erasedups
HISTIGNORE Указывает команды, которые не нужно записывать "ls:cd:pwd:exit"

Пример конфигурации (добавьте в~/.bashrc):

Пример

export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups:erasedups
export HISTIGNORE="ls:cd:pwd:exit"
export HISTTIMEFORMAT="%F %T "

Практические сценарии применения

Сценарий 1: Восстановление забытых команд

Пример

history | grep "apt install"

Сценарий 2: Подсчёт наиболее часто используемых команд

Пример

history | awk '{CMD[$2]++;count++;} END {for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

Сценарий 3: Резервное копирование записей истории

Пример

history -a  # Убедитесь, что последние команды были записаны в файл
cp ~/.bash_history ~/command_history_backup_$(date +%F).txt

Примечания

  1. Конфиденциальность и безопасность: Записи истории могут содержать конфиденциальную информацию (например, пароли); защитите их соответствующим образом
  2. Проблема нескольких терминалов: Разные сеансы терминала по умолчанию не обмениваются историей в реальном времени
  3. Потеря истории: Аварийное завершение может привести к тому, что команды не сохранятся
  4. Обработка больших файлов: Чрезмерно большие файлы истории могут влиять на производительность

Итоги и упражнения

  1. Просмотрите историю команд и найдите 5 последних использованных команд git

    history | grep git | tail -5
  2. Настройте среду bash так, чтобы записи истории включали временные метки и игнорировали повторяющиеся команды

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

    alias backup_history='cp ~/.bash_history ~/history_backups/history_$(date +%Y%m%d_%H%M%S).txt'
  4. Попробуйте использоватьCtrl+Rдля поиска сложной команды, которую вы использовали ранее.

Освоив команду history, вы сможете значительно повысить эффективность работы в терминале Linux, сократить избыточный ввод и лучше управлять историей операций командной строки.

Linux 命令大全Энциклопедия команд Linux

Другие расширения