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

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

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

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

231
задан 27 May 2017 в 18:14

10 ответов

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

Просто помещает пространство перед командой. 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"

Пространства Это покажет, что список ранее выполнил команды в этом формате:

casa@portátil:~$  history | grep pkill
  302  pkill $
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

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

history -d <number> Пространства, где <number> число записи для удаления записи.
можно вставить то число с Ctrl + Сдвиг + V <час>

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

0
ответ дан 27 May 2017 в 18:14

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

0
ответ дан 27 May 2017 в 18:14

shopt -uo history должен сделать это лучше всего.

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

можно стать входящими на с shopt -so history (-s, и -u установлены и сброшены соответственно).

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

0
ответ дан 27 May 2017 в 18:14

Другой способ уничтожить текущую оболочку, не регистрируясь в файл истории состоит в том, чтобы сделать:

kill -9 $

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

0
ответ дан 27 May 2017 в 18:14

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

unset HISTFILE

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

Для инвертирования на той же сессии (все изменения будут зарегистрированы)

HISTFILE=$HOME/.bash_history
0
ответ дан 27 May 2017 в 18:14

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

Для оставления позади строки, не выполняя его не забудьте не совершать нападки Возврат ( Входят ). То, что я делаю, возвратиться к новейшей строке в истории через Esc > .

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

Примечание: Вы can’t постоянно изменяют записи от предыдущих сессий этот путь. Те изменения не будут применены к HISTFILE в конце сессии.

0
ответ дан 27 May 2017 в 18:14

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

 chattr +i .bash_history
0
ответ дан 27 May 2017 в 18:14

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

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

0
ответ дан 27 May 2017 в 18:14

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

1
ответ дан 28 May 2017 в 04:14
  • 1
    О, это верно также: D я предположил, что он имел в виду -- и - перед опциями: D – Rinzwind 17 August 2016 в 23:41

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

1
ответ дан 28 May 2017 в 04:14

Другие вопросы по тегам:

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