Главная » 2017 » Ноябрь » 12 » man tcsh на русском
23:39
man tcsh на русском

SEO sprint - Всё для максимальной раскрутки!

ИМЯ

tcsh - оболочка C с завершением имени файла и редактированием командной строки


СИНТАКСИС
tcsh [-bcdefFimnqstvVxX] [-Dname [= значение]] [arg ...]
tcsh -l
ОПИСАНИЕ
tcsh - улучшенная, но полностью совместимая версия оболочки Berkeley UNIX C, csh (1). Это интерпретатор командного языка, который можно использовать как интерактивную оболочку входа, так и командный процессор сценария оболочки. Он включает редактор командной строки (см. Редактор командной строки), программируемое завершение слова (см. «Завершение и листинг»), исправление орфографии (см. «Коррекция орфографии»), механизм истории (см. «Замена истории»), контроль заданий (см. C-подобный синтаксис. Раздел NEW FEATURES описывает основные улучшения tcsh по csh (1). В этом руководстве функции tcsh, не найденные в большинстве реализаций csh (1) (в частности, 4.4shd csh), помечены знаком `(+) ', а функции, которые присутствуют в csh (1), но обычно не документируются, помечены как `(и).
Обработка списка аргументов
Если первый аргумент (аргумент 0) для оболочки равен `- ', то это оболочка входа. Оболочку входа можно также указать, вызвав оболочку с флагом -l в качестве единственного аргумента.

Остальные аргументы флага интерпретируются следующим образом:

-b
Заставляет «перерыв» из обработки параметров, в результате чего любые дополнительные аргументы оболочки рассматриваются как аргументы без опционов. Остальные аргументы не будут интерпретироваться как параметры оболочки. Это можно использовать для передачи параметров сценарию оболочки без путаницы или возможного уловки. Оболочка не будет запускать сценарий идентификатора набора пользователей без этой опции.

Команды считываются из следующего аргумента (который должен присутствовать и должен быть единственным аргументом), который хранится в переменной командной оболочки для ссылки и выполняется. Все остальные аргументы помещаются в переменную оболочки argv.
-d
Оболочка загружает стек каталога из ~ / .cshdirs, как описано в разделе «Запуск и завершение работы», независимо от того, является ли он оболочкой входа. (+)
-dNAME [= значение]
Устанавливает значение переменной среды. (Только для домена / ОС) (+)
-e
Оболочка выходит, если какая-либо вызванная команда заканчивается ненормально или дает ненулевой статус выхода.
-f
Оболочка игнорирует ~ / .tcshrc и, таким образом, запускается быстрее.
-F
Оболочка использует fork (2) вместо vfork (2) для запуска процессов. (Только выпуклый / OS) (+)

Оболочка интерактивна и запрашивает вход на верхнем уровне, даже если он не является терминалом. Оболочки интерактивны без этой опции, если их входы и выходы являются терминалами.
-l
Оболочка - это оболочка входа. Применимо, только если -l - единственный флаг.
-m
Оболочка загружает ~ / .tcshrc, даже если она не принадлежит эффективному пользователю. Более новые версии su (1) могут передать -m в оболочку. (+)
-n
Оболочка анализирует команды, но не выполняет их. Это помогает отлаживать сценарии оболочки.
-q
Оболочка принимает SIGQUIT (см. Обработка сигналов) и ведет себя, когда используется в отладчике. Управление заданиями отключено. (И)
-s
Вход команды берется из стандартного ввода.
-t
Оболочка считывает и выполняет одну строку ввода. «\» Можно использовать для выхода из новой строки в конце этой строки и перехода на другую строку.
-v
Устанавливает вербальную переменную оболочки, поэтому ввод команды повторяется после замены истории.
-Икс
Устанавливает переменную оболочки echo, чтобы команды были эхом переданы непосредственно перед выполнением.
-V
Устанавливает вербальную переменную оболочки даже до выполнения ~ / .tcshrc.
-ИКС
Является ли -x как -V равным -v.

--Помогите
Распечатайте справочное сообщение на стандартном выходе и выходе. (+)
--версия
Распечатайте параметры версии / платформы / компиляции на стандартном выходе и выходе. Эта информация также содержится в переменной оболочки версии. (+)

После обработки аргументов флага, если аргументы остаются, но не указаны параметры -c, -i, -s или -t, первый аргумент принимается за имя файла команд или `` script '', для выполнения. Оболочка открывает этот файл и сохраняет его имя для возможной повторной регистрации на `$ 0 '. Поскольку многие системы используют либо стандартные оболочки версии 6, либо версии 7, оболочки которых не совместимы с этой оболочкой, оболочка использует такую ​​«стандартную» оболочку для выполнения сценария, чей первый символ не является «#», т. Е. не начинайте с комментария.

Остальные аргументы помещаются в переменную оболочки argv.
Запуск и завершение работы
Оболочка для входа начинается с выполнения команд из системных файлов /etc/csh.cshrc и /etc/csh.login. Затем он выполняет команды из файлов в домашнем каталоге пользователя: сначала ~ / .tcshrc (+) или, если ~ / .tcshrc не найден, ~ / .cshrc, а затем ~ / .history (или значение переменной оболочки файла histfile ), затем ~ / .login и, наконец, ~ / .cshdirs (или значение переменной оболочки dirsfile) (+). Оболочка может читать /etc/csh.login раньше, чем после /etc/csh.cshrc и ~ / .login раньше, чем после ~ / .tcshrc или ~ / .cshrc и ~ / .history, если это скомпилировано; см. переменную оболочки версии. (+)

Недействительные оболочки читают только /etc/csh.cshrc и ~ / .tcshrc или ~ / .cshrc при запуске.

Примеры файлов запуска см. На странице http://tcshrc.sourceforge.net.

Команды, такие как stty (1) и tset (1), которые нужно запускать только один раз для входа, обычно идут в файл ~ / .login. Пользователи, которым необходимо использовать один и тот же набор файлов с csh (1) и tcsh, могут иметь только ~ / .cshrc, который проверяет наличие переменной оболочки tcsh (qv) перед использованием команд, специфичных для tcsh, или может иметь как a ~ / .cshrc и a ~ / .tcshrc, которые являются источниками (см. встроенную команду) ~ / .cshrc. Остальная часть этого руководства использует `~ / .tcshrc 'для обозначения` ~ / .tcshrc или, если ~ / .tcshrc не найден, ~ / .cshrc'.

В нормальном случае оболочка начинает считывать команды с терминала, запрашивая с помощью `> '. (Обработка аргументов и использование оболочки для обработки файлов, содержащих командные сценарии, описаны ниже.) Оболочка неоднократно читает строку ввода команды, разбивает ее на слова, помещает в список истории команд, анализирует и выполняет каждую команду в линии.

Вы можете выйти из строя, набрав `^ D 'на пустой строке,` logout' или `login 'или через механизм autologout оболочки (см. Переменную оболочки autologout). Когда оболочка входа завершается, он устанавливает переменную оболочки вывода в «нормальный» или «автоматический», а затем выполняет команды из файлов /etc/csh.logout и ~ / .logout. Оболочка может отбросить DTR при выходе из системы, если она скомпилирована; см. переменную оболочки версии.

Имена файлов входа в систему и выхода из системы варьируются от системы к системе для совместимости с различными вариантами csh (1); см. ФАЙЛЫ.
редактирование
Сначала мы опишем редактор командной строки. В разделах «Завершение» и «Листинг» и «Правописание» описываются два набора функциональных возможностей, которые реализуются как команды редактора, но которые заслуживают собственного лечения. Наконец, команды Editor перечисляют и описывают команды редактора, специфичные для оболочки, и их привязки по умолчанию.
Редактор командной строки (+)
Ввод в командной строке можно редактировать с помощью последовательностей клавиш, подобных тем, которые используются в GNU Emacs или vi (1). Редактор активен только тогда, когда задана переменная оболочки редактирования, которая по умолчанию используется в интерактивных оболочках. Встроенный bindkey может отображать и изменять привязки клавиш. По умолчанию привязки клавиш в стиле Emacs используются (если оболочка не была скомпилирована иначе, см. Переменную оболочки оболочки), но bindkey может изменить привязки ключей к привязкам стиля vi в маске.

Оболочка всегда связывает клавиши со стрелками (как определено в переменной среды TERMCAP), чтобы

вниз
вниз истории
вверх
до-истории
оставил
назад-символ
правильно
вперед-символ

если только это не изменит другую привязку с одним символом. Можно установить escape-последовательности клавиш стрелки в пустую строку с помощью setc, чтобы предотвратить эти привязки. Последовательности ANSI / VT100 для клавиш со стрелками всегда связаны.

Другие привязки клавиш - это, по большей части, то, что ожидали бы пользователи Emacs и vi (1) и могут быть легко отображены bindkey, поэтому нет необходимости перечислять их здесь. Аналогично, bindkey может перечислять команды редактора с кратким описанием каждого из них.

Обратите внимание, что команды редактора не имеют того же понятия «слово», что и оболочка. Редактор ограничивает слова любыми не-алфавитно-цифровыми символами, не входящими в переменную wordchars оболочки, тогда как оболочка распознает только пробелы и некоторые символы со специальными значениями для нее, перечисленные в лексической структуре.

Завершение и листинг (+)
Оболочка часто может заполнять слова, когда им присваивается уникальная аббревиатура. Введите часть слова (например, `ls / usr / lost ') и нажмите клавишу табуляции, чтобы запустить команду редактора полного слова. Оболочка завершает имя файла `/ usr / lost 'на` / usr / lost + found /', заменяя неполное слово на полное слово во входном буфере. (Обратите внимание на терминал `/ '; завершение добавляет` /' в конец завершенных каталогов и пробел до конца других завершенных слов, чтобы быстро набирать текст и предоставлять визуальный индикатор успешного завершения. Переменная оболочки adduffix может быть отменена для предотвращения этого.) Если совпадение не найдено (возможно, `/ usr / lost + found 'не существует), звонит колокол терминала. Если слово уже завершено (возможно, в вашей системе есть `/ usr / lost ', или, может быть, вы слишком далеко задумались и набрали все это), к концу добавляется` /' или пространство, если оно не является " t уже есть.

Завершение работ в любом месте линии, а не только в конце; завершенный текст подталкивает остальную часть строки вправо. Завершение в середине слова часто приводит к оставленным символам справа от курсора, который необходимо удалить.

Команды и переменные могут быть выполнены почти таким же образом. Например, ввод `em [tab] 'завершил бы` em' на `emacs ', если emacs были единственной командой в вашей системе, начинающейся с` em'. Завершение может найти команду в любом каталоге по пути или если задано полное имя пути. Ввод `echo $ ar [tab] 'завершил бы` $ ar' на `$ argv ', если бы другая переменная не начиналась с` ar'.

Оболочка анализирует входной буфер, чтобы определить, должно ли слово, которое вы хотите завершить, заполнять как имя файла, команду или переменную. Первое слово в буфере и первое слово, следующее за символами `; ',` |', `| & ',` &&' или `|| ' считается командой. Слово, начинающееся с `$ ', считается переменной. Все остальное - имя файла. Пустая строка `завершена 'как имя файла.

Вы можете в любой момент перечислить возможные завершения слова, набрав `^ D 'для запуска команды delete-char-or-list-or-eof. В оболочке перечислены возможные доработки с использованием встроенного ls-F (q.v.) и переиздается приглашение и незавершенная командная строка, например:

> ls / usr / l [^ D]
lbin / lib / local / lost + found /
> ls / usr / l

Если задана переменная оболочки автолиста, оболочка перечисляет оставшиеся варианты (если они есть) при завершении завершения:

> установить автолист
> nm / usr / lib / libt [tab]
libtermcap.a @ libtermlib.a @
> nm / usr / lib / libterm

Если для автолиста установлено значение «неоднозначное», выбор указывается только в случае неудачи завершения и не добавляет новых символов в слово, которое будет завершено.

Имя файла, которое должно быть заполнено, может содержать переменные, собственные или другие домашние каталоги, сокращенные с помощью `~ '(см. Подстановку имен файлов) и записи стека в каталоге, сокращенно с помощью` =' (см. Замену стека каталога). Например,

> ls ~ k [^ D]
kahn kas kellogg
> ls ~ ke [tab]
> ls ~ kellogg /

или

> set local = / usr / local
> ls $ lo [tab]
> ls $ local / [^ D]
bin / etc / lib / man / src /
> ls $ local /

Обратите внимание, что переменные также могут быть явно расширены с помощью команды редактора переменных-переменных.

delete-char-or-list-or-eof только в конце строки; в середине строки он удаляет символ под курсором, а на пустой строке он записывает один из них или, если параметр ignoreeof установлен, ничего не делает. `M- ^ D ', привязанный к списку команд редактора, список возможностей завершения в любой точке строки и список-выбор (или любая из соответствующих команд редактора, которые делают или не удаляют, перечисляют и / или записывают out, перечисленные в файле delete-char-or-list-or-eof) могут быть привязаны к `^ D 'с помощью встроенной команды bindkey, если это необходимо.

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

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

> ls
Makefile condiments.h ~ main.o side.c
README main.c еда сторона.o
condiments.h main.c ~
> set fignore = (.o \ ~)
> emacs ma [^ D]
main.c main.c ~ main.o
> emacs ma [tab]
> Разное

`main.c ~ 'и` main.o' игнорируются завершением (но не перечислением), потому что они заканчиваются суффиксами в fignore. Обратите внимание, что перед `~ 'необходимо было` \', чтобы предотвратить его расширение до дома, как описано в подменю «Имя файла». fignore игнорируется, если возможно только одно завершение.

Если полная переменная оболочки установлена ​​в `усиление ', то завершение 1) игнорирует регистр и 2) рассматривает периоды, дефисы и символы подчеркивания (`.', `- 'и` _') как разделители слов, а дефисы и подчеркивания эквивалентны , Если у вас есть следующие файлы

comp.lang.c comp.lang.perl comp.std.c ++
comp.lang.c ++ comp.std.c

и набрал «mail -f c.l.c [tab]», он будет заполнен «mail -f comp.lang.c», а ^ D будет содержать список «comp.lang.c» и «comp.lang.c ++». `mail -f c..c ++ [^ D] 'будет содержать список` comp.lang.c ++' и `comp.std.c ++ '. Ввод `rm a - file [^ D] 'в следующем каталоге

A_silly_file a-hyphenated-file another_silly_file

будет перечислять все три файла, потому что случай игнорируется, а дефисы и подчеркивания эквивалентны. Однако периоды не эквивалентны дефисам или символам подчеркивания.

Завершение и листинг затронуты несколькими другими переменными оболочки: Recexact может быть установлен для завершения в кратчайшем возможном уникальном совпадении, даже если более типизация может привести к более длинному совпадению:

> ls
фуд foo food foonly
> set recexact
> rm fo [tab]

просто звучит, потому что `fo 'может расширяться до` fod' или `foo ', но если мы наберем другое` o'

> rm foo [tab]
> rm foo

завершение завершается на `foo ', даже если« еда »и« foonly »также совпадают. autoexpand может быть настроен для запуска команды редактора истории расширений перед каждой попыткой завершения, автокоррекция может быть настроена на орфографическое исправление слова, которое должно быть завершено (см. исправление орфографии) перед каждой попыткой завершения, и исправление может быть установлено для завершения команд автоматически после одного хиты `return '. matchbeep может быть настроен на то, чтобы сделать звуковой сигнал завершения или не подавать звуковой сигнал в различных ситуациях, а nobeep может быть настроен так, чтобы никогда не издавать звуковой сигнал. nostat может быть настроен на список каталогов и / или шаблонов, которые соответствуют каталогам, чтобы предотвратить механизм завершения из stat (2) в этих каталогах. listmax и listmaxrows могут быть установлены для ограничения количества элементов и строк (соответственно), которые перечислены без предварительного запроса. Функция распознавания_определения может быть настроена на то, чтобы сделать список команд только для исполняемых файлов при перечислении команд, но он довольно медленный.

Наконец, полная встроенная команда может использоваться, чтобы сообщить оболочке, как заполнять слова, отличные от имен файлов, команд и переменных. Завершение и листинг не работают над glob-образцами (см. Подменю «Имя файла»), но команды редактора list-glob и expand-glob выполняют эквивалентные функции для шаблонов glob.
Коррекция орфографии (+)
Оболочка может иногда корректировать написание имен файлов, команд и имен переменных, а также заполнять их и перечислять.

Отдельные слова могут быть исправлены с помощью команды редактора заклинаний (обычно привязаны к M-s и M-S) и всего входного буфера с заклинанием (обычно привязанным к M- $). Правильная переменная оболочки может быть установлена ​​в `cmd ', чтобы исправить имя команды или` all', чтобы исправить всю строку каждый раз, когда набирается возврат, и автокоррекция может быть настроена на исправление слова, которое должно быть выполнено до каждой попытки завершения.

Когда исправление орфографии вызывается любым из этих способов, и оболочка считает, что любая часть командной строки написана с ошибкой, она запрашивает исправленную строку:

> set correct = cmd
> lz / usr / bin
CORRECT> ls / usr / bin (y | n | e | a)?

Можно ответить «y» или «пробел», чтобы выполнить исправленную строку «e», чтобы оставить неуправляемую команду во входном буфере «a», чтобы прервать команду, как если бы «^ C» был поражен, и что-нибудь еще для выполнения оригинальная линия без изменений.

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

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

Опасайтесь: исправление орфографии не гарантируется, чтобы работать так, как вы планируете, и предоставляется в основном как экспериментальная функция. Предложения и улучшения приветствуются.

Команды редактора (+)
`bindkey 'перечисляет привязки клавиш и списки` bindkey -l' и вкратце описывает команды редактора. Здесь описаны только новые или особенно интересные команды редактора. См. Emacs (1) и vi (1) для описания привязок клавиш каждого редактора.

Символ или символы, к которым каждая команда привязана по умолчанию, указаны в круглых скобках. Символ `^ 'означает управляющий символ, а символ« М-символ »- метасимвол, введенный как символ эвакуации на терминалах без мета-ключа. Счетчик событий, но команды, привязанные к буквам по умолчанию, привязаны как к нижним, так и к прописным буквам для удобства.

полное слово (вкладка)
Завершает слово, как описано в разделе «Завершение» и листинг.
полное слово-назад (не связанное)
Подобно full-word-fwd, но подходит к концу списка.
full-word-fwd (не связан)
Заменяет текущее слово первым словом в списке возможных завершений. Может повторяться для перехода вниз по списку. В конце списка раздастся звуковой сигнал и вернется к неполному слову.
full-word-raw (^ X-tab)
Как полное слово, но игнорирует пользовательские доработки.
copy-prev-word (M - ^ _)
Копирует предыдущее слово в текущей строке во входной буфер. См. Также insert-last-word.
dabbrev-expand (M- /)
Расширяет текущее слово до последнего предыдущего, для которого текущий является ведущей подстрокой, при необходимости обертывая список истории (один раз). Повторение dabbrev-expand без каких-либо вмешательств при вводе текста меняется на следующее предыдущее слово и т. Д., Пропуская одинаковые совпадения, похожие на историю-поиск-назад.
delete-char (не связан)
Удаляет символ под курсором. См. Также delete-char-or-list-or-eof.
delete-char-or-eof (не связан)
Does delete-char, если есть символ под курсором или конец файла на пустой строке. См. Также delete-char-or-list-or-eof.
delete-char-or-list (не связан)
Does delete-char, если в конце строки есть символ под курсором или список-выбор. См. Также delete-char-or-list-or-eof.
delete-char-or-list-or-eof (^ D)
Does delete-char, если есть символ под курсором, список-выбор в конце строки или конец файла на пустой строке. См. Также эти три команды, каждая из которых выполняет только одно действие, а также delete-char-or-eof, delete-char или-list и list-or-eof, каждый из которых выполняет разные два из трех.
вниз-история (стрелка вниз, ^ N)
Как up-history, но уходит в отставку, останавливаясь на исходной строке ввода.
конец файла (не связанный)
Сигналы завершают файл, заставляя оболочку завершаться, если для параметра оболочки ignoreeof (q.v.) не установлено это предупреждение. См. Также delete-char-or-list-or-eof.
expand-history (M-space)
Расширяет замены истории в текущем слове. См. «Замена истории». См. Также magic-space, toggle-literal-history и переменную оболочки autoexpand.
expand-glob (^ X- *)
Расширяет шаблон glob слева от курсора. См. Замена имени файла.
expand-line (не связанный)
Подобно expand-history, но расширяет подстановки истории в каждом слове во входном буфере,
expand-variables (^ X- $)
Расширяет переменную слева от курсора. См. Замена переменных.
history-search-backward (M-p, M-P)
Ищет назад по списку истории для команды, начинающейся с текущего содержимого входного буфера до курсора, и копирует его во входной буфер. Строка поиска может быть шаблоном glob (см. Подстановку имен файлов), содержащим `* ',`?', `[] 'Или` {}'. история и история вниз будут исходить из соответствующей точки в списке истории. Только режим Emacs. Смотрите также историю поиска и i-search-back.
history-search-forward (M-n, M-N)
Как и история-поиск-назад, но ищет вперед.
i-search-back (не связанный)
Ищет назад, как история-поиск-назад, копирует первое совпадение во входной буфер с курсором, расположенным в конце шаблона, и запрашивает `bck: 'и первое совпадение. Для продолжения поиска могут быть введены дополнительные символы, а для повторного поиска i-search-back можно продолжить поиск с использованием того же шаблона, если необходимо, обернуть вокруг списка истории (i-search-back должен быть привязан к одному символу для этого, чтобы работа) или один из следующих специальных символов может быть напечатан:

^ W
Добавляет остальную часть слова под курсором к шаблону поиска.
delete (или любой символ, привязанный к обратному-удалению-char)
Отменяет действие последнего символа и удаляет символ из шаблона поиска, если это необходимо.
^ G
Если предыдущий поиск был успешным, прервите весь поиск. Если нет, возвращается к последнему успешному поиску.
побег
Завершает поиск, оставив текущую строку во входном буфере.

Любой другой символ, не связанный с командой self-insert-command, завершает поиск, оставляя текущую строку во входном буфере и затем интерпретируется как обычный ввод. В частности, возврат каретки вызывает выполнение текущей строки. Только режим Emacs. См. Также i-search-fwd и history-search-backward.

i-search-fwd (не связан)
Как и i-search-back, но ищет вперед.
insert-last-word (M-_)
Вставляет последнее слово предыдущей строки ввода (`! $ ') Во входной буфер. См. Также предисловие к копированию.
список-выбор (M- ^ D)
Перечисляет возможности завершения, как описано в разделе «Завершение» и листинг. См. Также delete-char-or-list-or-eof и list-choice-raw.
list-choice-raw (^ X- ^ D)
Подобно спискам, но игнорирует пользовательские доработки.
list-glob (^ X-g, ^ X-G)
Списки (через встроенный ls-F) соответствуют шаблону glob (см. Подстановку имен файлов) слева от курсора.
list-or-eof (не связан)
Отображает ли список или конец файла на пустой строке. См. Также delete-char-or-list-or-eof.
магическое пространство (не связанное)
Расширяет подстановки истории в текущей строке, такие как expand-history, и вставляет пробел. magic-space предназначен для привязки к пробелу, но не связан по умолчанию.
normalize-command (^ X-?)
Ищет текущее слово в PATH и, если он найден, заменяет его полным путем к исполняемому файлу. Цитируются специальные символы. Псевдонимы расширены и цитируются, но команды внутри псевдонимов не являются. Эта команда полезна для команд, которые принимают команды в качестве аргументов, например, `dbx 'и` sh -x'.
normalize-path (^ X-n, ^ X-N)
Расширяет текущее слово, как описано в параметре `expand 'переменной оболочки symlinks.
перезаписывать-режим (несвязанный)
Переключение между режимами ввода и перезаписывания.
run-fg-editor (M- ^ Z)
Сохраняет текущую строку ввода и ищет остановленное задание с именем, равным последнему компоненту части имени файла переменных среды EDITOR или VISUAL, или, если они не установлены, `ed 'или` vi'. Если такое задание найдено, оно перезапускается, как если бы была введена команда «fg% job». Это позволяет легко и быстро переключаться между редактором и оболочкой. Некоторые люди связывают эту команду с «^ Z», поэтому они могут сделать это еще проще.
run-help (M-h, M-H)
Ищет документацию по текущей команде, используя те же понятия «текущая команда», что и процедуры завершения, и печатает ее. Невозможно использовать пейджер; run-help предназначен для коротких файлов справки. Если определен специальный псевдоним helpcommand, он запускается с именем команды в качестве единственного аргумента. В противном случае документация должна быть в файле с именем command.help, command.1, command.6, command.8 или command, который должен находиться в одном из каталогов, перечисленных в переменной среды HPATH. Если имеется более одного файла справки, печатается только первое.
self-insert-command (текстовые символы)
В режиме вставки (по умолчанию) вставляет введенный символ в строку ввода после символа под курсором. В режиме перезаписи заменяет символ под курсором набранным символом. Режим ввода обычно сохраняется между строками, но переменная оболочки inputmode может быть установлена ​​в «insert» или «overwrite», чтобы поместить редактор в этот режим в начале каждой строки. См. Также режим перезаписи.
последовательность-ввод (префикс стрелки, мета-префикс, ^ X)
Указывает, что следующие символы являются частью последовательности с несколькими ключами. Привязка команды к последовательности с несколькими ключами действительно создает две привязки: первый символ для ввода последовательности и всю последовательность команды. Все последовательности, начинающиеся с символа, связанного с вводом последовательности, эффективно связаны с неопределенным ключом, если не связаны с другой командой.
spell-line (M- $)
Попытка исправить написание каждого слова во входном буфере, например, слово заклинания, но игнорирует слова, первый символ которых является одним из `- ',`!', `^ 'Или`%' или которые содержат `\ ', `* 'или`?', чтобы избежать проблем с коммутаторами, подстановками и т. п. См. Исправление орфографии.
заклинание (M-s, M-S)
Попытки исправить написание текущего слова, как описано в исправлении орфографии. Проверяет каждый компонент слова, который является именем пути.
toggle-literal-history (M-r, M-R)
Расширяет или заменяет историю изменений в исходном буфере. См. Также expand-history и переменную оболочки autoexpand.
undefined-key (любой несвязанный ключ)
Beeps.

up-history (стрелка вверх, ^ P)
Копирует предыдущую запись в списке истории во входной буфер. Если задано значение histlit, используется литеральная форма записи. Можно повторить, чтобы перейти в список истории, остановив верхнюю часть.
vi-search-back (?)
Запросы с `? ' для строки поиска (которая может быть шаблоном glob, как и для истории-поиска-назад), ищет его и копирует в входной буфер. Колокол звонит, если совпадение не найдено. Возврат завершает поиск и оставляет последнее совпадение во входном буфере. При ударе заканчивается поиск и выполняется совпадение. vi только.
vi-search-fwd (/)
Как vi-search-back, но ищет вперед.
которая-команда (M-?)
Есть ли какое (см. Описание встроенной команды) в первом слове входного буфера.
yank-pop (M-y)
Когда выполняется сразу после yank или другого yank-pop, заменяет yanked строку следующей предыдущей строкой из killring. Это также приводит к повороту killring, так что эта строка будет считаться последней, убитой более поздней командой yank. Повторение yank-pop будет циклически проходить через killing любое количество раз.


Лексическая структура
Оболочка разбивает входные строки на слова в пробелах и вкладках. Специальные символы `& ',` |', `; ',` <', `> ',` (' и `) 'и удвоенные символы` &&', `|| ',` <<' и ` >> 'всегда являются отдельными словами, независимо от того, окружены ли они пробелами.

Когда вход оболочки не является терминалом, символ `# 'принимается для начала комментария. Каждый `# 'и остальная часть строки ввода, на которой он появляется, отбрасываются перед дальнейшим разбором.

Специальный символ (включая пробел или табуляцию) может быть лишен своего особого значения и, возможно, сделан частью другого слова, предшествуя ему обратным слэшем (`\ ') или заключая его в одиночный (`' '), двойной (`` ') или назад (``'). Если не указано иначе, новая строка с символом `\ 'эквивалентна пробелу, но внутри кавычек эта последовательность приводит к новой строке.

Кроме того, все замещения (см. Ниже), за исключением замены истории, могут быть предотвращены путем включения строк (или частей строк), в которых они отображаются с одинарными кавычками или путем цитирования критического символа (ов) (например, `$ 'или` `' для замены переменных или подстановки команд соответственно) с помощью `\ '. (Подстановка псевдонимов не является исключением: цитирование каким-либо образом любого символа слова, для которого было определено псевдоним, предотвращает замену псевдонима. Обычный способ цитирования псевдонима должен предшествовать ему обратным слэшем.) Подстановка истории предотвращается обратную косую черту, а не одиночные кавычки. Строки, цитируемые двойными или обратными кавычками, подвергаются замене переменных и замене команд, но другие замены не допускаются.

Текст внутри одиночных или двойных кавычек становится одним словом (или частью одного). Метасимволы в этих строках, включая пробелы и вкладки, не образуют отдельных слов. Только в одном специальном случае (см. Подстановку команд ниже) может быть строка с двумя кавычками, дающая части более одного слова; одиночные кавычки никогда не делают. Обратные кавычки являются особыми: они сигнализируют замену команды (q.v.), что может привести к нескольким словам.

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

Переменная оболочки backslash_quote (qv) может быть установлена ​​так, чтобы обратная косая черта всегда указывала `\ ',`' 'и `"'. (+) Это может облегчить выполнение сложных задач кавычек, но это может привести к синтаксическим ошибкам в csh (1) скрипты.

