Как предотвратить сохранение команды в zshell в истории?


Ответы:


37

Используйте опцию HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

человек жопций

HIST_IGNORE_SPACE

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


Я хотел бы сделать это для всех команд, набранных в терминальном окне с момента открытия в OSX. Потому что, когда вы понимаете, что вы лаете не на то дерево.
Дэн Розенстарк

2
И затем, для команд, которые я хотел предотвратить, я использовал псевдонимы и ставил перед ними пробел: alias jrnl = "jrnl"
Сагар Джаухари,

2
@ Яр убил -9 в этой оболочке (если она не записывает файл истории строки за строкой)
Майкл Шигорин

1
@MichaelShigorin Спасибо! kill -9 $$действительно фантастично избежать всех команд, введенных в текущем терминальном сеансе, сохранять в истории.
Джеффри Лебовски

2
@CMCDragonkai Вы могли бы unset HISTFILEдо вашего блока команд. HISTFILEПосле этого вам нужно будет выполнить сброс или открыть новую оболочку, чтобы сохранить в своей истории нужные вам команды.
Чонси Гарретт

2

Если вы хотите более детальный контроль над тем, что добавлено в историю ZSH, вы можете определить zshaddhistoryфункцию в .zshrc. Следующее определение использует регулярное выражение для определения шаблона, который следует игнорировать:

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

Обратите внимание, что поведение man zshoptsснизу HIST_IGNORE_SPACEвсе еще присутствует:

Обратите внимание, что команда сохраняется во внутренней истории до тех пор, пока не будет введена следующая команда, прежде чем она исчезнет, ​​что позволит вам кратко повторно использовать или редактировать строку.

Таким образом, чтобы проверить это, вы должны были бы нажать дополнительно [Enter]. Это удаляет команду как из выходных данных history, так и из истории стрелок..

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.