Расширение истории
Библиотека истории предоставляет функцию расширения истории, аналогичную функции расширения истории, предоставляемой csh. В этом разделе описывается синтаксис, используемый для управления информацией о истории.
Расширение истории вставляет слова из списка истории в поток ввода, что упрощает повторное выполнение команд, вставку аргументов предыдущей команды в текущую строку ввода или быстрое исправление ошибок в предыдущих командах.
Расширение истории выполняется сразу после чтения полной строки, перед разбиением оболочки на слова, и выполняется для каждой строки индивидуально. Bash пытается проинформировать функции расширения истории об оставшихся кавычках из предыдущих строк.
Расширение истории происходит в две части. Первая — определение строки из списка истории, которая должна быть использована при подстановке. Вторая — выбор фрагментов этой строки для включения в текущую. Выбранная из истории строка называется событием, а части этой строки, на которые воздействуют, называются словами. Доступны различные модификаторы для управления выбранными словами. Строка разбивается на слова таким же образом, как это делает Bash, так что несколько слов, окружённых кавычками, считаются одним словом. Расширения истории начинаются с появления символа расширения истории, по умолчанию это ‘!’.
Расширение истории реализует соглашения оболочки о кавычках: обратный слэш может быть использован для удаления специальной обработки для следующего символа; одинарные кавычки заключают в себе последовательности символов дословно и могут быть использованы для запрета расширения истории; а символы, заключённые в двойные кавычки, могут быть подвержены расширению истории, поскольку обратный слэш может экранировать символ расширения истории, но одинарные кавычки не могут, так как они не обрабатываются специально внутри двойных кавычек.
При работе с оболочкой только ‘\’ и ‘'’ могут быть использованы для экранирования символа расширения истории, но символ расширения истории также обрабатывается как экранированный, если он непосредственно предшествует закрывающей двойной кавычке в строке с двойными кавычками.
Несколько параметров оболочки, устанавливаемых с помощью shopt встроенной команды (см. Встроенная команда Shopt), могут использоваться для настройки поведения расширения истории. Если histverify параметр оболочки включен, и используется Readline, подстановки истории не передаются немедленно в анализатор оболочки. Вместо этого расширенная строка загружается в буфер редактирования Readline для дальнейшего изменения. Если используется Readline, и histreedit параметр оболочки включен, не удавшееся расширение истории будет загружено в буфер редактирования Readline для исправления. Параметр -p встроенной команды history может быть использован для просмотра того, что сделает расширение истории, перед его использованием. Параметр -s встроенной команды history может быть использован для добавления команд в конец списка истории без их фактического выполнения, чтобы они были доступны для последующего вызова. Это наиболее полезно в сочетании с Readline.
Оболочка позволяет контролировать различные символы, используемые механизмом расширения истории, с помощью переменной histchars, как описано выше (см. Переменные Bash). Оболочка использует символ комментария истории для маркировки временных меток истории при записи файла истории.
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/History-Interaction.html