Справочник

Команда history в Linux: как посмотреть и повторить прошлые команды

Bash запоминает команды, которые вы набирали. Их можно посмотреть, найти и выполнить снова, не печатая заново. Ниже — как пользоваться историей и как убрать из неё то, что хранить не нужно.

Обновлено 11.10.2026≈ 4 мин чтения
Содержание 10

Что сделать прямо сейчас

  1. Подключитесь к серверу — инструкция.
  2. Нажмите на клавиатуре стрелку вверх: в строке появится прошлая команда. Ещё раз — команда перед ней. Enter выполнит её снова.
  3. Наберите history — увидите список прошлых команд с номерами слева.
  4. Чтобы увидеть только последние 20, наберите history 20.

Как найти команду

СпособКак делать
поиск Ctrl+Rнажмите Ctrl+R и начните печатать часть команды, например nginx. Bash покажет последнюю подходящую команду
ещё раньшенажмите Ctrl+R ещё раз — покажется более старая подходящая команда
выполнить найденноеEnter
исправить перед запускомEsc: команда останется в строке, её можно поправить и нажать Enter
отменить поискCtrl+G — строка вернётся, как была

Все команды, где есть слово nginx, покажет history | grep nginx. О поиске по тексту подробно — Команда grep.

Как повторить команду

ЗаписьЧто выполнит bash
!!прошлую команду
sudo !!прошлую команду, но через sudo — когда забыли его написать
!125команду номер 125 из списка history
!-2команду, набранную две команды назад
!systemctlпоследнюю команду, которая начиналась с systemctl
!$последнее слово прошлой команды, например имя файла
^nignx^nginxпрошлую команду, заменив в ней nignx на nginx

Будьте осторожны с !-подстановками для команд, которые удаляют файлы или перезагружают сервер: проверьте номер в history, прежде чем запускать.

Последнее слово прошлой команды можно вставить и клавишами: Alt+. (точка) или Esc, а затем точка. Тогда его видно до нажатия Enter.

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

ЧтоКак устроено
файл истории~/.bash_history в домашней папке, у каждого пользователя свой
когда пишется в файлкогда вы выходите из сеанса; до выхода команды хранятся в памяти
сколько команд помнитстолько, сколько в переменной HISTSIZE; если её не задали в файлах настройки, bash ставит 500
сколько строк в файлепо переменной HISTFILESIZE

Текущие значения покажут команды echo $HISTSIZE и echo $HISTFILESIZE.

Если открыто два окна с сервером, файл при выходе может перезаписать то окно, которое закрыли последним, и команды из первого пропадут. Чтобы bash дописывал историю в конец файла, а не перезаписывал его, нужна настройка shopt -s histappend. Проверить её — shopt histappend: ответ покажет on или off. Сохранить историю прямо сейчас, не выходя, — history -a.

Время у команд

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

export HISTTIMEFORMAT='%F %T '

Теперь history покажет дату и время перед каждой командой, например 2026-10-11 14:05:31. Чтобы настройка действовала и после переподключения, допишите эту строку в конец файла ~/.profile — как править файл, в инструкции Редактор nano. У команд, набранных до этой настройки, точного времени нет.

Как удалить команду из истории

Если вы набрали команду с паролем, удалите её из истории:

  1. Найдите её номер: history | tail -n 20.
  2. Удалите строку по номеру, например 312: history -d 312.
  3. Запишите исправленную историю в файл: history -w.
КомандаЧто делает
history -d 312удалить команду номер 312
history -d 300-310удалить команды с 300 по 310
history -cочистить всю историю в памяти
history -wзаписать историю из памяти в файл, заменив его
history -c && history -wочистить и историю, и файл

Без history -w команда пропадёт только из памяти, а в файле может остаться.

Как не сохранять команду

Bash не сохраняет команды, которые начинаются с пробела, если в переменной HISTCONTROL есть ignorespace или ignoreboth. Проверьте: echo $HISTCONTROL.

Значение HISTCONTROLЧто не попадает в историю
ignorespaceкоманды, начатые с пробела
ignoredupsповтор той же команды подряд
ignorebothи то, и другое
erasedupsпрежние копии команды удаляются, остаётся последняя

Если ответ пустой, сохраняется всё. Чтобы включить, допишите в ~/.profile строку export HISTCONTROL=ignoreboth.

Надёжнее не набирать пароли в командах совсем: программы, которые их просят, умеют спрашивать пароль отдельно, и тогда он не попадает в историю.

Ошибки и как их исправить

Что видноЧто значитЧто сделать
команд прошлого сеанса нет в историиони не записались в файл или его перезаписало другое окносохраняйте вручную history -a; о двух окнах
команда с ! в тексте ведёт себя странноbash понял ! как подстановку из историиберите текст в одинарные кавычки: echo 'Готово!'
!125 выполнил не ту командуномера сдвинулись после удаления или очисткисначала посмотрите history, затем запускайте
удалённая команда снова в историине записали файлпосле history -d выполните history -w
команда с пробелом в начале сохраниласьв HISTCONTROL нет ignorespaceкак включить

Источники

  • Справка bash для Ubuntu 24.04 — команда history и её ключи -c, -d, -a, -w, переменные HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL и HISTTIMEFORMAT, раздел HISTORY EXPANSION, поиск Ctrl+R.

Сверено 11 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 11.10.2026