Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 83
Текст из файла (страница 83)
Можно читать значения переменных, но изменять их нельзя. В интерпретаторе bash дляприсваивания неизменяемого значения допускается следующая запись: variable=value.Встроенные командыПараметры561readonly—а Считать все последующие аргументы именами массивов.—f Считать все последующие аргументы именами функций, устанавливать для них режим read-only (толькодля чтения).—р Отобразить все переменные, значения которых изменять запрещено (режим по умолчанию).return [n]returnРазмещается в теле функции. Данное ключевое слово обеспечивает выход из функции и возврат кода п либо кода завершения последней выполненной команды.select name [in word-list; ]docommandsdoneselectПрисвоить значение переменной пате в соответствии с выбором пользователя из списка вариантов wordlist. Ввод пользователя сохраняется в переменной REPLY, а выбранноезначение в переменной пате.
После этого выполняются команды commands, пока не встретится ключевое слово breakили return. Стандартное приглашение может изменяться спомощью переменной интерпретатора PS3.set [options] [argl arg2 ...]Команда без аргументов отображает значения всех переменных, доступных работающему интерпретатору. Режимы могут включаться (-option) или выключаться (+option).
Режимы также могут устанавливаться при запуске интерпретатора посредством bash. Аргументы присваиваются соответственно переменным $1, $2 и т. д.Параметры—Выключить режимы — v и — х, а также обработку параметров.— Используется в качестве последнего параметра. Отключает обработку параметров, чтобы аргументы, начинающиеся с символа «—», не принимались ошибочно за пара-set562setГлава 7. bash: командный интерпретатор Борнаметры. (Например, если необходимо присвоить $1 значение -1.) Если за параметром не следуют никакие аргументы, происходит освобождение позиционных параметров.—а После выполнения этой команды автоматически отмечать переменные для экспортирования после их определения или изменения.— b Отображать состояние фонового задания по завершении, не дожидаясь следующего приглашения интерпретатора.— е Завершить работу, если код завершения команды не равен нулю.— f He производить расширение специальных символов(globbing) в именах файлов (например, *?[]).— h Запоминать расположение команд по мере их определения.— k Присваивания переменной среды (var=value) будут выполняться независимо от того, в каком месте команднойстрок они фигурируют.
В обычных условиях присваивания должны предшествовать командам.—т Режим наблюдения. Включается управление заданиями; фоновые процессы выполняются в отдельной группепроцессов. Режим —т, как правило, устанавливаетсяавтоматически.— п Производить чтение команд, но не выполнять их; используется для поиска ошибок. Удобно применять в пакетном режиме работы командных интерпретаторов.Перечислить режимы интерпретатора либо включить режим т. Многие режимы могут быть установлены с помощью отдельных параметров. Существующие режимы:allexportДействует идентично —а.braceexpandДействует идентично —В.emacsРежим по умолчанию. Редактирование команднойстроки в Emacs-стиле.en-exitДействует идентично — е.Встроенные командыhashallДействует идентично —h.histexpandДействует идентично -Н.historyРежим по умолчанию.
Вести журнал команд.ignoreeofНе выполнять завершение по нажатию клавиш Ctrl-D(EOF, символ конца файла). Для выхода из интерпретатора в таком случае необходимо использовать exit.Эквивалентно установке значения переменной интерпретатора IGNOREEOF=1.interactive-commentsСчитать комментариями все слова, начинающиеся ссимвола #, и следующие за ними в той же строке.keywordДействует идентично —k.monitorДействует идентично —т.noclobberДействует идентично —С.поехесДействует идентично —п.noglobДействует идентично —f.notifyДействует идентично —Ь.nounsetДействует идентично —и.onecmdДействует идентично —t.physicalДействует идентично —Р.posixСоблюдать рамки стандарта POSIX.563setГлава 7.
bash: командный интерпретатор Борна564setprivilegedДействует идентично —р.verboseДействует идентично —v.vi Перейти к vi-стилю редактирования командной строки.xtraceДействует идентично —х.Перечислить режимы или выключить указанный режим. Список режимов см. выше.—р Запуск для привилегированного пользователя; не обрабатывать файл $HOME/.profile.—t Завершение работы после выполнения одной команды.—и При подстановке выдавать ошибку, если переменная неопределена.—v Отображать каждую командую строку интерпретаторапо мере чтения.-х Отображать выполненные команды и аргументы с префиксом, определяемым значением переменной PS4.Этот режим способствует пошаговой отладке сценариевинтерпретатора (режим идентичен -о xtrace).—В Режим по умолчанию.
Разрешить расширение фигурных скобок.—С То же, что и noclobber.—Н Режим по умолчанию. Разрешить команды с префиксами ! и !!.-Р Отображать абсолютные пути в выводе команды pwd. Поумолчанию bash включает в путь символические ссылки (если таковые имеются).Примерыset — "$num" -20 -30set -vxset +хset -о noclobberset +o noclobberПрисвоить переменным $1, $2 и $3 значения $пит, -20 и -30, соответственноЧитать каждую командную строку,отображать ее, выполнять, отображать повторно (с аргументами)Запретить отслеживание выполнениякомандЗапретить перезапись файловРазрешить перезапись файловВстроенные командыshift [п]565shiftСмещение позиционных параметров (например, $2 становится $1).
Если параметр п задан, происходит смещениевлево на п позиций.source file [arguments]sourceПоследовательно читать строки файла file. Файл не обязательно должен быть исполняемым, но должен находиться водном из каталогов, задаваемых переменной PATH.suspend [-f ]suspendИдентично Ctrl-Z. Часто используется для приостановки работы программы su.Параметр—f Принудительная приостановка, даже если текущий интерпретатор является основным (интерпретатором поумолчанию).test conditionили[ condition ]Вычислить условие (condition) и, если оно истинно, вернутьнулевой код завершения. В противном случае вернуть ненулевой код завершения. В альтернативной форме командыиспользуются квадратные скобки вместо слова test.
Условиестроится из приведенных ниже выражений. Условие истинно, если истинно его описание.Условия на файл—a fileФайл существует.-b fileФайл существует и является специальным файлом блочного устройства.-с fileФайл существует и является специальным файлом символьного устройства.testГлава 7. bash: командный интерпретатор Борна566test-d fileФайл существует и является каталогом.-е f i l eФайл существует.-(fileФайл существует и является обычным файлом.-g fileФайл существует и у него установлен бит смены идентификатора группы.-h fileФайл существует и является символической ссылкой.-k fileФайл существует и у него установлен бит-«липучка»(sticky-bit) (в настоящее время не используется).-р fileФайл существует и является именованным каналом (FIFO).-г fileЧтение файла разрешено.-s fileРазмер файла ненулевой.-t[n]Открытый файловый дескриптор п связан с устройствомтерминала; по умолчанию п равно 1.-u fileФайл существует и у него установлен бит смены идентификатора пользователя.-w fileЗапись в файл разрешена.-х fileФайл является исполняемым.-G fileФайл существует и его группа-владелец является эффективной группой-владельцем процесса.-L fileФайл существует и является символической ссылкой.Встроенные команды567-N fileФайл был изменен со времени последнего доступа к нему.test-О f i l eФайл существует и его владелец является эффективнымвладельцем процесса.-S fileФайл является сокетом (socket)./l-ef/2Файлы fl и /2 связаны (ссылаются на один и тот жефайл).fl -nt f2Файл fl новее файла f2.fl -ot f2Файл fl старше файла f2.Строковые условия—nslСтрока si имеет ненулевую длину.—о siУстановлен режим интерпретатора si.
Режимы интерпретатора приведены в описании встроенной командыset.—г siСтрока si имеет нулевую длину.si =s2Строки si и s2 идентичны.si == s2Строки si и s2 идентичны.si \=s2Строки si и s2 не идентичны.si <s2Строка si меньше строки s2 по алфавиту (либо по другому активному критерию сортировки). По умолчанию производится посимвольное сравнение в рамках таблицысимволов ASCII.si >s2Строка si больше строки s2 по алфавиту (либо по другомуактивному критерию сортировки).Глава 7. bash: командный интерпретатор Борна568teststringСтрока не пуста.Целочисленные сравненияnl -eq n2nl равно п2.nl -ge n2nl больше либо равно п2.nl -gt n2nl больше п2.nl -1е п2nl меньше либо равно п2.nl -It n2nl меньше п2.nl -пе п2nl не равно п2.Сочетание условий! conditionИстинно, если условие condition ложно.conditionl —a condition2Истинно, если истинны оба условия.conditionl -о condition2Истинно, если истинно хотя бы одно из условий.ПримерыКаждый из следующих примеров представляет собой первую строку какого-либо оператора, использующего проверку условий:while test $» -gt 0while [ -n "$1" ]if [ Scount -It 10 ]if [ -d RCS ]if [ "Sanswer" != "y" ]if [ ! -r "$1" -o ! -f "$T ]Пока есть аргументы...Пока первый аргумент не пуст...Если $count меньше 10...Если существует каталог RCS...Если ответ - не у...Если первый аргумент являетсяфайлом, запрещенным для чтения,или не является обычным файлом...Встроенные командыtimes569timesВывести суммарное время исполнения процессов для пользователя и всей системы.trap [-1] [ [commands] signals]Выполнить команды commands при получении любого изперечисленных сигналов (signals).
Обычно это сигналы с номерами О, 1, 2 и 15. Если команд больше одной, они должныбыть заключены в кавычки и разделены символом точка сзапятой. Если команды являются пустой строкой (напримерtrap ""signals), сигналы будут игнорироваться интерпретатором. Если команды опущены совсем, восстанавливаетсяобработка перечисленных сигналов, принимаемая по умолчанию. Если опущены и команды и сигналы, то перечисляются текущие установки перехвата сигналов.
См. примеры вконце описания этой команды, а также для команды exec.Параметр—1 Перечислить сигналы.СигналыСигналы перечисляются в парах с событиями, посылающими эти сигналы.0 Выход из интерпретатора (обычно по завершении сценария).1 Hang up (обычно по завершении сеанса работы).2 Прерывание (обычно Ctrl-C).345678910111213Выход.Недопустимая команда.Отслеживание перехвата.Аварийное завершение.Не используется.Исключение при работе с действительными числами.Принудительное завершение.Определяется пользователем.Ссылка на недействительную область памяти.Определяется пользователем.Запись данных в конвейер при отсутствии читающегопроцесса.trap570trapГлава 7. bash: командный интерпретатор Борна14 Завершение аварийного сигнала по лимиту времени.15 Программное принудительное завершение (обычно с помощью kill).16 Ошибка стека сопроцессора.17 Принудительное завершение порожденного процесса.18 Продолжение (если выполнение было приостановлено).19 Остановить процесс.202122232425262728Остановка с терминала.Ввод с терминала для фонового задания.У фонового задания есть данные для вывода на терминал.Не используется.Не используется.Не используется.Не используется.Не используется.Не используется.29 Доступны операции ввода/вывода для канала.Примерыtrap "" 2trap 2Игнорировать сигнал 2Вернуться к прежнему поведениюУдалить файл $tmp, когда программа интерпретатора прекратит работу либо пользователь закончит сеанс работы,нажмет клавиши <Ctrl>+<C> или принудительно завершитзадачу посредством команды kill.trap "rm -f $tmp; exit" 0 1 2 15typetype [options] commandsОтобразить абсолютные пути программ, выполняемых покомандам commands, и вывести информацию о том, хешировано ли (см.