Я часто использую Терминал, и иногда я выполняю команды, которые я не хочу видеть другими, но больше команд, которые, если бы я случайно попал на стрелку и случайно выполнил, вызвали бы много проблем.
Поэтому мне интересно, есть ли или я могу создать какой-то терминал в «режиме инкогнито», который позволил бы мне при выполнении определенной команды прекратить запись моей истории, а затем начать запись только после того, как я выполню снова начать запись истории и выйти из режима инкогнито, или я просто перезапущу Терминал?
Потому что позже я пойду и удаляю вещи из своего .bash_history
, когда было бы намного легче, если бы я мог остановить их запись там, во-первых, или, по крайней мере, заставить их попытаться записать это где-то, где этого просто не было бы разрешено, и в конечном итоге не будет записывать его.
.bash_history
. (Ubuntu 15.04 испортил Терминал, кОтветы:
Запустите команду, не помещая ее в историю:
Просто поставьте пробел перед командой. Bash будет игнорировать команды с пробелом:
Пример: Space
echo "Some secret text"
Примечание. Это работает, только если для
HISTCONTROL
переменной задано значениеignorespace
илиignoreboth
.Отключить историю временно:
set +o history
или Spaceshopt -uo history
отключить историю.set -o history
или,shopt -so history
чтобы включить его снова.Отключить историю для текущего сеанса (не запомнит никаких команд из сеанса):
Примечание. Команды будут видны до Upтех пор, пока вы не закроете терминал.
Удалить команду из истории:
Бегать Space
history | grep "part of your secret command"
Он покажет список ранее выполненных команд в следующем формате:
Выберите номер записи слева от команды. Вы можете скопировать его с Ctrl+ Shift+C
Запустите, Space
history -d <number>
где<number>
номер записи, чтобы удалить запись.Вы можете вставить это число с помощью Ctrl+ Shift+V
Другие интересные ответы:
источник
history -d
удаление строки, это приведет к удалению содержимого строки, но вы никогда не сможете удалить тот факт, что вы запустилисьhistory -d
(если только вы не использовали егоset +o history
перед запускомhistory -d
)unset HISTFILE
Подход работает также задним числом для всех команд , которые не были записаны в.bash_history
еще.Вы можете просто удалить историю одного конкретного сеанса терминала , добавив команду
history -cw
после работы.Не закрывайте терминал перед подачей этой команды.
источник
shopt -uo history
должен сделать это лучше всего.Обнуление
HISTFILE
переменных (и других) не остановит запись вашей Upистории, просто не вытолкнет ее на диск. Это может или не может быть положительным для вас, но, учитывая, что вы упомянули об этом, я думаю, вы хотите что-то лучше. Изменениеshopt
настройки истории останавливает запуск всего механизма истории.Вы можете снова включить регистрацию с помощью
shopt -so history
(-s
и, соответственно,-u
они установлены и не установлены).Обратите внимание, что сама команда, вероятно, будет записана в журнал, поэтому добавьте в нее пробел, чтобы остановить ее добавление в историю, прежде чем очищать переменную.
источник
Другой способ убить текущую оболочку без входа в файл истории - это сделать:
Это заставляет bash (и, возможно, другие оболочки) посылать сигнал SIGKILL самому себе, убивая его на месте и не давая ему что-либо записать на диск.
источник
Чтобы временно отключить историю команд для текущего сеанса, вы можете временно удалить переменную среды HISTFILE.
пока сеанс активен, вы можете обращаться к истории как обычно, но она не будет сохранена на диск.
Чтобы отменить в том же сеансе (все изменения будут записаны)
источник
HISTFILE
повторной установки в текущем сеансе? Если вы отмените изменение (даже после выполнения секретных команд), они будут сохранены в истории при выходе.Вы можете изменить строки истории в текущем сеансе оболочки. Если вы вернетесь назад к истории (например, с помощью Upили Ctrl+ P) и измените строку, не выполняя ее , будет сохранена только измененная версия строки. Вы можете изменить его так, как вам нравится; Хороший выбор будет включать использование Ctrl+, Uчтобы полностью очистить строку или использование, Esc#чтобы поместить
#
символ комментария в начале.Чтобы оставить строку без выполнения, не забудьте нажать Return( Enter). Что я делаю, так это возвращаюсь к новейшей линии в истории через Esc>.
(Вместо того, чтобы Escследовать >, в большинстве терминалов вы можете удерживать Altи нажимать >; то же самое относится к Esc#предложению выше.)
Примечание. Таким способом нельзя навсегда изменить записи из предыдущих сеансов. Эти изменения не будут применены к
HISTFILE
концу сеанса.источник
Вы также можете сделать .bash_history только для чтения. Я бы сначала очистил файл, а затем сделал:
источник
Вы можете выполнить конфиденциальные команды в сеансе экрана, а затем уничтожить сеанс, когда закончите.
С другой стороны, вы можете сохранить этот сеанс экрана живым, но отключенным, и получать к нему доступ только тогда, когда вы действительно хотите иметь возможность стрелку вверх к другим опасным командам.
источник
Лично я использую
mksh
, и эта оболочка по умолчанию не имеет файла истории. Это означает, что вы можете запустить альтернативную оболочку, такую какmksh
илиdash
(которая, кстати, поставляется по умолчанию), чтобы запустить команду, которую пользователи не хотят видеть, и выйти из нее после завершения.bash
история будет только записывать, что вы запустили альтернативную оболочку и все.источник
Вы можете также использовать терминальный мультиплексор , такие как
tmux
,screen
. Так что подtmux
илиscreen
история не будет сохранена.источник