Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 78
Текст из файла (страница 78)
также описание встроенной команды pushd)Элемент в стеке каталогов с порядковым номером п. Первый элементимеет номер 0. Отсчет от начала стека—пЭлемент в стеке каталогов с порядковым номером п. Первый элементимеет номер 0. Отсчет от конца стекаШаблон может быть представлен последовательностью шаблонов, разделенных символом «|». Если результат поиска для одного из подшаблонов положителен, то положительным считается и результат поиска для всего шаблона в целом. Расширенный синтаксис задания шаблонов схож с расширенным синтаксисом для egrep и awk.Примеры$ Is new*$ cat ch?Вывести список файлов, имена которых начинаются на newРабота производится с файлами, имена которых имеют вид ch9,но не chW$ vi [D-R]* Редактировать файлы, имена которых начинаются на любуюбукву от прописнойDдоRРедактирование командной строкиКомандная строка может редактироваться подобно тому, как редактируются строки в редакторах Emacs и vi.
По умолчанию действуют сочетания клавиш в стиле Emacs. Дополнительная информация приведена далее в этойглаве в разделе «Режим построчного редактирования» .Известны две разновидности режима редактирования в стиле vi - режимвставки и командный режим. По умолчанию принимается режим вставки;переключение режимов производится клавишей <Esc> либо (в командномрежиме) командами а (добавление) и i (вставка).На некоторых терминалах клавиши <Del> или <Backspace> не удаляют символ перед курсором, как это должно быть. Иногда ситуацию можно исправить выполнением следующих команд (или записью их в файл ~ /.bashrc):stty erase ~?stty erase "HСинтаксис525Команда stty подробно описана в главе 3 «Команды Linux». Для системыX Window альтернативным решением является применение команды xmodmap, которое не может быть здесь приведено, поскольку требует некоторыхисследований конкретного пользовательского терминала.В табл.
7.1-7.14 перечислены различные команды Emacs и vi.Таблица 7.1. Основные команды. Emacs-режимаКомандаОписаниеCtrl-BОткат на один символ (без удаления)Ctrl-FПеремещение вперед по тексту на один символDelУдаление символа в предыдущей позицииCtrl-DУдаление символа в следующей позицииТаблица 7.2. Команды работы со словами Emacs-режимаКомандаОписаниеEscbПеремещение назад по тексту на одно словоEscfПеремещение вперед по тексту на одно словоEsc DelУдаление слова перед курсоромEscdУдаление слова после курсораCtrl-YВозврат (из специального буфера) последнего удаленияТаблица 7.3. Команды работы со строками Emacs-режимаКомандаОписаниеCtrl-AПерейти в начало строкиCtrl-EПерейти в конец строкиCtrl-KУдалить все символы от курсора до конца строкиТаблица 7.4.
Команды Emacs-режима для навигации по файлу журнала командКомандаОписаниеCtrl-PПереход к предыдущей строкеCtrl-NПереход к следующей строкеCtrl-RПоиск в обратном направленииEsc<Перейти к первой строке файла журнала командEsc>Перейти к последней строке файла журнала командГлава 7. bash: командный интерпретатор Борна526Таблица 7.5 Команды дополненийКомандаОписаниеTabПопытаться автоматически дополнить текстEsc?Перечислить варианты возможных дополненийEsc/Попытаться автоматически дополнить имя файлаCtrl-X /Перечислить варианты возможных дополнений имени файлаEsc~Попытаться автоматически дополнить имя пользователяCtrl-X ~Перечислить варианты возможных дополнений имени пользователяEsc$Попытаться автоматически дополнить имя переменнойCtrl-X $Перечислить варианты возможных дополнений имени переменнойEsc@Попытаться автоматически дополнить имя узла (hostname)Ctrl-X @Перечислить варианты возможных дополнений имени узлаEsc!Попытаться автоматически дополнить имя командыCtrl-X!Перечислить варианты возможных дополнений имени командыEsc TabПопытаться дополнить команду; источником вариантов дополненийявляется журнал командТаблица 7.6.
Различные команды Emacs-режимаКомандаОписаниеCtrl-JИдентично нажатию клавиши <Enter>Ctrl-LОчистить экран, поместив текущую строку в его верхней частиCtrl-MИдентично нажатию клавиши <Enter>Ctrl-OИдентично нажатию клавиши <Enter> с отображением следующейстроки из журнала командCtrl-TПоменять местами символы справа и слева от курсораCtrl-UУдалить символы от начала строки до текущего положения курсораCtrl-VОтобразить символ нажатия клавиши, не интерпретировать его как командуCtrI-[На большинстве клавиатур идентично нажатию клавиши <Esc>Esc сИзменить букву, на которой расположен курсор, на прописнуюEscuИзменить все буквы слова над курсором или после него на прописныеEsclИзменить все буквы слова над курсором или после него на строчныеEsc.Вставить последнее слово предыдущей команды после текущей позицииEscИдентично нажатию клавиши <Esc>527СинтаксисТаблица 7.7.
Команды редактирования в режиме ввода viКомандаОписаниеDelУдалить символ перед курсоромCtrl-WУдалить предыдущее слово (т. е. до пробела)Ctrl-VОтобразить символ нажатия клавиши, не интерпретировать его как командуEscПерейти в командный режим (см. табл. 7.8.)Таблица 7.8. Основные команды управляющего режима навигации viКомандаОписаниеhПерейти влево на один символ1Перейти вправо на один символЪПерейти влево на одно словоwПерейти вправо на одно словоВПерейти к началу предыдущего непустого словаWПерейти к началу следующего непустого словаеПерейти к концу текущего словаЕПерейти к концу текущего непустого словаОПерейти к началу строкиПерейти к первому непустому символу в строке$Перейти к концу строкиТаблица 7.9.
Команды ввода в vi-режимеКомандаОписаниеВставка текста перед текущим символом (вставка)Вставка текста после текущего символа (добавление)IВставка текста в начале строкиАВставка текста в конце строкигЗамена текущего символа текстомRРежим замены существующего текстаГлава 7. bash: командный интерпретатор Борна528Таблица 7.10. Некоторые команды удаления vi-режимаКомандаОписаниеdhУдалить предыдущий символdlУдалить следующий символdbУдалить предыдущее словоdwУдалить следующее словоdBУдалить одно предыдущее непустое словоdWУдалить одно следующее непустое словоd$Удалить все символы до конца строкиdOУдалить все символы до начала строкиТаблица 7.11.
Сокращения команд удаления vi-режимаКомандаОписаниеDЭквивалентно d$ (удаление до конца строки)ddЭквивалентно Od$ (удаление всей строки)СЭквивалентно с$ (удалить символы до конца строки, перейти в режимввода)ееЭквивалентно Ос$ (удалить всю строку, перейти в режим ввода)XЭквивалентно dl (удалить следующий символ)XЭквивалентно dh (удалить предыдущий символ)Таблица 7.12. Команды навигации по файлу журнала команд в режименавигации viКомандаОписаниеПерейти к предыдущей строкеj или +Перейти к следующей строкеGПерейти к строке, заданной счетчиком повторений/stringПоиск строки string (в обратном направлении)IstringПоиск строки string (прямой)nПовторить последний поискNПовторить последний поиск в противоположном направлении529СинтаксисТаблица 7.13.
Команды поиска символов vi-режимаКомандаОписаниеfxПерейти вперед к следующему вхождению символа х¥хПерейти назад к предыдущему вхождению символа хtxПерейти вперед к следующему вхождению символа х и затем на символназадТхПерейти назад к предыдущему вхождению символа х и затем на символ впередПовторить последнюю команду поиска символаПовторить последнюю команду поиска символа, направление поискапоменять на противоположноеТаблица 7.14. Различные команды vi-режимаКомандаОписаниеИнвертировать (сменить) регистр текущего символа (символов)Добавить последнее слово предыдущей команды; перейти в режим вводаCtrl-LОчистить экран и перерисовать текущую строку; применяется при«порче» изображения#Добавить символ комментария (#) к строке и строку в журнал команд;полезно таким образом сохранять команды, чтобы не приходилось вдальнейшем повторно их вводитьЭкранированиеЭкранирование отменяет специальное значение символа и позволяет использовать его буквально.
Следующие символы имеют специальное значение для командного интерпретатора bash.СимволЗначениеРазделитель командФоновое выполнениеГруппировка команд (вызов дополнительного интерпретатора)Блок командКонвейер> < &Символы перенаправления* ? [ ]Специальные символы, использующиеся для задания масок именфайловГлава 7. bash: командный интерпретатор Берна530СимволЗначениеИспользуются для экранирования символовПодстановка результатов работы командПодстановка значений переменных (или результатов работы команд)новая строка,Разделители словпробел, табуляцияКомментарийСледующие символы могут применяться для экранирования:СимволДействиеВсе символы между кавычками понимаются буквально, кроме следующих, которые по-прежнему сохраняют специальное значение:$ Производится подстановка значения переменнойПодстановка результата выполнения командыПарные двойные кавычки закрывают последовательностьВсе символы между кавычками понимаются буквально, кроме символаодинарной кавычки, закрывающего последовательностьСимвол, следующий за этим, понимается буквально.
Используетсявнутри последовательности символов, заключенных в двойные кавычки, для экранирования символов ", $ и '. Часто применяется для экранирования символа \, пробела или символа новой строкиПримеры$ echo 'Одинарные кавычки "защищают" двойные кавычки'Одинарные кавычки "защищают" двойные кавычки$ echo "Ну, разве это не \"особый случай\"7"Ну, разве это не "особый случай"?$ echo "У вас 'Is | we -1' файла в каталоге 'pwd'"У вас 43 файла в каталоге /home/bob$ echo "Значением \$х является $х"Значением $х является 100Формы командСинтаксисДействиеста &Выполнить команду в фоновом режимеcmdl ; cmd2Последовательность команд; выполнить команды, перечисленные в строкеСинтаксис531СинтаксисДействие(cmdl ; cmd2)«Подчиненный интерпретатор»; считать командыгруппой командcmdl | cmd2Конвейер; использовать вывод команды cmdl как ввод для команды cmd2cmd1Подстановка команд; результат работы команды cmd2 передаетсяв качестве аргументов команде cmdlcmd2'cmdl и cmd2cmdl %(cmd2)Подстановка команд с допустимой вложенностьюcmdl && cmd2Логическое И; команда cmd2 выполняется только в том случае, если успешно выполнена команда cmdlcmdl I | cmd2Логическое ИЛИ; команда cmd2 выполняется только в том случае,если cmdl выполнена неудачно{ cmd1 ', cmd2Выполнять команды в текущем интерпретатореПримерыnroff file &cd; Is(date; who; pwd) > logfilesort file | pr -3 | Ipvi 'grep -1 ifdef *.c'egrep '(yes|no)' 'cat list'egrep '(yes|no)' $(cat list)egrep '(yes|no)' $(<list)grep XX file && Ip filegrep XX file || echo "XX notfound"Фоновое форматирование текстаПоследовательное выполнение командПеренаправление всего вывода в файлСортировка файла, разбивка результата на страницы, печатьРедактировать файлы, найденные grepОпределить список файлов для поискаbash-эквивалент предыдущей командыДействует так же, как и предыдущая команда, нобыстрее выполняетсяПечать файла, содержащего заданный текстВывод сообщения об ошибке, если текст XX ненайденФормы перенаправленияФайловыйдескрипторИмяПринятоесокращениеТипичное устройство0Стандартный поток вводаstdinКлавиатура1Стандартный поток выводаstdoutТерминал2Стандартный поток ошибокstderrТерминалИсточник ввода и цель вывода могут быть переопределены, как показано втабл.