Замены
Теперь мы описываем различные преобразования, выполняемые оболочкой на входе в том порядке, в котором они происходят. Мы отмечаем мимоходом связанные структуры данных и команды и переменные, которые влияют на них. Помните, что замена может быть предотвращена путем цитирования, как описано в лексической структуре.
Замена истории
Каждая команда или `` событие '', ввод с терминала сохраняется в списке истории. Предыдущая команда всегда сохраняется, а переменная оболочки истории может быть установлена ​​в число, чтобы сохранить это множество команд. Переменная оболочки histdup может быть настроена так, чтобы не сохранять повторяющиеся события или последовательные повторяющиеся события.

Сохраненные команды нумеруются последовательно от 1 и отмечены временем. Обычно нет необходимости использовать номера событий, но текущий номер события можно сделать частью подсказки, поместив `! ' в командной строке приглашения.

Оболочка фактически сохраняет историю в расширенных и буквальных (нерасширенных) формах. Если задана переменная оболочки histlit, команды, отображающие и хранящие историю, используют литеральную форму.

Команда built-in истории может печатать, хранить в файле, восстанавливать и очищать список истории в любое время, а переменные оболочки savehist и histfile могут быть установлены для автоматического сохранения списка истории при выходе из системы и восстановления его при входе в систему.

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

Замены истории начинаются с символа `! '. Они могут начинаться где угодно во входном потоке, но они не гнездятся. `! ' может предшествовать «\», чтобы предотвратить его особый смысл; для удобства, `! ' передается без изменений, когда за ним следуют пробел, табуляция, новая строка, `= 'или` ('. Замены истории также возникают, когда строка ввода начинается с символа `^ '. Это специальное сокращение будет описано ниже. замена истории (`! 'и` ^') может быть изменена путем установки переменной оболочки histchars. Любая строка ввода, которая содержит замену истории, печатается перед ее выполнением.

