Подтвердить что ты не робот

История zsh слишком коротка

Когда я запускаю history в Bash, я получаю нагрузку результатов (1000+). Однако, когда я запускаю history оболочку zsh, я получаю только 15 результатов. Это делает историю grepping в zsh в основном бесполезной. Мой файл .zshrc содержит следующие строки:

HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory

Как я могу исправить zsh, чтобы сделать мою историю оболочки более полезной?


ОБНОВЛЕНИЕ

Если в zsh я вызываю history 1, я получаю всю свою историю, как и в Bash с history. Я мог бы псевдоним команду получить тот же результат, но мне интересно, почему history ведет себя по-разному в zsh и в Bash.

4b9b3361

Ответ 1

OP уже ответила в обновлении вопроса: history ведет себя по-разному в bash, чем в zsh:

Короче:

  • ЗШ:
    • history перечислены только записи 15 последних записей
    • history 1 перечислены все - см. ниже.
  • bash:
    • history перечислены записи all.

К сожалению, передача числового операнда в history ведет себя по-другому:

  • ЗШ:
    • history <n> показывает все записи , начиная с <n>, поэтому history 1 показывает все записи.
    • (history -<n> - обратите внимание на - - показывает самые последние записи <n>, поэтому поведение по умолчанию эффективно history -15)
  • bash:
    • history <n> показывает <n> последние записи.
    • (bash history не поддерживает список из номера записи, вы можете использовать fc -l <n>, но должна существовать конкретная запись <n>, иначе команда не будет выполнена).

Дополнительная справочная информация:

  • В zsh history фактически (не на самом деле) псевдоним для fc -l: см. man zshbuiltins
    • Для многих связанных с историей функций см. man zshall
  • В bash history есть собственная команда, синтаксис которой отличается от fc -l
    • Смотрите: man bash
  • Оба bash и zsh поддерживают fc -l <fromNum> [<toNum>], чтобы перечислить заданный диапазон записей истории:
    • bash: должна существовать конкретная запись <fromNum>.
    • Команда zsh: успешно выполняется до тех пор, пока в явном или подразумеваемом диапазоне попадает менее 1 записи.
    • Таким образом, fc -l 1 работает в zsh для возврата всех записей истории, тогда как в bash обычно этого не будет, поскольку запись # 1 обычно больше не существует (но, как указано, вы можете использовать history без аргументы для перечисления всех записей в bash).

Ответ 2

#set history size
export HISTSIZE=10000
#save history after logout
export SAVEHIST=10000
#history file
export HISTFILE=~/.zhistory
#append into history file
setopt INC_APPEND_HISTORY
#save only one command if 2 common are same and consistent
setopt HIST_IGNORE_DUPS
#add timestamp for each entry
setopt EXTENDED_HISTORY   

это моя настройка, и она работает