Уважаемые подписчики! Этот выпуск - тринадцатый в серии,
посвященной командному интерпретатору bash. Перевод сделан
сегодня, 12 июня.
Поскольку по правилам оформления рассылок в них не должно быть "висящих"
гиперссылок, не все перекрестные ссылки в выпусках, посвященных bash,
оформлены как гиперссылки. Когда перевод будет закончен, вы сможете скачать
с сайта рассылки всю страницу в целом, со всеми необходимыми перекрестными
и внешними ссылками.
bash(1)
ПОДСТАНОВКА КОМАНД ИЗ СПИСКА ИСТОРИИ
Командный интерпретатор bash поддерживает возможность подстановки
команд из списка истории, аналогично командному интерпретатору csh.
В этом разделе описан соответствующий синтаксис. Эта возможность
включается по умолчанию для интерактивных командных интерпретаторов
и может быть отключена с помощью опции +H встроенной команды
set (см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" далее).
Не интерактивные командные интерпретаторы по умолчанию не выполняют
подстановку команд из списка истории.
С помощью этой подстановки слова из списка истории можно вставлять
во входной поток, что упрощает повторение команд, вставку аргументов
предыдущей команды в текущую строку и исправление ошибок в предыдущих
командах.
Подстановка из списка истории выполняется сразу же после считывания
всей строки, прежде чем командный интерпретатор разобъет ее на слова.
Это выполняется в два приема. Сначала определяется, какую строку
из списка истории использовать при подстановке. Затем из этой строки
выбираются части для вставки в текущую строку. Строка, выбираемая из
списка истории, - это событие, а ее части, с которыми происходит
работа, - слова. Для манипулирования выбранными словами поддерживаются
различные модификаторы. Строка разбивается на слова точно так же, как
и при чтении команды, так что несколько слов, разделенных
метасимволами и взятые в кавычки, считаются одним словом.
Подстановка из списка истории инициируется метасимволом подстановки из
списка истории. По умолчанию - это символ !. Замаскировать
этот метасимвол можно только обратной косой (\) и одиночными
кавычками.
Особенностями подстановки из списка истории можно управлять путем
установки ряда опций командного интерпретатора с помощью встроенной
команды shopt. Если установлена опция командного интерпретатора
histverify (см. описание встроенной команды shopt) и используется
библиотека readline, результаты подстановки из списка истории не
передаются сразу анализатору командного интерпретатора. Вместо этого,
полученная в результате подстановки строка снова загружается в буфер
редактирования readline для дальнейшего изменения. Если используется
библиотека readline и установлена опция командного интерпретатора
histreedit, неудавшаяся подстановка из списка истории команд
будет повторно загружена в буфер редактирования readline для
исправления. Опция -p встроенной команды history может использоваться
для предварительного просмотра результатов подстановки
из списка истории перед ее использованием. Опция -s встроенной команды
history позволяет добавлять команды в конец списка истории без их
фактического добавления, так что их можно будет повторно
использовать в дальнейшем.
Командный интерпретатор позволяет управлять назначением различных
метасимволов, используемых механизмом подстановки команд из списка
истории (см. описание переменной histchars ранее в разделе
"Переменные командного интерпретатора").
Пометки событий
Пометка события - это ссылка на элемент командной строки в списке
истории.
!
Начинает подстановку из списка выполненных команд, если только
далее не идет пробел, перевод строки, = или (.
!n
Ссылка на командную строку n.
!-n
Ссылка на текущую строку минус n.
!!
Ссылка на предыдущую команду. Это синоним для команды !-1.
!строка
Ссылка на самую недавнюю команду, начинающуюся со строки.
!?строка[?]
Ссылка на самую недавнюю команду, содержащую строку. Завершающий символ
? можно не указывать, если сразу после строки идет новая строка.
Пометки слов (word designators) используются для выбора необходимых слов из события.
Двоечточие (:) отделяет пометку слова от спецификации события. Его можно
не указывать, если пометка слова начинается символом
^, $, *, - или %. Слова нумеруются с начала строки, причем первое слово
имеет номер 0. Слова вставляются в текущую строку через один пробел.
0
Нулевое слово. Для командного интерпретатора это - имя команды.
n
n-ное слово.
^
Первый аргумент. Т.е. слово 1.
$
Последний аргумент.
%
Слово, сопоставившееся при последнем поиске '?строка?'.
x-y
Диапазон слов; '-y' - это сокращение для '0-y'.
*
Все слова, кроме нулевого. Это синоним '1-$'.
Вполне допустимо использовать * если в событии есть всего одно слово -
в этом случае возвращается пустая строка.
x*
Сокращение для x-$.
x-
Сокращенная форма для x-$, аналогично x*, но не включая последнее слово.
Если пометка слова указана без спецификации события, в качестве
события используется предыдущая команда.
Модификаторы
После необязательной пометки слова может идти последовательность одного или
нескольких следующих модификаторов, предваряемых двоеточием - ':'.
h
Удаляет последний компонент имени файла, оставляя только начало.
t
Удаляет все начальные компоненты имени файла, оставляя только последний.
r
Удаляет хвостовой суффикс вида .xxx, оставляя базовое имя файла.
e
Удаляет все, кроме хвостового суффикса.
p
Выдает новую команду на экран, но не выполняет ее.
q
Берет подставляемые слова в кавычки, предотвращая дальнейшие подстановки.
x
Берет подставляемые слова в кавычки, как и модификатор q, но разбивает на
слова по пробелам и символам новой строки.
s/old/new/
Подставляет new вместо первого вхождения old в строке события. Вместо
/ можно использовать любой ограничитель. Завершающий ограничитель не
обязателен, если он является последним символом в строке события.
Ограничитель в строках old и new можно маскировать обратной косой.
Если в строке new есть метасимвол &, он заменяется строкой old.
Обратная косая маскирует метасимвол &. Если строка old - пустая,
вместо нее используется строка из последней по времени подстановки или,
если подстановок из списка истории ранее не было, последняя строка,
искавшаяся с помощью конструкции !?строка[?].
&
Повторяет предыдущую подстановку.
g
Применяет изменения ко всей строке события. Этот модификатор используется
совместно с ':s' (например, ':gs/old/new/') или ':&'. При использовании
с ':s', вместо косой (/) можно использовать любой ограничитель, а завершающий
ограничитель указывать не обязательно, если он является последним символом
в строке события.
В следующем выпуске
Очередной выпуск о службе NFS в UnixWare 2.03. Выпуск ожидается в
четверг, 13 июня.