23

Я знаю, что в Bash установка пробела перед тем, как команда не позволяет сохранить его в истории, что является эквивалентом zshell?

2 ответа2

32

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

setopt HIST_IGNORE_SPACE

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

HIST_IGNORE_SPACE

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

1

Если вы хотите более детальный контроль над тем, что добавлено в историю zshaddhistory , вы можете определить функцию 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 , так и из истории стрелок.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .