История команд в Zsh

Как Zsh отслеживает историю команд?

Я вижу два файла в моем домашнем каталоге: .zhistory и .zsh_history . В чем разница между ними? Кажется, что файлы содержат всю мою историю. Заставляет ли Zsh добавлять строки к одному из них навсегда ? Разве это не заставило бы историю искать слишком медленно?

Могу ли я безопасно сделать эти файлы символическими ссылками на другое место? (например, репозиторий git для отслеживания изменений в истории)

One Solution collect form web for “История команд в Zsh”

Zsh сохраняет строки ввода (возможно, с информацией о времени) в файле, указанном переменной HISTFILE . Это должно быть абсолютное имя файла (иначе оно будет интерпретироваться по отношению к любой директории, текущей в то время).

Zsh не имеет встроенного значения по умолчанию для HISTFILE . В дистрибутив zsh входит мастер установки для новых пользователей, у которого есть значение ~/.histfile , поэтому это то, что пользователи zsh получают по умолчанию. Oh-my-zsh поставляется с HISTFILE=.zhistory preset. Таким образом, похоже, что вы пробовали zsh как с настройкой по умолчанию, так и с oh-my-zsh. Проверьте свой .zshrc (или даты файла), чтобы узнать, какой из них вы используете.

Как zsh открывает файл, и поэтому, что происходит, если это символическая ссылка, зависит от нескольких параметров.

  • Если установлена ​​одна из опций append_history (установлена ​​по умолчанию), inc_append_history или share_history или когда история сохранена явно с помощью fc -AI , zsh добавляется к существующему файлу.
    Обратите внимание, что даже в этих настройках zsh иногда перезаписывает файл, как описано ниже, чтобы обрезать его до размера.
  • В противном случае, если установлен параметр hist_save_by_copy (он устанавливается по умолчанию с zsh 5.0, но не существует в 4.2), zsh записывает временный файл и затем перемещает его на место после завершения. В этом случае, если файл истории был символической ссылкой, новый файл заменяет символическую ссылку.
  • В противном случае zsh перезаписывает существующий файл на месте.

Вместо того, чтобы указывать zsh на символическую ссылку, установите HISTFILE в любом месте файла истории.

Сколько строк истории сохранено, настраивается через переменные HISTSIZE и SAVEHIST . HISTSIZE – это максимальное количество строк, которые хранятся в сеансе, а SAVEHIST – максимальное количество строк, хранящихся в файле истории.

Чтобы вообще сохранить какую-либо историю, вам нужно установить как HISTFILE и SAVEHIST , поскольку значение SAVEHIST по умолчанию равно 0. Возможно, вы захотите также увеличить HISTSIZE ( HISTSIZE с zsh 5.0, значение по умолчанию – всего 30).

  • Добавление дополнительных привязок к Emacs в редактор строк ZSH (ZLE)
  • «Gnome-terminal -e tmux ./» постоянно открывает терминалы
  • Сценарий Shell / Bash: Правильно отказаться от привилегий
  • Выход из терминала «nohup ./my_script &» => «У вас есть рабочие задания». ОК, чтобы выйти?
  • Можно ли в реальном времени заменить текст в оболочке?
  • Добавить (изменить) каждый элемент массива через расширение параметра (т. Е. Без printf)?
  • Удалить часть каталога из текущего каталога в zsh
  • Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?
  • получить приглашение оболочки в python
  • Перемещение дескрипторов файлов в zsh
  • Чтение пароля с клавиатуры вместо stdin
  • Interesting Posts

    Как установить CUDA Toolkit 7/8/9 на Debian 8 (Jessie) или 9 (Stretch)?

    Как указать программы, которые я хочу запустить при загрузке компьютера?

    Работает ли Chrome на Debian kFreeBSD?

    Тест Fail2ban-Regex всегда говорит об отсутствии хоста в группе

    Почему `jobs` и` dirs` работают в подстановке команд, подстановке процессов, конвейере и фоновых заданиях так же, как в исходной оболочке?

    Postgres: аутентифицировать пользователя postgres в неинтерактивном скрипте

    Узнать, сколько программ я не установил из списка с помощью grep / awk в archlinux

    Могу ли я редактировать информацию о исполняемых командах?

    Установка пользовательских программ на сервере без доступа root

    массив считывания и суммирование элементов

    Как восстановить потерянные метаданные разрешения в / etc?

    Поиск файлов и отображение их владельца

    Проблема Unicode, когда ssh'ing от терминала GNOME до OS X

    Как установить evince на выпуск CentOS Linux 7.0.1406

    Команда ZSH запускается в оболочке, но не в скрипте

    Linux и Unix - лучшая ОС в мире.