[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  


22. Использование истории в интерактивном режиме

Эта глава описывает, как использовать библиотеку GNU History интерактивно, c точки зрения пользователя. Она должна рассматриваться как руководство пользователя.

22.1 Раскрывание истории

Библиотека History обеспечивает средства раскрывания истории, подобные предоставляемым csh. Этот раздел описывает синтаксис, использующийся для управления информацией истории.

Раскрывание истории вводит слова из списка истории во входной поток, облегчая повторение команд, вставку аргументов предыдущей команды в текущую строку ввода или быстрое устранение ошибок в предыдущей команде.

Раскрывание истории происходит в два этапа. Первый заключается в определении, какая из строк списка истории должна использоваться в процессе замены. На втором этапе выбираются части этой строки для включения в текущую. Строка, выбранная из истории, называется событием, а использованные части называются словами. Существуют различные модификаторы для манипулирования выбранными словами. Строка разбивается на слова так же, как это делает Bash, так что несколько слов, заключенных в кавычки, рассматриваются как одно слово. Раскрывания истории вводятся появлением специального знака, по умолчанию это `!'.

22.1.1 Указатели событий

Указатель событий является ссылкой на запись командной строки в списке истории.

!
Начать подстановку истории, если только за ! не следует пробел, знак табуляции, знак конца строки, `=' или `('.
!n
Сослаться на командную строку с номером n.
!-n
Сослаться на командную строку, отстоящую на n строк назад.
!!
Сослаться на предыдущую команду. Это синоним для `!-1'.
!строка
Сослаться на самую последнюю команду, начинающуюся со строки.
!?строка[?]
Сослаться на самую последнюю команду, содержащую строку. `?' в конце может быть опущен, если знак новой строки следует немедленно за строкой.
^строка1^строка2^
Быстрая подстановка. Повторяет последнюю команду, заменяя строку1 на строку2. Эквивалентно !!:s/строка1/строка2/.
!#
Вся командная строка, введенная до этого момента.

22.1.2 Указатели слов

Указатели слов используются для выбора желаемых слов из события. Спецификация события отделяется от указателя слова двоеточием. Его можно опустить, если указатель слова начинается с `^', `$', `*', `-' или `%'. Слова нумеруются от начала строки, причем первому слову присваивается номер 0 (ноль). Слова вставляются в текущую строку, разделенные одиночными пробелами.

Например,

!!
обозначает предыдущую команду. Когда вы это вводите, предыдущая команда повторяется один к одному.
!!:$
обозначает последний аргумент предыдущей команды. Это может быть сокращено как !$.
!fi:2
обозначает второй аргумент самой последней команды, начинавшейся с букв fi.

Вот указатели слов:

0 (ноль)
Нулевое слово. Для многих приложений, это командное слово.
n
n-ное слово.
^
Первый аргумент, то есть слово 1.
$
Последний аргумент.
%
Слово, соответствующее самому последнему поиску `?строка?'.
x-y
Диапазон слов; `0-y' сокращается как `-y'.
*
Все слова, за исключением нулевого. Это синоним для `1-$'. Даже если в событии имеется только одно слово, использование `*' не является ошибкой; в этом случае возвращается пустая строка.
x*
Сокращение для `x-$'
x-
Сокращает `x-$' как `x*', но опускает последнее слово.

Если указатель слова задается без указания события, в качестве события используется предыдущая команда.

22.1.3 Модификаторы

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

h
Удалить заключительную компоненту имени пути, оставляя только начальную.
r
Удалить заключительный суффикс, имеющий форму `.суффикс', оставляя базовое имя.
e
Удалить все, кроме заключительного суффикса.
p
Напечатать новую команду, но не выполнять ее.
s/старое/новое/
Заменить первое появление старое на новое в строке события. На месте `/' может использоваться любой разделитель. Разделитель может быть включен в старое или новое с помощью обратной косой черты. Если в новое появляется знак `&', он заменяется на старое. Одиночная обратная косая черта экранирует `&'. Заключительный разделитель необязателен, если он является последним знаком во входной строке.
&
Повторить предыдущую подстановку.
g
Велит применить изменения ко всей строке события. Используется вместе с `s', как в gs/старое/новое/, или с `&'.


[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]