По умолчанию каждая команда, которую вы выполняете на терминале, сохраняется оболочкой (командным интерпретатором) в определенном файле, называемом файлом истории или историей команд оболочки
В Bash (наиболее популярной оболочке в Linux-системах) по умолчанию количество команд, сохраняемых в истории, составляет 1000, а в некоторых дистрибутивах Linux – 500.
Чтобы проверить размер истории в Bash, выполните эту команду:
$ echo $HISTSIZE
Чтобы увидеть старые команды, которые вы выполняли, вы можете использовать команду history для отображения истории команд оболочки:
$ history
Иногда вам может понадобиться запретить оболочке записывать команды в историю команд.
Это можно сделать следующим образом.
Удаление команды Linux из истории после выполнения
Вы можете немедленно удалить команду из истории оболочки после ее выполнения в командной строке, добавив к ней команду history -d $(history 1).
Подкоманда $(history 1) извлекает последнюю запись в истории в текущем терминальном сеансе, где 1 – это смещение, а опция -d помогает удалить ее.
Любая команда, выполняемая в обычном режиме, сохраняется в истории оболочки.
$ echo "This command is saved in history" $ history | tail
Однако, когда вы добавляете команду history -d $(history 1) к командной строке, она сразу же удаляется из истории оболочки, как показано на ниже:
$ echo "This command is not saved in history";history -d $(history 1) $ history | tail
Другой способ предотвратить сохранение команды в истории – это префикс команды с пробелом.
Но это полностью зависит от значения переменной оболочки $HISTCONTROL, определенной в файле запуска ~/.bashrc Bash.
Для работы этого метода она должна иметь одно из следующих значений: ignorespace или ignoreboth.
Вы можете проверить значение переменной $HISTCONTROL, как показано далее:
$ echo $HISTCONTROL или $ cat ~/.bashrc | grep $HISTCONTROL
Если вышеупомянутая переменная оболочки установлена, то любая команда с пробелом не сохраняется в истории:
$ echo "This command is not prefixed with space, it will be saved in history!" $ echo "This command is prefixed with space, it will not be saved in history!"
Вот еще несколько интересных статей об истории Bash и командах history:
- 🐧 Как включить временную метку в истории Bash на Linux
- 🐧 Как избежать повторяющихся записей в истории Bash Linux
- 🐧 Различные способы повторить вашу последнюю команду в Linux