Як запобігти збереженню в історію команди в zshell?


Відповіді:


37

Використовуйте параметр HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

людина zshoptions

HIST_IGNORE_SPACE

Видаліть командні рядки зі списку історії, коли перший символ у рядку є пробілом або коли один із розширених псевдонімів містить провідний пробіл. Зауважте, що команда зберігається у внутрішній історії до введення наступної команди, перш ніж вона зникне, що дозволяє коротко повторно використовувати або відредагувати рядок. Якщо ви хочете, щоб це зникло відразу, не вводячи іншої команди, введіть пробіл і натисніть клавішу return.


Я хотів би зробити це для всіх команд набраних-в-терміналі-вікно-з-відкрито в OSX. Бо коли ти зрозумієш, що ти гавкаєш неправильне дерево.
Dan Rosenstark

2
І тоді, для команд, які я хотів запобігти, я використав псевдоніми і встановив пробіл: alias jrnl = "jrnl"
Sagar Jauhari

2
@Yar kill -9 це оболонка (якщо вона не робить файл історії за рядком у рядку)
Michael Shigorin

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.