Подстановка истории может иметь «спецификацию события», которая указывает событие, из которого должны быть сделаны слова, «определитель слов», который выбирает определенные слова из выбранного события и / или «модификатор», ', который манипулирует выбранными словами.

Спецификация события может быть

N
Число, относящееся к определенному событию
-n
Смещение, относящееся к событию n перед текущим событием
#
Текущее событие. Это следует тщательно использовать в csh (1), где нет проверки на рекурсию. tcsh позволяет 10 уровней рекурсии. (+)
!
Предыдущее событие (эквивалентное `-1 ')
s
Самое последнее событие, первое слово которого начинается с строки s
? S?
Самое последнее событие, которое содержит строку s. Второй `? ' может быть опущен, если сразу же следует новая строка.

Например, рассмотрим этот бит списка истории человека:

9 8:30 nroff -man wumpus.man
10 8:31 cp wumpus.man wumpus.man.old
11 8:36 vi wumpus.man
12 8:37 diff wumpus.man.old wumpus.man

Команды отображаются с номерами событий и отметками времени. Текущее событие, которое мы еще не ввели, - это событие 13. `! 11 'и`! -2' относятся к событию 11. `!! ' относится к предыдущему событию, 12. `!! ' может быть сокращено `! ' если за ним следует `: '(`:' описывается ниже). `! n 'относится к событию 9, которое начинается с` n'. `!? Старый? также относится к событию 12, которое содержит «старый». Без указателей слов или модификаторов ссылки истории просто расширяются до всего события, поэтому мы можем набрать `! Cp 'для повторной команды копирования или` !! | more', если выход `diff 'прокручивается в верхней части экрана.

В случае необходимости ссылки на источники могут быть изолированы от окружающего текста скобками. Например, `! Vdoc 'будет искать команду, начинающуюся с` vdoc', и в этом примере не найти ее, но `! {V} doc 'будет однозначно расширяться до` vi wumpus.mandoc'. Даже в фигурных скобках, замены истории не гнездятся.

(+) Пока csh (1) расширяет, например, `! 3d 'до события 3 с добавленной к нему буквой` d', tcsh расширяет его до последнего события, начинающегося с `3d '; только полностью числовые аргументы рассматриваются как номера событий. Это позволяет вспомнить события, начинающиеся с чисел. Чтобы развернуть `! 3d ', как в csh (1), скажем`! \ 3d'.

Чтобы выбрать слова из события, мы можем следить за спецификацией события с помощью символа `: 'и указателя для желаемых слов. Слова входной строки нумеруются от 0, первое (обычно командное) слово равно 0, второе слово (первый аргумент) - 1 и т. Д. Основные обозначения слов:

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

Выбранные слова вставляются в командную строку, разделенную одиночными пробелами. Например, команда `diff 'в предыдущем примере могла быть введена как` diff !!: 1.old !!: 1' (используя `: 1 ', чтобы выбрать первый аргумент из предыдущего события) или` diff! -2: 2! -2: 1 'для выбора и замены аргументов из команды `cp'. Если бы нас не интересовал порядок «diff», мы могли бы сказать «diff! -2: 1-2» или просто «diff! -2: *». Команда `cp 'могла быть написана` cp wumpus.man! #: 1.old', используя `# 'для обозначения текущего события. `! n: - hurkle.man 'будет повторно использовать первые два слова из команды` nroff', чтобы сказать `nroff -man hurkle.man '.

Параметр `: ', отделяющий спецификацию события от указателя слова, может быть опущен, если селектор аргументов начинается с` ^', `$ ',` *', `% 'или` -'. Например, наша команда `diff 'могла бы быть` diff !! ^. Old !! ^' или, эквивалентно, `diff !! $. Old !! $ '. Однако, если `!! ' сокращенно `! ', селектор аргументов, начинающийся с` -', будет интерпретироваться как спецификация события.

Ссылка на историю может иметь указатель на слово, но не спецификация события. Затем он ссылается на предыдущую команду. Продолжая наш пример «diff», мы могли бы просто сказать «diff! ^. Old! ^» Или, чтобы получить аргументы в обратном порядке, просто «diff! *».

Слово или слова в справочнике истории можно редактировать или «изменять», следуя за ним одним или несколькими модификаторами, каждому из которых предшествует символ `:':

час
Удалите компонент конечного пути, оставив голову.
T
Удалите все ведущие компоненты пути, оставив хвост.
р
Удалите расширение файла .xxx ', оставив имя корня.
е
Удалите все, кроме расширения.
U
Прописьте первую строчную букву.
L
Опишите первую букву верхнего регистра.
с / л / г /
Заменим l на r. l - это просто строка типа r, а не регулярное выражение, как в команде eponymous ed (1). Любой символ может использоваться как разделитель вместо `/ '; a `\ 'может использоваться для указания разделителя внутри l и r. Символ `& 'в r заменяется на l; `\ 'также цитирует` &'. Если l пуст (`` ''), l из предыдущей подстановки или s из предыдущего `? S? ' используется спецификация события. Конечный разделитель может быть опущен, если сразу же следует новая строка.
&
Повторите предыдущую замену.
г
Применяйте следующий модификатор один раз к каждому слову.
a (+)
Применяйте следующий модификатор столько раз, сколько возможно до одного слова. `a 'и` g' могут использоваться вместе для применения модификатора глобально. В текущей реализации использование модификаторов `a 'и` s' вместе может привести к бесконечному циклу. Например, `: as / f / ff / 'никогда не завершится. Такое поведение может измениться в будущем.
п
Распечатайте новую командную строку, но не выполняйте ее.
Q
Процитировать замещенные слова, предотвращая дальнейшие замены.
Икс
Как и q, но разрывайте слова в пробелах, вкладках и символах новой строки.

Модификаторы применяются только к первому модифицируемому слову (если не используется `g '). Это ошибка, поскольку никакое слово не может быть изменено.

Например, команда `diff 'могла быть написана как` diff wumpus.man.old! # ^: R', используя `: r 'для удаления` .old' из первого аргумента в той же строке (`! # ^ '). Мы могли бы сказать «echo hello there there», затем «echo! *: U», чтобы использовать «hello», «echo! *: Au», чтобы сказать это вслух, или «echo! *: Agu», чтобы действительно кричать. Мы могли бы следовать «mail -s». Я забыл пароль «rot» с `!: S / rot / root ', чтобы исправить написание« root »(но см. Исправление орфографии для другого подхода).

Существует специальная аббревиатура для замещений. `^ ', когда он является первым символом на входной строке, эквивалентен`!: s ^'. Таким образом, мы могли бы сказать «^ rot ^ root», чтобы сделать орфографическую коррекцию в предыдущем примере. Это единственная замена истории, которая явно не начинается с `! '.

(+) В csh как таковой, только один модификатор может применяться к каждому расширению истории или переменной. В tcsh может использоваться более одного, например

% mv wumpus.man /usr/man/man1/wumpus.1
% man! $: t: r
Мужчина wumpus

В csh результатом будет `wumpus.1: r '. Замена, за которой следует толстая кишка, возможно, должна быть изолирована от нее скобками:

> mv a.out / usr / games / wumpus
> setenv PATH! $: h: $ PATH
Плохо ! модификатор: $.
> setenv PATH! {- 2 $: h}: $ PATH
setenv PATH / usr / games: / bin: / usr / bin :.

Первая попытка будет успешной в csh, но сбой в tcsh, потому что tcsh ожидает другого модификатора после второго двоеточия, а не `$ '.

Наконец, историю можно получить через редактор, а также через описанные ниже замены. Команды up-down-history, history-search-backward и -forward, i-search-back и -fwd, vi-search-back и -fwd, copy-prev-word и insert-last-word выполняют поиск события в списке истории и скопировать их во входной буфер. Команда редактора переключателя-литеральной истории переключается между расширенными и буквальными формами строк истории во входном буфере. expand-history и expand-line расширять исторические подстановки в текущем слове и во всем входном буфере соответственно.
Подстановка псевдонимов
Оболочка поддерживает список псевдонимов, которые могут быть установлены, отменены и напечатаны командами псевдонимов и неалиасов. После того, как командная строка анализируется на простые команды (см. Команды), первое слово каждой команды слева-направо проверяется на наличие псевдонима. Если это так, первое слово заменяется псевдонимом. Если псевдоним содержит ссылку на историю, он подвергается замене истории (q.v.), как если бы исходной командой была предыдущая строка ввода. Если псевдоним не содержит ссылки на историю, список аргументов остается нетронутым.

Таким образом, если псевдоним для `ls 'был` ls -l', команда `ls / usr 'стала бы` ls -l / usr', список аргументов здесь невозможен. Если псевдоним для `lookup 'был` grep! ^ / Etc / passwd', тогда `lookup bill 'станет` grep bill / etc / passwd'. Псевдонимы могут использоваться для введения метасинтакса парсера. Например, `alias print 'pr \! * | lpr '' определяет `` command '' (`print '), который pr (1) содержит свои аргументы для линейного принтера.

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

Некоторые псевдонимы упоминаются оболочкой; см. Специальные псевдонимы.
Переменная замена
Оболочка поддерживает список переменных, каждый из которых имеет в качестве значения список из нуля или более слов. Значения переменных оболочки могут быть отображены и изменены с помощью команд set и unset. Система поддерживает собственный список переменных `` environment ''. Они могут отображаться и изменяться с помощью printenv, setenv и unsetenv.

(+) Переменные могут быть сделаны только для чтения с помощью `set -r '(q.v.) Переменные только для чтения не могут быть изменены или отменены; попытка сделать это приведет к ошибке. После того, как вы сделали доступным только для чтения, переменная не может быть доступна для записи, поэтому `set -r 'следует использовать с осторожностью. Переменные среды не могут быть доступны только для чтения.

Некоторые переменные задаются оболочкой или ссылаются на нее. Например, переменная argv представляет собой образ списка аргументов оболочки, а слова значения этой переменной упоминаются особыми способами. Некоторые из переменных, на которые ссылается оболочка, являются переключателями; оболочке все равно, какова их ценность, только если они установлены или нет. Например, переменная verbose является переключателем, который вызывает эхо-сигнал команды. Параметр -v командной строки задает эту переменную. Специальные переменные оболочки перечисляют все переменные, на которые ссылается оболочка.

Другие операции обрабатывают переменные численно. Команда `@ 'позволяет выполнять числовые вычисления и присваивать результат переменной. Однако переменные значения всегда представляются как (ноль или более) строк. Для целей числовых операций нулевая строка считается нулевой, а второй и последующие слова многословных значений игнорируются.

После того, как строка ввода будет сглажена и проанализирована, и перед выполнением каждой команды подстановка переменной выполняется с помощью символов `$ '. Это расширение может быть предотвращено предшествующим `$ 'с помощью` \', за исключением внутри `` ', где оно всегда встречается, и внутри ``', где оно никогда не встречается. Строки, цитируемые `` ', интерпретируются позже (см. Команду подстановка ниже), поэтому подстановка `$ 'не встречается там до поздней, если вообще.« $ »передается без изменений, если за ней следует пробел, табуляция или конец строки.

Переадресация ввода / вывода распознается до расширения переменной и разнесена по отдельности. В противном случае имя команды и весь список аргументов будут расширены вместе. Таким образом, первое (командное) слово (к этой точке) может генерировать более одного слова, первым из которых становится имя команды, а остальные - аргументы.

Если не указано в `` 'или задано модификатором `: q', результаты подстановки переменных могут в конечном итоге быть заменены командой и filename. Внутри` "'переменная, значение которой состоит из нескольких слов, расширяется до (части a) одного слова , со словами значения переменной, разделенных пробелами. Когда к подстановке применяется модификатор `: q ', переменная будет расширяться до нескольких слов с каждым словом, разделенным пробелом и цитируемым, чтобы предотвратить замену позже или замену имени файла.

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

имя $

$ {Имя}
Заменяет слова значения имени переменной, каждая из которых разделяется пробелом. Брекеты изолируют имя от следующих символов, которые в противном случае были бы частью этого. Переменные Shell имеют имена, состоящие из 20 букв и цифр, начинающихся с буквы. Символ подчеркивания считается буквой. Если имя не является переменной оболочки, но установлено в среде, то это значение возвращается (но модификаторы `: 'и другие формы, приведенные ниже, в этом случае недоступны).

$ Имя [селектор]

$ {Имя [селектор]}
Заменяет только выбранные слова из значения имени. Селектор подвергается подстановке `$ 'и может состоять из одного числа или двух чисел, разделенных символом` -'. Первое слово значения переменной имеет номер 1. Если первое число диапазона опущено, по умолчанию используется значение «1». Если последний член диапазона опущен, по умолчанию используется `$ # name '. Селектор `* 'выбирает все слова. Это не ошибка для диапазона, который должен быть пустым, если второй аргумент опущен или находится в диапазоне.
$ 0
Заменяет имя файла, из которого считывается ввод команды. Происходит ошибка, если имя неизвестно.

$ номер

$ {Номер}
Эквивалент `$ argv [number] '.
$ *
Эквивалент `$ argv ', который эквивалентен` $ argv [*]'.

Модификаторы `: ', описанные в разделе« Замена истории », кроме«: p », могут быть применены к приведенным выше замещениям. Можно использовать более одного. (+) Скобки могут понадобиться для изоляции замены переменных из буквального двоеточия, как и при замене истории (q.v.); любые модификаторы должны появляться в фигурных скобках.

Следующие подстановки не могут быть изменены с помощью модификаторов `: '.

$? Имя

$ {?} Имя
Заменяет строку `1 ', если имя установлено,` 0', если это не так.
$? 0
Заменяет `1 ', если текущее имя входного файла известно,` 0', если это не так. Всегда `0 'в интерактивных оболочках.

$ # Имя

$ {# Имя}
Заменяет количество слов по имени.
$ #
Эквивалентен `$ # argv '. (+)

$ Имя%

$ {Имя}%
Заменяет количество символов в имени. (+)

$ Номер%

$ {% Число}
Заменяет количество символов в $ argv [number]. (+)
$?
Эквивалент `$ status '. (+)
$$
Заменяет (десятичный) номер процесса (родительской) оболочки.
$!
Заменяет (десятичный) номер процесса последнего фонового процесса, запускаемого этой оболочкой. (+)
$ _
Заменяет командную строку последней выполненной команды. (+)
$ <
Заменяет линию со стандартного ввода, без дальнейшей интерпретации. Его можно использовать для чтения с клавиатуры в сценарии оболочки. (+) Пока csh всегда цитирует $ <, как если бы он был эквивалентен `$ <: q ', tcsh этого не делает. Кроме того, когда tcsh ожидает ввода строки, пользователь может ввести прерывание для прерывания последовательности, в которую должна быть заменена строка, но csh не позволяет этого.

Команда редактора expand-variables, обычно связанная с `^ X- $ ', может использоваться для интерактивного расширения отдельных переменных.
Подстановка команды, имя файла и каталога
Остальные подстановки применяются выборочно к аргументам встроенных команд. Это означает, что части выражений, которые не оцениваются, не подвергаются этим разложениям. Для команд, которые не являются внутренними для оболочки, имя команды заменяется отдельно от списка аргументов. Это происходит очень поздно, после выполнения перенаправления ввода-вывода и дочернего элемента основной оболочки.

Замена команд
Подстановка команд указана командой, заключенной в `` '. Результат такой команды разбивается на отдельные слова в пробелах, вкладках и новых строках, а нулевые слова отбрасываются. Вывод является переменным, а команда заменена и помещается вместо исходной строки.

Замены команд внутри двойных кавычек (`` ') сохраняют пробелы и табуляции, только новые строки заставляют новые слова. Единственная конечная новая строка не заставляет новое слово ни в коем случае. Таким образом, подмена команды может дать только часть слова , даже если команда выводит полную строку.

По умолчанию оболочка с версии 6.12 заменяет все символы новой строки и символа возврата каретки в команде пробелами. Если это отключено, отключив csubstnonl, новые строки разделяют команды как обычно.
Замена имени файла
Если слово содержит любые символы `* ',`?', `['Или` {' или начинается с символа `~ ', это кандидат на замену имени файла, также известный как` `globbing' '. Это слово затем рассматривается как шаблон («glob-pattern») и заменяется алфавитно отсортированным списком имен файлов, которые соответствуют шаблону.

В совпадающих именах файлов символ `. ' в начале имени файла или сразу после символа `/ ', а также символ` /' должен быть явно указан. Символ `* 'соответствует любой строке символов, включая нулевую строку. Символ `? ' соответствует любому одиночному символу. Последовательность `[...] 'соответствует любому из заключенных символов. Внутри [...] 'пара символов, разделенных символом `-', соответствует любому символу лексически между двумя.

(+) Некоторые шаблоны glob могут быть сведены на нет: последовательность `[^ ...] 'соответствует любому одиночному символу, не указанному символами и / или диапазонами символов в фигурных скобках.

Весь шаблон glob также можно отменить с помощью `^ ':

> echo *
грохот аварии
> echo ^ cr *
ударять

Шаблоны Glob, которые не используют `? ',` *' Или `[] 'или которые используют` {}' или `~ '(см. Ниже), неправильно сбрасываются.

Метанотация `a {b, c, d} e 'является сокращением для` abe ace ade'. Порядок слева направо сохраняется: `/usr/source/s1/{oldls,ls}.c 'расширяется до` /usr/source/s1/oldls.c /usr/source/s1/ls.c'. Результаты матчей сортируются отдельно на низком уровне для сохранения этого порядка: `../{memo,*box} 'может расширяться до` ../memo ../box ../mbox'. (Обратите внимание, что `memo 'не сортировалось с результатами сопоставления` * box.) Это не ошибка, когда эта конструкция расширяется до файлов, которые не существуют, но можно получить сообщение об ошибке из команды, расширен список. Эта конструкция может быть вложенной. В качестве специального случая слова `{',`}' и `{} 'передаются без изменений.

Символ `~ 'в начале имени файла относится к домашним каталогам. Стоя в одиночку, т. Е. `~ ', Он расширяется до домашнего каталога invoker, как это отражено в значении переменной home shell. Когда за ним следует имя, состоящее из букв, цифр и символов `- ', оболочка ищет пользователя с этим именем и заменяет свой домашний каталог; таким образом, `~ ken 'может расширяться до` / usr / ken' и `~ ken / chmach 'до` / usr / ken / chmach'. Если за символом `~ 'следует символ, отличный от буквы или` /', или появляется в другом месте, кроме как в начале слова, он остается невозмущенным. Команда, подобная `setenv MANPATH / usr / man: / usr / local / man: ~ / lib / man ', поэтому не делает замену домашней директории, как можно было бы надеяться.

Это ошибка для шаблона glob, содержащего `* ',`?', `['Или` ~', с или без `^ ', чтобы не соответствовать никаким файлам. Тем не менее, только один шаблон в списке glob-шаблонов должен соответствовать файлу (так что, например, `rm * .a * .c * .o 'потерпит неудачу, только если в текущем каталоге, заканчивающемся на` `, не было файлов. a ', `.c' или` .o '), и если установлена ​​переменная оболочки nonomatch, шаблон (или список шаблонов), который не соответствует ни одному, не остается неизменным, а не вызывает ошибку.

Переменная оболочки noglob может быть установлена ​​для предотвращения подстановки имени файла, а команда редактора расширения-glob, обычно связанная с `^ X- * ', может использоваться для интерактивного расширения отдельных подстановок имен файлов.

Подстановка стека каталога (+)
Стек каталога представляет собой список каталогов, нумерованных от нуля, используемых командами pushd, popd и dirs (q.v.). dirs могут печатать, хранить в файле, восстанавливать и очищать стек каталога в любое время, а переменные оболочки savedirs и dirsfile могут быть установлены для автоматического хранения стека каталога при выходе из системы и восстановления его при входе в систему. Переменная оболочки dirstack может быть проверена, чтобы увидеть стек каталога и установить для размещения произвольных каталогов в стек каталога.

Символ `= ', за которым следует одна или несколько цифр, расширяется до записи в стеке каталога. Специальный случай `= - 'расширяется до последнего каталога в стеке. Например,

> dirs -v
0 / usr / bin
1 / usr / spool / uucp
2 / usr / accts / sys
> echo = 1
/ USR / катушка / UUCP
> echo = 0 / calendar
/ USR / бен / календарь
> echo = -
/ USR / ACCTS / SYS

Переменные оболочки noglob и nonomatch и команда редактора expand-glob применяются к стеку каталогов, а также заменам имен файлов.

Остальная часть материала не вместилась из-за ограничений ucoz - вторая часть мануала

Категория: (1) Прикладные программы и команды оболочки | Просмотров: 509 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar