Spec-Zone.ru › Bash

Средства работы с историей Bash

​ ​

Когда включён параметр -o history встроенной команды set (см. Встроенная команда Set), оболочка предоставляет доступ к истории команд — списку ранее введённых команд. Значение переменной оболочки HISTSIZE используется как количество команд, сохраняемых в списке истории: оболочка сохраняет текст последних $HISTSIZE команд (по умолчанию 500). Оболочка сохраняет каждую команду в списке истории до подстановки параметров и переменных, но после выполнения подстановки истории, с учётом значений переменных оболочки HISTIGNORE и HISTCONTROL.

При запуске оболочка Bash инициализирует список истории, считывая записи истории из файла, имя которого задано переменной HISTFILE (по умолчанию ~/.bash_history). Этот файл называется файлом истории. При необходимости файл истории усекается так, чтобы в нём содержалось не больше записей истории, чем указано значением переменной HISTFILESIZE. Если HISTFILESIZE не задана, имеет пустое значение, содержит нечисловое значение или числовое значение меньше нуля, файл истории не усекается.

При чтении файла истории строки, начинающиеся с символа комментария истории, за которым сразу следует цифра, интерпретируются как временные метки следующей записи истории. Их отображение зависит от значения переменной HISTTIMEFORMAT (см. Переменные Bash). При наличии временные метки разделяют записи истории, что позволяет сохранять многострочные записи.

При завершении работы оболочки с включённой историей Bash копирует последние $HISTSIZE записей из списка истории в файл, имя которого задано переменной $HISTFILE. Если установлен параметр оболочки histappend (см. Встроенные команды Bash), Bash добавляет записи в файл истории, в противном случае перезаписывает его. Если HISTFILE не задана или имеет пустое значение либо файл истории недоступен для записи, история не сохраняется. После сохранения истории Bash усекает файл истории так, чтобы в нём содержалось не больше $HISTFILESIZE строк, как описано выше.

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

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

Оболочка позволяет управлять тем, какие команды сохраняются в списке истории. Переменные HISTCONTROL и HISTIGNORE используются для сохранения только части введённых команд. Если включён параметр оболочки cmdhist, оболочка пытается сохранить каждую строку многострочной команды в одной записи истории, добавляя при необходимости точки с запятой для сохранения синтаксической корректности. Параметр оболочки lithist изменяет поведение cmdhist, сохраняя команду со встроенными символами новой строки вместо точек с запятой. Для установки этих параметров используется встроенная команда shopt. Описание shopt см. в разделе Встроенная команда Shopt.

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Bash-History-Facilities.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API