Терминал «режим инкогнито»?

Я использую Terminal много, и иногда я запускаю команды, которые не являются вещами, которые я не хочу видеть другими, но больше команд, которые, если я случайно соскользнул и случайно выполнил, вызовут массу проблем.

Итак, мне интересно, есть ли какой-либо режим «инкогнито» терминала, который позволил бы мне после выполнения определенной команды прекратить запись моей истории, а затем начать запись только после того, как я либо снова запустите запись истории записи и выйдите из режима «инкогнито», или я просто перезапустил терминал?

Потому что я нахожусь позже, когда собираюсь и удаляю вещи из моего .bash_history, когда было бы намного проще, если бы я мог остановить его запись там в первую очередь или, по крайней мере, попробуйте записать его где-то там, где ему просто не разрешат, и просто не записал бы его.

224 голоса | спросил user364819 18 Maypm15 2015, 17:53:46

10 ответов


258

Выполнить команду, не помещая ее в историю:

Просто поставьте пробел перед командой. Bash игнорирует команды с добавленным пространством:

Пример: Пробел echo "Some secret text"

Примечание. Это работает, только если для переменной HISTCONTROL установлено значение ignorespace или ignoreboth.


Временно отключить историю:

  • Выполнить Пробел set +o history или Пробел shopt -uo history, чтобы отключить историю.
  • Запустите set -o history или shopt -so history, чтобы включить его снова.

Отключить историю для текущего сеанса (не запомните никаких команд из сеанса):

unset HISTFILE

Примечание. Вы сможете увидеть команды, нажимая Вверх , пока вы не закроете терминал.


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

Выполнить Пробел history | grep "part of your secret command"

Он покажет список ранее запущенных команд в этом формате:

[email protected]átil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

Выберите номер записи слева от команды. Вы можете скопировать его с помощью Ctrl + Shift + C

Запустите Пробел history -d <number>, где <number> - это номер записи, чтобы удалить запись.
Вы можете вставить этот номер с помощью Ctrl + Shift + V


Другие интересные ответы:

ответил user183551 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 05 Sep 2017 06:37:49 +0300 2017, 06:37:49
39

Вы можете просто удалить историю одного сеанса терминала, добавив команду history -cw после работы. Не закрывайте терминал, прежде чем давать команду.

ответил Moithil Biswas 19 Maypm15 2015, 18:01:24
28

shopt -uo history должен делать все возможное.

Принудительные переменные HISTFILE (и др.) не остановят историю регистрации Up , она просто не будет выталкивать ее на диск. Это может быть или не быть позитивным для вас, но, учитывая, что вы упомянули об этом, я думаю, вы хотите что-то лучше. Изменение настройки истории shopt останавливает запуск всего механизма истории.

Вы можете снова войти в систему с помощью shopt -so history (-s и -u) соответственно.)

Обратите внимание, что сама команда, вероятно, будет зарегистрирована, поэтому добавьте ее с пробелом, чтобы остановить ее добавление в историю, прежде чем очистить переменную.

ответил Oli 18 Maypm15 2015, 18:04:17
17

Другой способ убить текущую оболочку без входа в файл истории:

kill -9 $$

Это приводит к тому, что bash (и, возможно, другие оболочки) посылает сигнал SIGKILL самому себе, убивая его на месте и не позволяя ему что-либо записывать на диск.

ответил dolt 20 Mayam15 2015, 01:00:20
13

Чтобы временно отключить историю команд для текущего сеанса, вы можете временно отключить переменную среды HISTFILE.

unset HISTFILE

В то время как сессия активна, вы можете получить доступ к истории, как обычно, но она не будет сохранена на диске.

Отменить в том же сеансе (все изменения будут записаны)

HISTFILE=$HOME/.bash_history
ответил Bruni 18 Maypm15 2015, 18:02:04
10

Вы можете изменить строки истории в текущем сеансе оболочки. Если вы пройдетесь по истории (например, Вверх или Ctrl + P ) и измените строку без ее выполнения , будет сохранена только модифицированная версия строки. Вы можете изменить его любым способом; хорошие варианты включают в себя использование Ctrl + U , чтобы полностью очистить строку или использовать Esc # , чтобы поставить # в начале.

Чтобы оставить строку без ее выполнения, не забудьте нажать Return ( Enter ). Я верю в новейшую строку в истории через Esc > .

(Вместо Esc , за которым следует > , в большинстве терминалов вы можете удерживать Alt и нажать > ; то же самое относится к предложению Esc # выше.)

Примечание. . Вы не можете постоянно изменять записи предыдущих сеансов. Эти изменения не будут применены к HISTFILE в конце сеанса.

ответил echristopherson 21 Mayam15 2015, 03:12:30
6

Вы также можете сделать .bash_history только для чтения. Сначала я должен был удалить файл, а затем сделать:

 chattr +i .bash_history
ответил Webtm 20 Mayam15 2015, 06:24:44
5

Вы можете выполнить чувствительные команды в сеансе экрана, а затем уничтожить сеанс, когда закончите.

В качестве альтернативы вы можете сохранить этот сеанс экрана живым, но отсоединенным, и только получить доступ к нему, когда вы действительно хотите, чтобы стрелка вверх была направлена ​​против опасных команд.

ответил keag 21 Maypm15 2015, 23:46:19
1

Лично я использую mksh, и эта оболочка по умолчанию не имеет файла истории. Это означает, что вы можете запускать альтернативную оболочку, такую ​​как mksh или dash (который по умолчанию по умолчанию), чтобы запустить команду, которую вы не хотите видеть пользователям, и выйти когда-то сделали. bash история запишет только то, что вы запустили альтернативную оболочку, и вот она.

ответил Sergiy Kolodyazhnyy 12 42015vEurope/Moscow11bEurope/MoscowThu, 12 Nov 2015 22:31:28 +0300 2015, 22:31:28
1

Вы также можете использовать терминальный мультиплексор, например, tmux, screen. Поэтому в tmux или screen история не будет сохранена.

ответил vusan 6 PMpWed, 06 Apr 2016 13:50:17 +030050Wednesday 2016, 13:50:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132