Гид по технологиям

Управление историей команд в Linux

4 min read Linux Обновлено 22 Dec 2025
Управление историей команд в Linux
Управление историей команд в Linux

Два человека рассматривают историю команд в Linux

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

Что такое история команд в одной строке

История команд — это список ранее выполненных команд, который сохраняется в файле истории оболочки; управлять им можно через переменные окружения (HISTCONTROL, HISTIGNORE), встроенные команды (history, set) и конфигурационные файлы (~/.bashrc).

Быстрое руководство: основные команды

  • Просмотреть историю:
history
  • Очистить всю историю текущего сеанса:
history -c
  • Удалить конкретную запись по номеру:
history -d <номер_команды>
  • Временно отключить запись истории:
set +o history
  • Включить запись истории обратно:
set -o history
  • Запретить запись команд, начинающихся со пробела:
export HISTCONTROL=ignorespace
  • Исключить отдельные команды из истории:
export HISTIGNORE="history:pwd:cat"

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

Удаление всей истории

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

history -c

После этого не забудьте закрыть терминал или перезаписать ~/.bash_history, если требуется немедленно удалить записи, уже записанные в файл.

Удаление конкретных команд

  1. Сначала найдите номер команды в списке истории:
history

Или отфильтруйте по ключевому слову:

history | grep ifconfig
  1. Удалите запись по номеру:
history -d 1234

Обратите внимание: номера могут измениться после удаления или перезапуска оболочки.

Выполнить команду без записи в историю

Самый простой приём — начать команду с пробела, если включён параметр ignorespace:

export HISTCONTROL=ignorespace
# или добавить в ~/.bashrc
echo 'HISTCONTROL=ignorespace' >> ~/.bashrc

# пример: команда с ведущим пробелом (пробел перед echo важен)
 echo 'секретная команда'

Пример команды, начинающейся с пробела и не сохраняющейся в истории

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

echo 'обычная команда'

Просмотр истории команд в терминале

Альтернативно, можно временно отключить запись истории для текущего сеанса:

set +o history  # отключить логирование
# выполнить команды
set -o history  # включить логирование обратно

Отключение истории временно

Исключение повторяющихся записей и часто используемых команд

Чтобы не сохранять подряд идущие дубли, добавьте в ~/.bashrc:

echo 'HISTCONTROL=ignoredups' >> ~/.bashrc

Чтобы исключить набор часто используемых команд (pwd, ls, cd и т. п.), используйте HISTIGNORE:

export HISTIGNORE="history:pwd:cat:ls:cd"
# или для постоянного эффекта
echo 'HISTIGNORE="history:pwd:cat:ls:cd"' >> ~/.bashrc

HISTIGNORE поддерживает шаблоны с подстановками; команды, соответствующие шаблону, не попадут в историю.

Постоянное отключение истории

Чтобы полностью и постоянно отключить запись истории в Bash, можно добавить в ~/.bashrc:

echo 'set +o history' >> ~/.bashrc

Это решение грубое: вы потеряете все преимущества истории. Обычно лучше selectively исключать или применять ignorespace/ignoredups.

Где хранится история

  • Главный файл истории Bash: ~/.bash_history
  • Переменные, которые влияют: HISTSIZE (количество команд в оперативной истории), HISTFILESIZE (максимум строк в файле истории), HISTCONTROL, HISTIGNORE.

Пример: добавить в ~/.bashrc разумные пределы

# хранить 10 000 команд в памяти и в файле
export HISTSIZE=10000
export HISTFILESIZE=10000

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

  1. Решите, нужен ли вам полный лог (для аудита) или выборочная запись (для приватности).
  2. Для приватности: используйте ignorespace и/или добавляйте set +o history в сеанс при необходимости.
  3. Для удобства: используйте ignoredups и настроенные HISTIGNORE.
  4. Для удаления инцидентных записей: найдите номер через history и удалите history -d <номер>.

Чек-лист для системного администратора

  • Настроить HISTSIZE и HISTFILESIZE в соответствии с политикой компании.
  • Добавить HISTIGNORE для шумных команд (ls, cd, pwd и т. п.).
  • Рассмотреть политику удаления чувствительных команд и инструкций по реагированию при утечке.
  • Документировать правила для пользователей (что можно, что нельзя включать в историю).

Шаблон рекомендуемых настроек ~/.bashrc (пример)

# Настройки истории
export HISTSIZE=10000
export HISTFILESIZE=10000
# Не сохранять команды с ведущим пробелом
export HISTCONTROL=ignoredups:ignorespace
# Исключить шумные команды из истории
export HISTIGNORE="history:pwd:ls:cd:clear:exit"

Скопируйте и скорректируйте под ваши требования безопасности и удобства.

Когда этот подход не сработает

  • Если команды уже записаны в файл истории и были прочитаны/скопированы — удаление локальной записи не устраняет следы на других логирующих системах (журналы, audIT, SIEM).
  • Некоторые оболочки или терминалы могут использовать собственные механизмы истории; настройки Bash не повлияют на них.
  • Если у вас есть принудительное логирование на уровне сервера (например, sudo с логами или аудиторские агентов), отключить ~/.bash_history не достаточно для скрытия активности.

Альтернативные подходы к управлению историей

  • Использовать сторонние инструменты для навигации по истории: McFly (нейронная замена reverse-i-search), fzf + history integration, или zsh с расширенными возможностями historii.
  • Для корпоративной среды: централизованное логирование команд и фильтрация на уровне сервера с чёткой политикой хранения и удаления.

Краткая сравнительная таблица (идея выбора)

  • Нужно удобство и быстрота восстановления команд: оставить историю, настроить ignoredups.
  • Нужна приватность по умолчанию: включить ignorespace и обучить пользователей.
  • Полная невидимость локально: set +o history, но помнить о внешних логах.

Короткое резюме

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

Завершая, если вы хотите удобный и умный поиск по истории — попробуйте McFly как альтернативу стандартному reverse-i-search.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как использовать инструмент «Штамп» в Photoshop
Ретушь

Как использовать инструмент «Штамп» в Photoshop

tmpmail в Linux: временные email из терминала
Linux

tmpmail в Linux: временные email из терминала

Отключить Chat Heads в Messenger на Android
Мобильные советы

Отключить Chat Heads в Messenger на Android

Как делиться файлами в Google Drive — легко и безопасно
Инструкции

Как делиться файлами в Google Drive — легко и безопасно

Как найти пароль Wi‑Fi быстро
Сеть

Как найти пароль Wi‑Fi быстро

Разделить текст в Google Sheets
Google Sheets

Разделить текст в Google Sheets