Терминал "режим инкогнито"?
Я часто использую Терминал, и иногда я выполняю команды, которые я не хочу видеть другими, но больше команд, которые, если бы я случайно попал на стрелку и случайно выполнил, вызвали бы много проблем.
Поэтому мне интересно, есть ли или я могу создать какой-то терминал в "режиме инкогнито", который позволил бы мне при выполнении определенной команды прекратить запись моей истории, а затем начать запись только после того, как я выполню снова начать запись истории и выйти из режима инкогнито, или я просто перезапущу Терминал?
Потому что позже я пойду и удаляю вещи из моего .bash_history
, когда было бы намного легче, если бы я мог остановить его запись там, во-первых, или, по крайней мере, заставить его попытаться записать его где-нибудь, где ему просто не разрешили бы, и в итоге просто не записал бы его.
10 ответов
Запустите команду, не помещая ее в историю:
Просто поставьте пробел перед командой. Bash будет игнорировать команды с пробелом:
Пример: пробелecho "Some secret text"
Примечание: это работает только если HISTCONTROL
переменная установлена в ignorespace
или же ignoreboth
,
Отключить историю временно:
- Run Space
set +o history
или пространствоshopt -uo history
отключить историю. - Бежать
set -o history
или жеshopt -so history
чтобы включить его снова.
Отключить историю для текущего сеанса (не запомнит никаких команд из сеанса):
unset HISTFILE
Примечание: вы сможете видеть команды, нажимая вверх, пока вы не закроете терминал.
Удалить команду из истории:
Run Spacehistory | grep "part of your secret command"
Он покажет список ранее выполненных команд в следующем формате:
casa@portátil:~$ history | grep pkill
302 pkill $$
467 pkill gone-cal
468 pkill actionaz
500 pkill chrome
550 pkill super
Выберите номер записи слева от команды. Вы можете скопировать его с помощью Ctrl+Shift+C
Run Spacehistory -d <number>
где <number>
номер записи для удаления записи.
Вы можете вставить это число с помощью Ctrl+Shift+V
Другие интересные ответы:
Вы можете просто удалить историю одного конкретного сеанса терминала, добавив команду history -cw
после работы. Не закрывайте терминал перед подачей команды.
shopt -uo history
должен сделать это лучше всего.
Nuking HISTFILE
(и др.) переменные не остановят запись вашей истории Up, она просто не вытолкнет ее на диск. Это может или не может быть положительным для вас, но, учитывая, что вы упомянули об этом, я думаю, вы хотите что-то лучше. Изменение shopt
настройка истории останавливает запуск всего механизма истории.
Вы можете снова включить регистрацию с помощью shopt -so history
(-s
а также -u
установлены и не установлены соответственно).
Обратите внимание, что сама команда, вероятно, будет записана в журнал, поэтому добавьте в нее пробел, чтобы остановить ее добавление в историю, прежде чем очищать переменную.
Другой способ убить текущую оболочку без входа в файл истории - это сделать:
kill -9 $$
Это заставляет bash (и, возможно, другие оболочки) посылать сигнал SIGKILL самому себе, убивая его на месте и не давая ему что-либо записать на диск.
Чтобы временно отключить историю команд для текущего сеанса, вы можете временно удалить переменную среды HISTFILE.
unset HISTFILE
пока сеанс активен, вы можете обращаться к истории как обычно, но она не будет сохранена на диск.
Чтобы отменить в том же сеансе (все изменения будут записаны)
HISTFILE=$HOME/.bash_history
Вы можете изменить строки истории в текущем сеансе оболочки. Если вы вернетесь назад к истории (например, с помощью Up или Ctrl+P) и измените строку, не выполняя ее, будет сохранена только измененная версия строки. Вы можете изменить его так, как вам нравится; Хороший выбор будет включать использование Ctrl+U, чтобы полностью очистить строку или использование Esc#, чтобы поставить #
комментарий персонажа в начале.
Чтобы оставить строку без выполнения, помните, что не следует нажимать Return (Enter). Что я делаю, так это возвращаюсь к самой новой строке в истории через Esc>.
(Вместо Esc с последующим >> в большинстве терминалов вы можете удерживать Alt и нажимать >; то же самое относится к предложению Esc# выше.)
Примечание. Таким способом нельзя навсегда изменить записи из предыдущих сеансов. Эти изменения не будут применены к HISTFILE
в конце сеанса.
Вы также можете сделать.bash_history только для чтения. Я бы сначала очистил файл, а затем сделал:
chattr +i .bash_history
Вы можете выполнить конфиденциальные команды в сеансе экрана, а затем уничтожить сеанс, когда закончите.
С другой стороны, вы можете сохранить этот сеанс экрана живым, но отключенным, и получать к нему доступ только тогда, когда вы действительно хотите иметь возможность стрелку вверх к другим опасным командам.
Лично я пользуюсь mksh
и эта оболочка по умолчанию не имеет файла истории. Это означает, что вы можете запустить альтернативную оболочку, такую как mksh
или же dash
(который по умолчанию идет между прочим), чтобы запустить команду, которую пользователи не хотят видеть, и завершить работу, как только это будет сделано. bash
история будет только записывать, что вы запустили альтернативную оболочку и все.
Вы также можете использовать терминальный мультиплексор, такой как tmux
, screen
, Так под tmux
или же screen
история не будет сохранена.