История в bash

Когда включена опция -o history со встроенной командой set, shell предоставляет доступ к истории команд, списку команд ранее набранных. Значение переменной HISTSIZE используется как число команд сохранённых в списке истории. Текст после HISTSIZE (default 500), говорит о том сколько команд сохраняется. История команд shell, содержит каждую команду в списке журнала до параметра и переменной расширения(Расширения я описывал ранее), но после расширения, история выполняется с учётом переменных shell HISTIGNORE и HISTCONTROL.

При запуске история инициализации из файла с именем переменной HISTFILE (по умолчанию ~/.bash_history). Файл с именем значений HISTFILE усекается, если это необходимо, чтобы содержать количество линий не больше чем указано значением HISTFILESIZE. Когда читается файл истории, строки начинающиеся в истории с символа комментария и цифры сразу за ним интерпретируются как временные метки для предыдущей строки истории. Эти метки необязательно отображаются в зависимости от значения переменной HISTTIMEFORMAT. Когда интерактивный командный интерпритатор выходит, прошлые строки $HISTSIZE копируются из списка истории в $HISTFILE. Если включена shell опция histappend (описание Встроенных команд shell я буду описывать в дальнейшем) строки добавляются к файлу истории, в ином случае файл истории переписывается. Если HISTFILE не установлен, или если файл истории недоступен для записи, история не сохраняется. Если переменная HISTTIMEFORMAT установлена, временные отметки записываются в файл истории, история помечается символом комментария, поэтому они могут быть сохранены между сеансами shell. При этом используется символ комментария в истории для отличия меток времени от других строк истории. После сохранения истории, файл истории обрезается, чтобы содержать количество строк не более чем указано HISTFILESIZE. Если HISTFILESIZE не установлен, обрезание не происходит.

Встроенная команда fc (Встроенные команды shell я буду описывать позднее) может быть использована для выдачи списка или редактирования, и повторно выполняет часть списка истории. Встроенная команда history может быть использована для отображения и изменения списка истории и манипулирования файлом истории. Когда используется команда редактирование командной строки, команды поиска доступны в каждом режиме редактирования, которые обеспечивают доступ к списку истории.

 

Shell предоставляет контроль над командами сохраненными в списке истории. Переменные HISTCONTROL и HISTIGNORE могут быть установленны для ограничения сохранённых введённых команд. Shell опция cmdhist, если включена, заставляет командный интерпретатор пытаться сохранять каждую строку многострочной команды в одной записи списка истории, добавив точки с запятой для обеспечения синтаксической корректности. Shell опция lithist заставляет сохранять команду со встроенным символом новой строки, вместо точки с запятой. Установка и сброс опций командного интерпритатора, описаны будут в дальнейшем при описании встроенной команды shopt в разделе Встроенных команд shell.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *