Bash. Карманный справочник системного администратора [Арнольд Роббинс] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

O 'R E IL L Y 4
*

Bash
Карманный
справочник
ДЛЯ СИСТЕМНОГО АДМИНИСТРАТОРА

Арнольд Роббинс

2-Е ИЗДАНИЕ

Bash
К арм анны й справочник

SECOND EDITION

Bash
Pocket Reference

Arnold Robbins

Beijing •Boston • Farnham •Sebastopol •Tokyo O ’ REILLY

2-Е ИЗДАНИЕ

Bash
Карманный справочник

Арнольд Роббинс

Р | лцдлЕктикд
Москва • Санкт-Петербург • Киев
2017

ББК 32.973.26-018.2.75
Р58
УДК 681.3.07
Компьютерное издательство “Диалектика”
Зав. редакцией С .Н . Т р и губ
Перевод с английского и редакция И .В . Б е р ш т е й н а
По общим вопросам обращайтесь в издательство “Диалектика” по адресу:
info@dialektika.com, http://www.dialektika.com

Роббинс, Арнольд.

Р58

Bash. Карманный справочник системного администрато­
ра, 2-е и зд.: Пер. с англ. — С п Б .: О О О “Альфа-книга”, 2017. —
152 с . : ил. — Парал. тит. англ.
ISBN 978-5-9909445-4-1 (рус.)
ББК 32.973.26-018.2.75
Все названия программных продуктов являются зарегистрированными
торговыми марками соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть
воспроизведена в какой бы то ни было форме и какими бы то ни было сред­
ствами, будь то электронные или механические, включая фотокопирование
и запись на магнитный носитель, если на это нет письменного разрешения
издательства O ’Reilly & Associates.
Authorized Russian translation o f the English edition o f Bash Pocket Reference:
Help fo r Power Users and Sys Adm ins (ISBN 978-1-491-94159-1) © 2016 Arnold
Robbins.
This translation is published and sold by permission o f O ’Reilly Media, Inc.,
which owns or controls all rights to publish ana sell the same.
A ll rights reserved. N o part o f this book may be reproduced or transmitted in
any form or by any means, electronic or mechanical, including photocopying, re­
cording, or by any information storage or retrieval system, without the prior written
permission o f the copyright owner and the Publisher.

Научно-популярное издание
Арнольд Роббинс

Bash
Карманный справочник системного администратора
2-е издание
Литературны й редактор

Верстка
Худож ественны й редактор

Корректор

И .А . П опова
О.В. М и ш у т и н а
В.Г. П авлю т ин
Л .А . Гордиенко

Подписано в печать 24.07.2017. Формат 84x108/32.
Гарнитура Times. Усл. печ. л. 4,8. Уч.-изд. л. 5,6.
Тираж 500 экз. Заказ № 5123.
Отпечатано в А О «Первая Образцовая типография»
Филиал «Чеховский Печатный Двор»
142300, Московская область, г. Чехов, ул. Полиграфистов, д.1
О О О “И . Д. Вильямс”, 127055, г. М осква, ул. Лесная, д. 43, стр. 1
ISBN 978-5-9909445-4-1 (рус.)
ISBN 978-1-491-94159-1 (англ.)

©2017 Компьютерное издательство “Диалектика”,
перевод, оформление, макетирование
© 2016 Arnold Robbins

Содержание
Об авторе
Благодарности

7
7

Благодарности из первого издания
От издательства

7
8

Карманный справочник по оболочке Bash

9

Условные обозначения
История развития оболочки

10
10

Краткий обзор функциональных средств
Вызов оболочки
Параметры командной строки
Аргументы
Код завершения команды
Синтаксис
Специальные файлы
Метасимволы подстановки имен файлов
Раскрытие скобок
Управляющие последовательности символов
Заключение в кавычки
Формы команд
Формы переадресации ввода-вывода

11
12
13
15
15
16
16
17
20
22
23
25
26

Функции
Переменные
Присваивание значений переменным
Подстановка переменных
Косвенные переменные
Переменные, встроенные в оболочку
Другие переменные оболочки
Массивы
Специальные строки приглашений

33
36
36
38
43
44
50
56
58

Арифметические выражения
Операции
Примечания

59
60
61

Предыстория выполнения команд
Режим редактирования строк
Команда f с
Предыстория команд в стиле оболочки Сshell

62
62
63
64

Автозавершение вводимых команд
Управление заданиями
Параметры оболочки
Выполнение команд
Сопроцессы
Ограниченные оболочки

66
73
74
81
83
84

Встроенные команды
Дополнительные источники информации
Оперативно доступные ресурсы
Литература
Предметный указатель

б

Содержание



85
144
144
145
146

Обавторе
Арнольд Роббинс — профессиональный программист и ав­
тор технической литературы. Он работает с системами Unix
с 1980 года, а с языком Awk — с 1987 года. Будучи членом группы,
принимавшей стандарт POSIX 1003.2 путем прямого голосова­
ния, он способствовал формированию этого стандарта для Awk.
Арнольд специально занимается сопровождением версии GNU
(gawk) языка Awk и документацией на него. Кроме того, он явля­
ется автором четвертого издания книги Effective awk Programming
и одним из авторов второго издания книги Classic Shell Scripting
(обе вышли в издательстве O’Reilly).

Благодарности
Благодарю Чета Рэйми (Chet Ramey), сопровождающего
Bash, за возможность получить доступ к прежним выпускам
версии Bash 4.4, ответы на возникавшие вопросы и рецензиро­
вание рукописи этого справочника. Благодарю также Роберта
П. Дж. Дэя (Robert P.J. Day) за рецензирование рукописи насто­
ящего издания. Выражаю признательность Эли Зарецкому (Eli
Zaretskii) за комментарии к предыдущему изданию и рецензиро­
вание рукописи настоящего издания. Наконец, благодарю Энди
Орама (Andy Oram) из издательства O’Reilly за его поддержку
в обновлении настоящего издания.

Благодарности из первого издания
Благодарю Чета Рэйми, сопровождающего Bash, за возм ож ­
ность получить доступ к прежним выпускам версии Bash 4.1
и рецензирование рукописи этого справочника. Благодарю
также Роберта П. Дж. Дэя за рецензирование рукописи настоя­
щего издания и Энди Орама из издательства O’Reilly за посто­
янную поддержку данного проекта.

От издательства
Вы, читатель этой книги, и есть главный ее критик и ком­
ментатор. Мы ценим ваше мнение и хотим знать, что было
сделано нами правильно, что можно было сделать лучше и что
еще вы хотели бы увидеть изданным нами. Нам интересно ус­
лышать и любые другие замечания, которые вам хотелось бы
высказать в наш адрес.
Мы ждем ваших комментариев и надеемся на них. Вы може­
те прислать нам бумажное или электронное письмо, либо про­
сто посетить наш веб-сайт и оставить свои замечания там. Од­
ним словом, любым удобным для вас способом дайте нам знать,
нравится или нет вам эта книга, а также выскажите свое мнение
о том, как сделать наши книги более интересными для вас.
Посылая письмо или сообщение, не забудьте указать назва­
ние книги и ее авторов, а также ваш обратный адрес. Мы вни­
мательно ознакомимся с вашим мнением и обязательно учтем
его при отборе и подготовке к изданию последующих книг.
Наши электронные адреса:
E-mail:
WWW:

info@dialektika.com
http://www.dialektika.com

Наши почтовые адреса:
в России:

195027, Санкт-Петербург, Магнитогорская ул.,
д. 30, ящик 116
в Украине: 03150, Киев, а/я 152

Карманный справочник
по оболочке Bash
В этом карманном справочнике вкратце описывается обо­
лочка Bash и, в частности, ее версия 4.4 для GNU/Linux и Мас
OS X. Оболочка Bash имеется также для Solaris и различных си­
стем BSD. Ее можно скомпилировать практически для любой
другой системы Unix и даже для OpenVMS! В этом справочни­
ке рассматриваются следующие вопросы.


История развития оболочки.



Краткий обзор функциональных средств.



Вызов оболочки.



Код завершения команды.



Синтаксис.



Функции.



Переменные.



Арифметические выражения.



Предыстория выполнения команд.



Автозавершение вводимых команд.



Управление заданиями.



Параметры оболочки.



Выполнение команд.



Сопроцессы.



Ограниченные оболочки.



Встроенные команды.



Дополнительные источники информации.

Условные обозначения
Имена файлов, команд, параметров и приводимые при­
меры выделены в тексте данного справочника моноширинным
шрифтом. Все, что должно вводиться пользователем в команд­
ной строке, выделено полужирным моноширинным шрифтом,
а текст, который должен быть заменен настоящими данными
в примерах и описаниях синтаксиса, — наклонным моноши­
ринным шрифтом. Новые термины, особо подчеркиваемые
слова и выражения выделяются курсивом. И, наконец, ссыл­
ки в форме имя(Ы) обозначают номер оперативной страницы
руководства, где имя — наименование оболочки, N — раздел
руководства, оперативно доступного по команде man. Имена
переменных оболочки, в том числе и переменных окружения,
обозначаются как $VAR, где VAR — имя переменной.

История развития оболочки
Первоначально оболочка Bourne shell (т.е. оболочка Борна)
получила распространение в 1979 году вместе с системой V7
Unix и впоследствии стала стандартной для написания сце­
нариев оболочки. Оболочку Bourne shell можно по-прежнему
обнаружить в каталоге / b i n / s h многих коммерческих систем
Unix. Она не претерпела особых изменений с момента своего
выпуска, хотя с годами подвергалась незначительным улуч­
шениям. К числу наиболее примечательных новых средств,
внедренных в этой оболочке, относятся переменная CDPATH
и встроенная команда t e s t (появились в Unix System III в 1980
году), хеширование команд и функции оболочки для версии
System V Release 2 в 1984 году, а также средства управления за­
даниями, внедренные в версии System V Release 4 в 1989 году.
В оболочке Berkeley С shell (csh) предоставлялись средства,
которые оказались более удобными для применения в диало­
говом режиме (например, предыстория выполнения команд
и управление заданиями), и поэтому долгое время стандартной
10

|

Bash. Карманный справочник системного администратора

для программирования в Unix считалась оболочка Bourne shell,
а для повседневной работы — оболочка С shell. Дэвид Корн из
компании Bell Labs стал первым разработчиком, усовершен­
ствовавшим оболочку Bourne shell, дополнив ее такими cshподобными средствами, как предыстория команд, управление
заданиями и дополнительные удобства программирования.
В конечном итоге оболочка Korn shell (т.е. оболочка Корна)
превзошла своим набором функциональных средств оболочки
Bourne shell и С shell, сохранив в то же время совместимость
с предыдущими средствами программирования на языке обо­
лочки. А ныне язык и режим работы “стандартной оболочки”
определены в стандарте POSIX на основании оболочки Bourne
shell для системы Unix System V вместе с избранным поднабо­
ром функциональных средств из оболочки Korn shell.
Преследуя цель произвести систему, полностью отвечаю­
щую Unix по своим рабочим характеристикам, Фонд свобод­
ного программного обеспечения (Free Software Foundation)
разработал копию оболочки Bourne shell, написанную заново
и получившую название Bash (Bourne-Again Shell — “возрож­
денная” оболочка Борна). Со временем Bash стала совмести­
мой со стандартом POSIX версией оболочки со многими до­
полнительными средствами, перекрывающими аналогичные
средства оболочки Korn shell, хотя Bash не является точной
копией оболочки Korn shell. В настоящее время оболочка Bash
считается едва ли не самой широко распространенной верси­
ей, производной от оболочки Bourne shell.

Краткий обзор функциональных средств
В оболочке Bash предоставляются следующие функцио­
нальные средства и возможности.


Переадресация ввода-вывода.



Применение метасимволов подстановки для сокраще­
ния имен файлов.

Краткий обзор функциональных средств

11



Переменные и параметры для специальной настройки
рабочей среды.



Встроенный набор команд для написания программ
оболочки.



Функции и оболочки для модульной организации задач,
выполняемых в программах оболочки.



Управление заданиями.



Редактирование с использованием синтаксиса команд
редактора v i или Emacs, имитирующее режим команд­
ной строки.



Доступ к предыдущим командам (из предыстории их вы­
полнения) и возможность редактировать эти команды.



Целочисленные арифметические операции.



Массивы и арифметические выражения.



Применение псевдонимов для сокращения имен команд.



Прямая совместимость со стандартом POSIX.



Средства интернационализации.



Цикл fo r для повторного выполнения арифметических
операций.

Вызов оболочки
Интерпретатор команд оболочки Bash (bash) можно вы­
звать следующим образом:
bash [параметры]

[аргументы]

Команды оболочки Bash можно выполнять с терминала, из
файла (когда в качестве первого аргумента указан сценарий)
или из стандартного ввода (если аргументы отсутствуют или
указан параметр -s). Оболочка автоматически выводит при­
глашение на ввод команд, если стандартный ввод производится
с терминала или в командной строке указан параметр - i.
12

|

Bash. Карманный справочник системного администратора

Во многих системах путь к оболочке Bash осуществляется
по ссылке /b in /s h . Если же оболочка Bash вызывается как sh,
она действует в большей степени как традиционная оболочка
Bourne shell. В частности, исходные оболочки читают содер­
жимое файлов / e t c / p r o f i l e и - / . p r o f i l e , а обычные обо­
лочки — содержимое переменной окружения $ENV, если она
установлена. Подробнее об этом можно узнать на оперативной
странице руководства bash(l).

Параметры командной строки
Во встроенной команде s e t (подробное ее описание при­
ведено ниже, в разделе “Встроенные команды”) могут быть
указаны однобуквенные параметры командной строки, при­
веденные ниже.
-с строка. Читать команды из указанной строки.
-D, -dump-strings. Вывести из программы все символь­

ные строки, представленные в форме
-i. Создать интерактивную оболочку (с приглашением

на ввод команд). Этот параметр может и не применять­
ся в команде s e t.
-1, --login. Обозначает такой же режим, как и для исход­

ной оболочки.
-О параметр. Активизирует заданный параметр команды
shopt. Для установки заданного параметра в исходное
состояние служит параметр +0.
-р. Начать работу в качестве привилегированного поль­

зователя. Не читать содержимое переменной окруже­
ния $ENV или $BASH_ENV; не пытаться импортировать
функции из рабочей среды, а также игнорировать зна­
чения переменных BASHOPTS, CDPATH, GLOBIGNORE
и SHELLOPTS. В этом случае читается содержимое обыч­
ных файлов запуска (например, - / . b a sh _ p ro f Н е ).

Вызов оболочки

|

13

-г, — restricted. Создать ограниченную оболочку (см.

далее раздел “Ограниченные оболочки”).
-s. Читать команды из стандартного ввода. Результаты, вы­

водимые из встроенных команд, направляются в файл
с дескриптором 1, а все остальные результаты, выводи­
мые из оболочки, — в файл с дескриптором 2.
-v, — verbose. Выводить строки по мере их чтения обо­
лочкой.
--d e b u g g e r. Если при запуске доступен отладочный
профиль, прочитать его и активизировать параметр
extdebug команды shopt. Служит для применения в от­
ладчике оболочки Bash (подробнее об этом см. по адре­
су h t t p : / /b a s h d b . s o u r c e f o r g e . n e t).
--dump-po-strings. To же, что и параметр -D, но на этот

раз строки выводятся в формате g e t t e x t по общей ли­
цензии GNU.
— help. Вывести сообщение об использовании команды

и успешно завершить.
--init-f ile файл, --rcfile файл. Использовать указан­

ный файл вместо файла - / . b a s h r c для запуска инте­
рактивных оболочек.
— noediting. Не пользоваться библиотекой GNU Readline
для ввода, даже в интерактивной оболочке.
— noprofile. Не читать файл / e t c / p r o f i l e или любые

другие личные файлы запуска.
--погс. Не читать файл ~ /.b a s h r c . Активизируется авто­

матически, когда оболочка вызывается как sh.
— posix. Активизировать режим работы по стандарту

POSIX.
--version. Вывести сообщение об используемой версии

оболочки и успешно завершить.
-, — . Завершить обработку параметров.
Пояснение остальных параметров приведено далее, в разде­
ле “Встроенные команды” при описании команды s e t.
14

|

Bash. Карманный справочник системного администратора

Аргументы
Аргументы присваиваются позиционным параметрам $1,
$2 и т.д. Если в качестве первого аргумента указывается сце­
нарий, из него читаются команды, а остальные аргументы при­
сваиваются позиционным параметрам $1, $2 и т.д. Имя сце­
нария доступно в качестве позиционного параметра $0. Файл
самого сценария не обязательно должен быть исполняемым,
но доступным для чтения.

Код завершения команды
По завершении любой команды предоставляется числовой
код ее завершения или возвращаемое значение. Внешние ко­
манды вроде Is предоставляют такое значение операционной
системе. А внутренние команды вроде cd предоставляют его
непосредственно оболочке.
Оболочка автоматически извлекает возвращаемое значе­
ние по завершении команды. По общепринятому соглашению
нулевой код завершения означает истинный или удачный ис­
ход выполнения команды, а любой другой код завершения —
ложный или неудачный исход ее выполнения. Именно таким
образом в оболочке организуется управление потоком команд
в таких операторах, как i f , w hile и u n til.
Кроме того, оболочка делает значение, возвращаемое по­
следней выполнявшейся командой, доступным для своего сце­
нария в переменной $?. Но, как правило, это значение следует
сохранять в другой переменной, поскольку последующие ко­
манды из сценария перезапишут его в переменной $?.
Значения кодов завершения могут находиться в пределах
от 0 до 255. Для обозначения отдельных условий завершения
команд в оболочке применяются конкретные значения, пере­
численные ниже.

Код завершения команды

|

15

Числовое значение Назначение
кода завершения
О Обозначает удачный исход выполнения команды
2 Возвращается встроенными командами для указания
на ошибки в их использовании
12 6 Обозначает, что команда была обнаружена, но не выполнена
127 Обозначает, что команда не была обнаружена
128+N Обозначает, что выполнение команды было прервано, по­
скольку был получен сигнал N

Синтаксис
В этом разделе описываются многие обозначения, прису­
щие рассматриваемой здесь оболочке. В нем поочередно рас­
сматриваются следующие вопросы:


Специальные файлы.



Метасимволы подстановки имен файлов.



Раскрытие скобок.



Управляющие последовательности символов.



Заключение в кавычки.



Формы команд.



Формы переадресации ввода-вывода.

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


16

Файл / e t c / p r o f i l e . Выполняется автоматически при
входе в систему.

|

Bash. Карманный справочник системного администратора



Первый файл, обнаруживаемый в следующем списке:
- / . b a s h _ p r o f i l e , ~ / .b a s h _ lo g in или - / . p r o f i l e .
Выполняется автоматически при входе в систему.



Файл - /.b a s h r c . Читается всякой неисходной оболоч­
кой. Но если оболочка Bash вызывается как sh или с па­
раметром —p o s ix , то она читает содержимое перемен­
ной окружения $ENV ради обеспечения совместимости
со стандартом POSIX.

Функции getpwnam () и getpw uid () из библиотеки С слу­
жат для выдачи информации о начальных каталогах по сокра­
щениям -имя. (В персональных системах база данных пользо­
вателя хранится в файле /e tc /p a s s w d . Но в сетевых системах
эта информация может поступать из служб NIS, NIS+, LDAP
и других источников, а не из файла паролей на рабочей станции
пользователя.)
Когда происходит выход из интерактивной исходной обо­
лочки или же в неинтерактивной исходной оболочке выпол­
няется встроенная команда e x it, оболочка Bash читает и вы­
полняет содержимое файла - / .b a sh _ lo g o u t, при условии, что
этот файл существует. (Исходной является та оболочка, где
установлен параметр -1.)

Метасимволы подстановки имен файлов
Ниже перечислены метасимволы, применяемые для под­
становки имен файлов.
*

Совпадение с любой строкой, содержащей от нуля и больше символов

?

Совпадение с любым символом

[ abc... ]

Совпадение с любым символом в квадратных скобках, где дефис может
обозначать заданный диапазон символов (например, a-z, A-Z, 0-9)

[! abc... ] Совпадение с любым символом, кроме тех, которые указаны в квадрат­
ных скобках
*

Начальный каталог текущего пользователя

-и м я

Начальный каталог пользователя, имеющего указанное имя

-+

Текущий рабочий каталог (содержимое переменной $PWD)
Предыдущий рабочий каталог (содержимое переменной $OLDPWD)

Синтаксис

|

17

Если установлен параметр e x tg lo b , то для подстановки
имен файлов применяются следующие метасимволы.
? (ш а б ло н )

Совпадение с нулевым или единичным количеством экземпляров

* (ш а б ло н )

Совпадение с нулевым или большим количеством экземпляров

+ (ш а б л о н )

Совпадение с единичным или большим количеством экземпля­

@ (ш а б л о н )

Точное совпадение с одним экземпляром заданного ш а б л о н а

заданного ш а б л о н а

заданного ш а б л о н а

ров заданного ш а б л о н а

• (ш а б л о н )

Совпадение с любыми символьными строками, н е совпадающими
с заданным ш а б л о н о м

В качестве заданного шаблона может служить последователь­
ность шаблонов, разделяемая знаком | , который обозначает, что
совпадение может произойти с любым из перечисленных шабло­
нов. Этот расширенный синтаксис напоминает синтаксис сопо­
ставления с шаблонами, доступный в командах egrep и awk.
Если активизирован параметр g lo b s ta r , то для подстанов­
ки имен файлов применяется следующий метасимвол.
**

Совпадение со всеми файлами или нулевым или большим количеством под­
каталогов. Если дополнительно указан знак косой черты, то совпадение про­
исходит только с каталогами и подкаталогами

В оболочке Bash поддерживается обозначение [[= с= ]],
принятое в стандарте POSIX для указания на совпадение
с символами, которые имеют одинаковый вес, а также обозна­
чение [ [ . с . ] ] для последовательностей сортировки. Кроме
того, форма [ [ :к л а с с : ] ] позволяет обозначить совпадение
с перечисленными ниже классами символов.
Класс

Совпадающие символы

a ln u m

Буквенно-цифровые

a lp h a

Буквенные

a s c ii

Символы в коде ASCII (не по стандарту POSIX)

b la n k

Пробелы и знаки табуляции

c n trl

Управляющие

d ig it

Десятичные цифры

g ra p h

Непробельные

18

|

Bash. Карманный справочник системного администратора

Класс

Совпадающие символы

lower
p r in t
punct
space
upper

Строчные буквы

word

[ [: word: ] ] означает то же самое, что и [ [: alnum : ] ] (не
по стандарту POSIX)

xdigit

Шестнадцатеричные цифры

Печатаемые
Знаки препинания
Пробельные
Прописные буквы

Совет
Сценарии читаются в оболочке Bash построчно. Каждая
прочитанная строка полностью подвергается синтаксическому
анализу, прежде чем начать выполнение любой из команд в этой
строке. Такой подход чреват следующими последствиями.


Нельзя определить псевдоним и воспользоваться им в той
же самой строке.



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

То же самое касается и функций. Они подвергаются синтак­
сическому анализу все сразу, и поэтому параметр e x tg lo b нель­
зя активизировать в теле функции, ожидая, что это повлияет
только на саму функцию. Следовательно, чтобы воспользовать­
ся расширенными возможностями сопоставления с шаблонами,
следует ввести команду с этим параметром в отдельной строке,
расположив ее в самом начале сценария, как показано ниже,
shopt -s extglob

# активизировать расширенные
# шаблоны оболочки

Примеры
Is new*
cat ch?

#
#
#
#

Перечислить файлы new и new.l
Обнаружить совпадение
с последовательностью символов ch9,
но не chlO

Синтаксис

19

gvim [D-R]*

p r ! ( * .о Icore)

| Ip r

#
#
#
#
#
#

Обнаружить совпадение
с именами файлов,
начинающимися на буквы от D до R
Вывести файлы, не являющиеся
объектными и не относящиеся
к ядру системы

ПРИМЕЧАНИЕ
В современных системах диапазоны символов вроде
[D-R] не являются переносимыми. Региональные на­
стройки системы могут включать в себя не только про­
писные буквы от D до R в указанном диапазоне симво­
лов. Впрочем, для контроля над этой ситуацией можно
воспользоваться параметром g lo b a s c iir a n g e s (см. его
описание далее, в разделе “Параметры оболочки”).

Раскрытие скобок
Поддержка раскрытия скобок в оболочке Bash уже давно
основывается на аналогичном свойстве оболочки С shell. В от­
личие от символов подстановки имен файлов, раскрытие ско­
бок имеет исключительно текстовый характер. В частности,
слова, образующиеся при раскрытии скобок, совсем не обяза­
тельно должны совпадать с именами существующих файлов.
Имеются следующие формы раскрытия скобок.
p re[X t У[, Z...] Ipost. Раскрывается до preXpost, preYpost
ит.д.
pre{ s t a r t . . e n d [ . . in c r ] }post, где s t a r t и end обозна­
чают целые числа или одиночные буквы, a i n c r — целое
число. Оболочка расширяет эту конструкцию до полно­
го диапазона в пределах от s t a r t до end, увеличивая
целое число in c r, если оно указывается.

20

|

Bash. Карманный справочник системного администратора

Постфиксный и префиксный тексты в обеих формах необя­
зательны. В числовом выражении пределы s t a r t и end вместе
или по отдельности могут предваряться одним или более на­
чальным нулем. А результаты раскрытия скобок дополняются
нулями до максимальной ширины пределов s t a r t и e n d Обо­
лочка Bash игнорирует начальные нули в целом числе in c r ,
всегда интерпретируя его как десятичное значение.
Раскрытие скобок может быть вложенным, а его результа­
ты — не отсортированными. Раскрытие скобок выполняется
прежде других видов раскрытия выражений, а открывающие
и закрывающие фигурные скобки не должны заключаться в ка­
вычки, чтобы оболочка Bash смогла распознать их. Подстанов­
ки команд при раскрытии скобок игнорируются оболочкой
Bash. Чтобы избежать конфликта с подстановкой параметров,
раскрытие скобок не должно начинаться с последовательности
символов $ {.

Примеры
# раскрыть текстуально, без сортировки
$ echo h i {D D D ,В В В ,С С С ,AAA}there
hiDDDthere hiBBBthere hiCCCthere hiAAAthere
# раскрыть и найти совпадение с именами
# файлов chi, ch2, appl, арр2
$ Is {ch,app}?
# раскрыть до mv info infо.old
$ mv info{,.old}
# простая числовая подстановка
$ echo 1 to 10 is {1..10}
1 to 10 is 1 2 3 4 5 6 7 8 9 10
# числовая подстановка с приращением
$ echo 1 to 10 by 2 is {1..10..2}
1 to 10 by 2 is 1 3 5 7 9
# числовая подстановка с дополнением нулями
$ echo 1 to 10 with zeros is {01..10}
1 to 10 with zeros is 01 02 03 04 05 06 07 08 09 10

Синтаксис

|

21

Управляющие последовательности символов
В оболочке Bash управляющие последовательности символов
распознаются и интерпретируются в следующих контекстах.


Символьная строка в форме
ночные кавычки.

заключаемая в оди­



Аргументы, указываемые в командах echo -е и p r i n t f %Ь.



Форматирующие строки, указываемые в команде p r i n t f .

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

Доступность

Назначение



Все контексты



Все контексты

Звонок (BEL в коде ASCII) —
звуковой или визуальный
предупреждающий сигнал
Возврат на одну позицию



Команды

Подавить завершающий

echo -е й p r i n t f %b знак новой строки (напри­
мер, в команде echo -п)
и не выводить ни один из по­
следующих символов

\сХ

Строка в форме

Управляющий символ X




Все контексты

Переход

Все контексты

Переход

\f

Все контексты

Перевод страницы

\п

Все контексты

Перевод строки



Все контексты

Возврат каретки

\t

Все контексты

Табуляция

\uHHHH

Все контексты

Символ ННННв Юникоде

\uHHHHHHHH

Все контексты

Символ нннннннн
в Юникоде

\v

Все контексты

Вертикальная табуляция

22

|

Bash. Карманный справочник системного администратора

Управляющая
последовательность
\хНН

Доступность

Назначение

Все контексты

Шестнадцатеричное значе­
ние я н

\п п п

Строка в форме

ко­

\0 n n n

Команды e c h o
иp r in t f

Восьмеричное значение

шт

манда p r i n t f




Восьмеричное значение

шт

V

Строка в форме

Одиночная кавычка

\"

Строка в форме $ ' . . . ’

Двойная кавычка

\?

Строка в форме $ ' . . . ’

Знак вопроса

\\

Все контексты

Обратная косая черта

Кроме того, оболочка интерпретирует несколько перекры­
вающийся набор управляющих последовательностей симво­
лов, преобразуя их в соответствующие значения переменных
PSO, PSI, PS2 и PS4 для строк приглашения. Более подробно
этот вопрос обсуждается далее, в разделе “Специальные стро­
ки приглашений”.

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

Назначение

г

Разделитель команд

&

Выполнение команд в фоновом режиме

0

Группирование команд

1

Канал

< > &
* ?
"



[ ] \

Знаки переадресации
+ -

@ !

Метасимволы подстановки имен файлов
Служат для заключения в кавычки других символов
Подстановка команд

Синтаксис

23

Символ

Назначение

$

Подстановка переменных (команд или арифметиче­
ских выражений)

#

Обозначает начало комментария, продолжающегося
до конца строки

Знаки пробела, табуляции
и новой строки

Разделители строк

В кавычки могут быть заключены следующие символы.


Все, что заключено в открывающие (” ) и закрывающие (") кавычки, за
исключением перечисленных ниже символов, сохраняющих свое специ­
альное назначение
$

Подстановка (переменных, команд или арифметическая
подстановка).

’’

Обозначает конец символьной строки, заключаемой в двойные
кавычки

Подстановка команд.

’- ’

Все, что заключено в открывающие ( ’ ) и закрывающие (') одиночные
кавычки, воспринимается буквально, за исключением другого знака оди­
ночной кавычки (')

\

Символ, следующий после знака \, воспринимается буквально. Для экра­
нирования знаков ” , $ и ' их следует заключать в двойные кавычки: "..."

$

То же, что и
дарту

за исключением преобразования по языковому стан­

То же, что и
только текст в одиночных кавычках обрабатывается
с учетом управляющих последовательностей символов, как пояснялось
ранее в разделе "Управляющие последовательности символов"

Примеры
$ echo ’Single quotes "protect” double quotes'

Single quotes ’’protect" double quotes
$ echo "Well, isn't that \"special\"?"

Well, isn’t that "special"?
$ echo "You have 'Is | wc -1' files in 'pwd'"

You have 43 files in /home/bob
$ echo "The value of \$x is $x"

The value of $x is 100
$ echo $ ’A \ t B ’

A

24

В

|

Bash. Карманный справочник системного администратора

Формы команд
Ниже приведены различные формы команд, допустимые
в оболочке Bash.
and &

Выполнить указанную команду a n d в фоновом ре­
жиме

{

andl

;

and2

,

}

Выполнить указанные команды группой в текущей
оболочке

( andl

;

and2

i

)

Выполнить указанные команды группой в подобо­
лочке

andl

|

and2

Передать выход из команды a n d l по каналу на вход
команды a n d 2

cm dl

and2

Произвести подстановку команд. В частности, ис­
пользовать результат, выводимый из команды a n d 2 ,
в качестве аргумента команды a n d l

a n d l $ (a n d 2 )

Произвести подстановку команд по стандарту POSIX.
Допускается вложение

a n d $ ( (в ы р а ж е н и е ))

Произвести арифметическую подстановку по стан­
дарту POSIX. В частности, использовать числовой
результат вычисления заданного в ы р а ж е н и я в ка­
честве аргумента указанной команды a n d

a n d 7 && a n d 2

Выполнить логическую операцию И. В частности,
выполнить сначала указанную команду a n d l, а за­
тем команду a n d 2 при удачном исходе выполнения
команды a n d l Это "укороченная" форма логической
операции, при которой команда a n d 2 вообще не
выполняется при н е у д а ч н о м исходе выполнения
команды a n d l

andl

| |

and2

Выполнить логическую операцию ИЛИ. В частности,
выполнить указанную команду a n d l, а при не­
удачном исходе ее выполнения — команду a n d 2 .
Это"укороченная"форма логической операции, при
которой команда a n d 2 вообще не выполняется при
у д а ч н о м исходе выполнения команды a n d l

! and

Выполнить логическую операцию НЕ. В частности,
выполнить указанную команду a n d и выдать нуле­
вой код завершения, если выполнение команды a n d
завершится ненулевым кодом. В противном случае
выдать ненулевой код завершения, если выполнение
команды a n d завершится нулевым кодом

Синтаксис

|

25

Примеры
# Выполнить указанные команды в фоновом режиме
$ nroff file > file.txt &

# Выполнить указанные команды последовательно
$ cd; Is

# Переадресовать все выводимые результаты
$ (date; who; pwd) > logfile

# Отсортировать файл, подготовить, а затем произвести
# постраничный вывод полученных результатов
$ sort file | pr -3 | Ipr

# Отредактировать файлы, обнаруженные командой grep
$ gvim

grep -1 ifdef *.cpp'

# Указать список искомых файлов
$ egrep ’(yes|n o ) ’ 'cat list'

# Версия предыдущей формы команды по стандарту POSIX
$ egrep '(yes|no)’ $ (cat list)

# Сделать то же самое, но быстрее, хотя и не по-стандарту
# POSIX
$ egrep '(yes|no)’ $ (< list)

# Вывести файл, если он содержит заданный шаблон.
# Сделать это негласно, направив выводимый результат и
# сообщения об ошибках в файл /dev/null
$ grep XX file > /dev/null 2>&1 && Ipr file

# С другой стороны, отобразить эхом сообщение об ошибке
$ grep XX file || echo "XX not found"

Формы переадресации ввода-вывода
Ниже приведены различные формы переадресации вводавывода, допустимые в оболочке Bash.

26

|

Bash. Карманный справочник системного администратора

Дескриптор

Наименование

файла

0
1
2

Общепринятое

Стандартное устройство

сокращение

ввода-вывода

Стандартный ввод

s td in

Клавиатура

Стандартный вывод

s td o u t

Экран терминала

Стандартный вывод
ошибок

s td e rr

Экран терминала

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

Простая переадресация ввода-вывода
Ниже приведены формы простой переадресации вводавывода.
and > файл. Направить результат, выводимый из указанной
команды and, в заданный файл, фактически перезаписав
его содержимое.
and » файл. Направить результат, выводимый из указанной
команды and, в заданный файл, присоединив его к содер­
жимому данного файла.
and < файл. Взять входные данные для указанной команды
and из заданного файла.
and < текст. Все содержимое сценария оболочки вплоть
до строки, соответствующей заданному тексту, стано­
вится стандартным вводом для указанной команды and,
причем заданный текст может храниться в переменной
оболочки. Такую форму команд иногда еще называют
встраиваемым документом, где входные данные вводят­
ся с клавиатуры или из программы оболочки. Подобный
синтаксис обычно применяется в командах c a t, ex и sed.
(Если для переадресации ввода используется форма « - ,
начальные знаки табуляции удаляются из содержимого
встраиваемого документа, а остальные знаки табуляции
игнорируются при сравнении входных данных с призна­
ком конца ввода заданного текста.) Если же какая-нибудь
часть заданного текста заключается в кавычки, входные

Синтаксис

27

данные передаются буквально. В противном случае обра­
батывается содержимое, получаемое в результате подста­
новки переменных, команд и арифметических выражений.
and « < слово. Предоставить текст заданного слова вместе
с завершающим знаком новой строки в качестве входных
данных для указанной команды and (Это так называемая
встраиваемая строка — термин, заимствованный из сво­
бодно доступной версии оболочки гс, см. также раздел
“Дополнительные источники информации”.)
and О файл. Открыть заданный файл для чтения и записать
в него результат выполнения указанной команды and, на­
правляемый в стандартный вывод. Прежнее содержимое
заданного файла не нарушается1.
and &п. Направить результат, выводимый указанной коман­
дой a n d в файл с заданным дескриптором п.
andnO&n. То же, что и выше, за исключением того, что выво­
димый результат, обычно направляемый в файл с задан­
ным дескриптором ш, фактически направляется в файл
с дескриптором п.
and>&-. Закрыть стандартный вывод.
1 Если переадресация ввода обозначается как &1. Направить стандартный вывод данных
и ошибок в заданный файл.
cmd>& файл. То же, что и выше.
and &> файл. То же, что и выше, но более предпочтительная
форма.
and & » файл. Присоединить стандартный вывод данных
и ошибок к содержимому заданного файла.
and > файл, 2> файл2. Направить стандартный вывод дан­
ных в заданный файлр а стандартный вывод ошибок —
в указанный файл2.
and I t e e файлы. Направить результат, выводимый ука­
занной командой and, как в стандартный вывод (как
Синтаксис

|

29

правило, на терминал), так и в заданные файлы. См. опе­
ративную страницу руководства tee(l).
and 2>&1 | te e файлы. Направить стандартный вывод дан­
ных и ошибок из указанной команды and по каналу ко­
манде te e для переадресации как в стандартный вывод
(как правило, на терминал), так и в заданные файлы.
and | &te e файлы. То же, что и выше.
В оболочке Bash допускаются многоразрядные числовые
обозначения дескрипторов файлов, не требующие специально­
го синтаксиса. А в большинстве других оболочек для этой цели
требуется специальный синтаксис или же подобная возмож­
ность вообще не допускается.
ПРИМЕЧАНИЕ

Между дескрипторами файлов и знаком переадресации
ввода-вывода пробелы не допускаются. В остальных
случаях дополнительные пробелы допускаются, хотя
они и не обязательны.

Подстановка процессов
Ниже приведены формы переадресации ввода-вывода
с подстановкой процессов.

and< (команда). Выполнить заданную команду, соединив
ее выход с именованным каналом или файлом, откры­
тым по пути /d ev /fd , а также поместить имя файла
в список аргументов указанной команды cmd Указанная
команда and может прочитать содержимое этого файла,
чтобы обнаружить в нем результат, выводимый задан­
ной командой.
and > (команда). Выполнить заданную команду, соединив
ее вход с именованным каналом или файлом, откры­
тым в каталоге /d ev /fd , а также поместить имя файла
30

|

Bash. Карманный справочник системного администратора

в список аргументов указанной команды and. Результат,
выводимый указанной командой and в этот файл, слу­
жит в качестве входных данных для заданной команды.
Подстановка процессов доступна в тех системах, где поддер­
живаются именованные каналы обратного магазинного типа
(FIFO) или доступ к открытым файлам по их именам в каталоге
/d e v /fd . (Это справедливо для всех современных систем Unix.)
Подобным образом предоставляется возможность создавать не­
линейные каналы. Подстановка процессов недоступна в оболоч­
ках, работающих в режиме по стандарту POSIX.

Сохранение дескрипторов файлов в переменных
В оболочке Bash допускается указывать форму {имя_переменной} вместо числового обозначения дескриптора файла
при переадресации ввода-вывода. В подобных случаях оболоч­
ка выбирает в качестве дескриптора файла числовое значение
свыше 9, присваивая его именованной переменной оболочки.
Указанное имя_переменной может обозначать элементы мас­
сива и переменные, имеющие специальное назначение в обо­
лочке. Например:
# Сохранить числовое обозначение дескриптора файла

$ echo fo o { fo o fd } > /tn tp /x y z z y
foo

$ echo $ f o o f d
11

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

ПРИМЕЧАНИЕ
Открыв файл по его дескриптору подобным образом,
вы должны закрыть его сами. Оболочка Bash не сделает
это за вас.

Синтаксис

|

31

Специальные имена файлов
При переадресации ввода-вывода в оболочке Bash распоз­
нается несколько специальных имен файлов. Такие имена по­
лучают внутреннюю интерпретацию в оболочке Bash только
в том случае, если они отсутствуют в самой системе. Ниже пе­
речислены специальные имена файлов, употребляемые в обо­
лочке Bash.
/ d e v / s td in . Дубликат дескриптора файла 0.
/d e v /s td o u t. Дубликат дескриптора файла 1.
/ d e v /s td e r r . Дубликат дескриптора файла 2.
/d ev /fd /< n > . Дубликат дескриптора файла .
d e v /tcp/< host> /< port> . Оболочка Bash устанавливает
соединение с указанным хостом (т.е. сетевым узлом),
где означает имя или IP-адрес хоста, через за­
данный порт , используя полученный в итоге де­
скриптор файла при переадресации ввода-вывода.
dev /u d p /< h o st> /< p o rt> . Оболочка Bash устанавливает
соединение с указанным хостом, где означает
имя или IP-адрес хоста, через заданный порт ,
используя полученный в итоге дескриптор файла при
переадресации ввода-вывода.

Примеры
# Копировать файл parti в файл book
$ cat parti > book
# Присоединить файлы part2 и part3

$ cat part2 part3 »

book

# Отправить отчет большому начальнику

$ mail tim < report
# Встраиваемый документ составляется ниже из входных данных,
# направляемых команде sed

$ sed 's/A /XX /д’ « END_ARCHIVE
> Именно так архив оболочки зачастую ’’сворачивается",
> увязывая текст для распространения. Как правило, sed

32

|

Bash. Карманный справочник системного администратора

> выполняется из программы оболочки, а не из командной
> строки.
> END_ARCHIVE
XX
XX
XX
XX

Именно так архив оболочки зачастую "сворачивается",
увязывая текст для распространения. Как правило, sed
выполняется из программы оболочки, а не из командной
строки.

Чтобы переадресовать стандартный вывод данных в стан­
дартный вывод ошибок, достаточно сделатьследующее:
$ echo "Usage error: see administrator" 1>&2

В следующем примере выводимый из команды резуль­
тат (обнаруженные файлы) направляется в указанный файл
filelist, а сообщения об ошибках (в связи с недоступными
файлами) — в файл no_access:
$ find / -print > filelist 2> no_access

А в приведенном ниже примере сортируются два файла
и по команде d i f f предоставляются отличия в получаемых ре­
зультатах.
$ diff -u do
>
n r = $ ((i++))
> done
$ echo $vl $v2 $v3

12

# Начать цикл
# Каждая переменная получает
# особое значение
# Показать результаты

3

Преобразование существующей переменной в косвенную
отменяет действие атрибутов -с, - i , -1 и -и (описание коман­
ды d e c la re см. ниже, в разделе “Встроенные команды”).

Переменные, встроенные в оболочку
Встроенные переменные устанавливаются в оболочке ав­
томатически. Как правило, они применяются в сценариях обо­
лочки. Ко встроенным переменным применимы описанные
выше шаблоны подстановки. Следует, однако, иметь в виду,
что знак $ не является частью имени переменной, хотя ссылка
на нее всегда делается с помощью именно этого знака. Ниже
перечислены встроенные переменные, доступные в любой
оболочке, совместимой с Bourne shell.
Переменная

Что обозначает

$#

Количество аргументов в командной строке

$-

$?

Действующие в настоящий момент параметры, предоставляемые
в командной строке или задаваемые в команде s e t. Некоторые
параметры устанавливаются в оболочке автоматически
Выходное значение последней выполнявшейся команды

$$

Номер процесса, присвоенный оболочке

$!

Номер процесса, присвоенный последней команде, выполнявшей­
ся в фоновом режиме

$0

Первое слово, т.е. имя команды. Будет иметь полный путь, если
команда была найдена с помощью переменной окружения $ра т н .

$п

Отдельные аргументы командной строки (позиционные пара­
метры). Воболочке Bourne shell допускается непосредственно
ссылаться только на девять позиционных параметров (а =1-9).
А в оболочке Bash допускается указывать количество позиционных
параметров а больше 9, если для этого используется форма $ { а}

44

|

Bash. Карманный справочник системного администратора

Переменная

Что обозначает

Все аргументы командной строки ($ 1, $2 и т.д.)
Все аргументы командной строки в одной символьной строке
(" $ 1 $2..."). Значения разделяются первым символом, указан­
ным в переменной $ IF S
Все аргументы командной строки, заключенные по отдельности
в кавычки ( " $ 1 " " $ 2 " ...)

В оболочке Bash автоматически устанавливаются следую­
щие дополнительные переменные2.
Переменная

$_

Что обозначает

Временная переменная. Инициализируется путем
к выполняемому сценарию или программе. В дальнейшем
хранит последний аргумент предыдущей команды, а также
имя файла M A I L , совпадающего при проверке почты

BASH

Полный путь для вызова данного экземпляра оболочки Bash

BASHOPTS

Доступный только для чтения список активизированных
в настоящий момент параметров оболочки, разделяемый
запятыми. Каждый элемент такого списка содержит
достоверный параметр для команды s h o p t

- s. Если

данная переменная существует в рабочей среде при запуске
оболочки Bash, обозначенные параметры устанавливаются
в ней, прежде чем выполнять любые файлы запуска
B A S H P ID

Идентификатор текущего процесса, присвоенный
оболочке Bash. Иногда значение этой переменной может
отличаться от значения переменной $ $

B A S H _ A L IA S E S

Переменная ассоциативного массива, каждый элемент
которого содержит псевдоним, определенный по команде
a l i a s . При вводе элемента в этот массив создается

новый псевдоним
B ASH _AR G C

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

-S

e x t d e b u g . В исходное состояние эту

переменную установить нельзя
2Не

все эти переменные устанавливаются всегда. Например, перемен­
ные СОМР* получают свои значения только при выполнении функций
автозавершения.
Переменные

|

45

Переменная

Что обозначает

BASH_ARGV

Переменная массива, аналогичная переменной BASH_
ARGC. Каждый элемент массива содержит аргумент,
передаваемый функции или сценарию, вызываемому
по команде-точке ( .) . Действует подобно стеку, куда
помещаются значения при каждом вызове. Таким образом,
последний элемент содержит последний аргумент
самой последней вызывавшейся функции или сценария.
Устанавливается только в расширенном режиме отладки
по команде

shop t -s ex tdebug. В исходное

состояние эту переменную установить нельзя

BASH_CMDS

Переменная ассоциативного массива, каждый элемент
которого содержит ссылку на команду во внутренней хештаблице, которая ведется по команде h a s h . В качестве
индекса служит имя команды, а в качестве значения —
полный путь к команде. При вводе нового элемента
в данный массив соответствующая команда вводится
в хеш-таблицу

BASH_COMMAND

Команда, которая выполняется в текущий момент или
готовится к выполнению. В обработчике прерываний это
команда, выполняемая при появлении прерывания

BASH­
EXECUTION­
STRING
BAS H_L INENO

Строковый аргумент, передаваемый параметру - с

Переменная массива, действующая вместе

BASH— SOURCE
FUNCNAME. Так, для каждого заданного номера

с соответствующими переменными
и

функции i , начинающегося с нуля, в подстановке

$ {BASH— LINENO [i]} может быть сделан вызов
FUNCNAME [i ] } из файла $ { B A S H ­
SOURCE [i] }.Полученная информация сохраняется

функции $ {

вместе с вызовом самой последней функции. В исходное
состояние эту переменную установить нельзя

BASH_REMATCH

Переменная массива, значение которой присваивается
с помощью операции = * в конструкции [ [

] ].

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

46

|

Bash. Карманный справочник системного администратора

Переменная
BASH_SOURCE

Что обозначает
Переменная массива, содержащая имена исходных
файлов. Каждый элемент соответствует элементам

FUNCNAME и BASH—
LINENO. В исходное состояние эту переменную

массивов в переменных
установить нельзя

BASH­
SUBSHELL
BASHVER SIN FO [0]
BASH_
V ER SIN FO [1]
BASH_
VER SIN FO [2]
BASH_
V ER SIN FO [3]
BASH_
V ER SIN FO[4]
BASH­
VERS INFO [5]
BASH-VERSION
COMP-CWORD

Значение этой переменной инкрементируется на единицу
всякий раз, когда создается подоболочка или рабочая среда
Основной номер версии или выпуска оболочки Bash

Дополнительный номер версии или выпуска оболочки Bash

Номер версии исправлений

Номер версии сборки

Состояние выпуска

Тип машины. То же, что и переменная

$MACHTYPE

Символьная строка, описывающая версию оболочки Bash
Служит для автозавершения. Содержит индекс массива
в переменной

COMP_WORDS, указывающий текущее

положение курсора

COMP-KEY

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

COMP-LINE

Служит для автозавершения. Содержит текущую

COMP-POINT

Служит для автозавершения. Содержит положение

командную строку

курсора в виде символьного индекса массива
в переменной

COMP_TYPE

$COMP_LINE

Служит для автозавершения. Содержит символ,
описывающий тип автозавершения. Для нормального
завершения — это один из знаков табуляции; для списков
завершения после двух знаков табуляции — знак ?;
для списка альтернативных вариантов завершения частично
введенного слова — знак ! ; для завершения измененного
слова — знак

а для меню вариантов завершения — знак %

Переменные

|

47

Переменная

Что обозначает

СОМР_
WORDBREAKS

Служит для автозавершения. Содержит символы,

COMP_WORDS

Служит для автозавершения. Содержит массив отдельных

интерпретируемые в библиотеке r e a d l i n e как
разделители слов при автозавершении последних

слов из командной строки

COPROC

Переменная массива, содержащего дескрипторы файлов,
применяемые для взаимодействия с неименованными
сопроцессами. Подробнее об этом см. далее, в разделе
"Сопроцессы"

DIRSTACK

Переменная массива, содержащего стек каталогов,
отображаемый по команде d i r s . При изменении
существующих элементов этого массива изменяется и стек
каталогов, но помещать в него элементы и извлекать их из
него можно лишь по соответствующим командам p u s h d
npopd

EUID

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

FUNCNAME

Переменная массива, содержащего имена функций. Каждый
элемент этого массива соответствует элементам массивов
в переменных BASH—SOURCE и BASH—L IN E N O

FUNCNEST

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

GROUPS

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

HISTCMD
HOSTNAME
HOSTTYPE
LINENO
MACHTYPE

Номер текущей команды в предыстории
Номер текущего хоста (т.е. сетевого узла)
Символьная строка, описывающая главную систему
Номер текущей строки кода в сценарии или функции
Символьная строка, описывающая главную систему
в формате ЦП- о р г а н и з а ц и я - с и с т е м а по общей
лицензии GNU

MAPFILE

Используемый по умолчанию массив команд m a p f i l e
и r e a d a r r a y . Подробнее об этом см. далее описание
команды m a p f i l e в разделе "Встроенные команды"

48

|

Bash. Карманный справочник системного администратора

Переменная

Что обозначает

OLDPWD

Предыдущий рабочий каталог, устанавливаемый
по команде c d или наследуемый из рабочей среды, если
этот каталог именуется в ней

OPTARG

Значение аргумента для последнего параметра,
обработанного командой

getopts

OPTIND
OSTYPE

Символьная строка, описывающая операционную систему

PIPESTATUS

Переменная массива, содержащего коды завершения

Числовой индекс значения переменной

OPTARG

команд в самом последнем конвейере приоритетного
режима. Но следует иметь в виду, что конвейер может
содержать только одну команду

PPID

Идентификационный номер процесса, присвоенный
оболочке, являющейся родительской для текущей
оболочки

PWD
RANDOM[=п]

Текущий рабочий каталог, устанавливаемый по команде

cd

Новое случайное число, формируемое по каждой ссылке
на эту переменную, начиная с целого числа д если оно
задано

READLINE_
LINE

Служит для применения вместе с командой bind
В этой переменной доступно содержимое буфера

-х.

редактирования

READLINE­
POINT

Служит для применения вместе с командой

REPLY

Ответ по умолчанию. Применяется в цикле

Содержит индекс значения переменной

LINE

в точке вставки

и команде

SECONDS[=n]

bind -х.
READLINE—
select

read

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

д
SHELLOPTS

если

д задано

Доступный только для чтения, разделяемый запятыми
список параметров оболочки (для команды set -о).
Если эта переменная устанавливается в рабочей среде при
запуске оболочки Bash, последняя активизирует каждый
параметр, имеющийся в данном списке, прежде чем
читать любые файлы запуска

SHLVL

Значение этой переменной всякий раз инкрементируется
на единицу, когда запускается оболочка Bash

Переменные

|

49

Переменная

Что обозначает

U ID

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

Многие из перечисленных выше переменных обеспечи­
вают поддержку режима автозавершения (см. далее раздел
“Автозавершение вводимых команд”) или отладки в обо­
лочке Bash (подробнее см. по адресу http://bashdb.
source forge.net).

Другие переменные оболочки
Перечисленные ниже переменные не устанавливаются
в оболочке автоматически, хотя многие из них способны ока­
зывать влияние на режим работы оболочки Bash. Как правило,
они устанавливаются в файле .bash_profile или .profile,
где их можно определить в соответствии со своими потребно­
стями. Этим переменным можно присвоить значения, выдав
команды в следующей форме:
переменная=зна чение

В приведенном ниже списке переменных предполагается
указание типа значения при определении этих переменных.
Переменная

Что обозначает

BASH_COMPAT

Если в этой переменной установлено десятичное или
целое значение (например, 4 . 3 или 43), соответствую­
щее поддерживаемому в оболочке уровню совместимо­
сти, то активизируется заданный уровень совместимо­
сти (например, уровни 4 . 3 и 43 соответствуют коман­
де s h o p t - s

c o m p a t4 3 ). Если же эта переменная

установлена в исходное состояние или в ней задана
пустая символьная строка, то устанавливается уровень
совместимости, присущий текущей оболочке. Команда
s h o p t не изменяет значение этой переменной, хотя
она может наследоваться из рабочей среды

50

|

Bash. Карманный справочник системного администратора

Переменная
BASH_ENV

Что обозначает
Если эта переменная устанавливается при запуске обо­
лочки, она именует файл, обрабатываемый для команд
инициализации. Значение этой переменной подвергается
подстановке параметров, команд и арифметической
подстановке, прежде чем интерпретировать его как имя
файла

BASRELOADABLES_

Один или несколько разделяемых двоеточием путей,

PATH

по которым осуществляется поиск динамически за­
гружаемых встроенных команд, указанных по команде

enable

BASH_XTRACEFD=n

Дескриптор файла, в который оболочка Bash записывает

CD РАТН=ха тал оги

Каталоги, искомые по команде c d . Допускаются сокра­

результат трассировки, выводимый из команды set -х

щения в смене каталогов. Эта переменная устанавлива­
ется в исходное состояние по умолчанию

CHILD_MAX=n

Максимально устанавливаемое количество процессов,
для которых оболочка запоминает коды завершения.
Максимальное значение этой переменной равно 8192,
а минимальное зависит от конкретной системы

COLUMNS=n

Ширина столбца на экране. Применяется в режимах
редактирования строк и списках, формируемых в цикле

select. По умолчанию выбирается ширина столбца
на текущем терминале

COMPREPLY=

Переменная массива, из которого оболочка Bash читает

(слова ...)

возможные варианты, формируемые функцией автоза­
вершения

EMACS

Если значение этой переменной начинается с буквы t ,
то оболочка Bash посчитает, что она выполняется в бу­
фере редактора Emacs, отменяя редактирование строк

ENV= файл

Наименование сценария, выполняемого при запуске
в режиме работы по стандарту POSIX или же в том слу­
чае, если оболочка Bash вызывается по пути /bin/sh.
Это удобно для хранения определений псевдонимов
и функций. Например: E N V = $ H O M E / .shellrc

EXECIGNORE=

Разделяемый двоеточиями список глобальных шабло­

списоК—Шаблонов

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

Переменные

51

Что обозначает

Переменная

FCEDIT=файл

Редактор, применяемый в команде f с. По умолчанию
выбирается редактор, доступный по пути

/bin/ed,

когда оболочка Bash работает в режиме по стандарту
POSIX. В противном случае по умолчанию выбирается ре­
дактор, устанавливаемый в переменной $ E D IT O R , а если
эта переменна не установлена — редактор v i

FIGNORE=
список_шаблонов

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

readline
GLOBIGNORE=
список_шаблонов

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

HISTCONTROL=
список

nocasematch и extglob

Разделяемый двоеточиями список значений, определя­
ющих порядок сохранения команд в файле предысто­
рии. В этом списке распознаются значения признаков

ignoredups, ignorespace, ignoreboth
и erasedups
Н13ТЕ1ЬЕ=файл

Файл, в котором хранится предыстория выполнения
команд. По умолчанию выбирается файл * / .

bash­

history
HISTFILESIZE=n

Количество строк, сохраняемых в файле предыстории.
Это количество может отличаться от количества со­
храняемых команд. Если оно равно нулю, то ни одна из
команд не сохраняется. А если оно отрицательное или
нечисловое, то никаких ограничений не накладывается.
По умолчанию выбирается количество сохраняемых
строк, равное 5 0 0

HI ST IGNORE=список

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

не сохраняются

в файле

преды стории. Н еэкранированны й знак & в шаблоне
обозначает совпадение с предыдущей строкой в пре­
дыстории. При этом значение параметра оболочки
e x t g l o b игнорируется

HISTSIZE=n

Количество команд, сохраняемых в файле предыстории.
Если оно равно нулю, то ни одна из команд не сохраняется.
А если оно отрицательное или нечисловое, то никаких
ограничений не накладывается. По умолчанию выбирается
количество сохраняемых команд равное 5 0 0

52

|

Bash. Карманный справочник системного администратора

Переменная

Что обозначает

HISTTIMEFORMAT=
строка

Форматирующая строка (см. оперативную страницу
руководства s trftim e & ), предназначенная для вывода
отметок времени вместе с командами из предыстории
по команде h i s t o r y . Если эта строка установлена
(даже пустой), оболочка Bash сохраняет отметки време­
ни вместе с командами в файле предыстории

НОМЕ=каталог

Начальный каталог, устанавливаемый по команде

НО8ТПЬЕ=файл

Имя файла в том же самом формате, что и файл, до­

l o g i n (из файла / e t c / p a s s w d )

ступный по пути / e t c / h o s t s . Оболочка Bash должна
использовать этот файл для поиска имен хостов в целях
их автозавершения

IF S = 'символы'

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

IGNOREEOF=n

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

INPUTRC=файл

Файл инициализации для библиотеки r e a d l i n e .
Заменяет выбираемый по умолчанию файл
* / . in p u tr c

LANG=языковый—
стандарт

Выбираемый по умолчанию языковый стандарт.
Используется, если не установлена ни одна из перечис­
ленных ниже переменных L C _ *

LC_ALL=языковый_
стандарт

Текущий языковый стандарт. Переопределяет значения

LC_COLLATE=
языковый—стандарт
LC_
СТ¥РЕ=яз*1К0вмй_
стандарт
LC_MESSAGES=
языковый- стандарт
LC_NUMERIC=
языковый—стандарт
LC_TIME=
языковый_ стандарт

Языковой стандарт, применяемый при сортировке сим­

переменной l a n g и других переменных L C _ *

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

Переменные

|

53

Что обозначает

Переменная

LINES=n

Высота экрана. Применяется в списках, формируемых
в цикле s e l e c t . По умолчанию выбирается высота
экрана на текущем терминале

МА1Ъ=файл

Файл, выбираемый по умолчанию для проверки входя­
щей почты. Устанавливается по команде l o g i n

MAILCHECK=n

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

MAILРАТН=файлы

Один или несколько файлов, разделяемых двоето­

значение 60 (т.е.одна минута)

чиями и предназначенных для проверки входящей
почты. Вместе с каждым файлом можно также указать
дополнительное сообщение, выводимое оболочкой
при увеличении размера файла. Сообщения отде­
ляются от имен файлов знаком ?, а по умолчанию
выводится сообщение " Y o u h a v e

m a il

in

$ _ " (У вас есть почта в переменной $J , где имя
временной переменной $ _ заменяется именем фай­
ла с поступившей почтой. Например, переменную
M A IL P A T H можно установить следующим образом:
M A IL P A T H = " $ M A IL ? C a n d y g r a m ’ : / e t c /
m o td ? N e w L o g i n

OPTERR=n

M essage

Если в этой переменной установлено значение 1
(по умолчанию), то оболочка Bash выводит сообщения
об ошибках из встроенной команды g e t o p t s

РАТН=СЛИСОК_
каталогов

Один или больше разделяемых двоеточием путей,
по которым осуществляется поиск команд для по­
следующего выполнения. По умолчанию выбирается
составленный путь u s r / l o c a l / b i n : / u s r /
lo c a l/s b in : / u s r / b in : /u s r /s b in : / b in : /
s b i n : .. Во многих системах по умолчанию выбирает­
ся путь / b i n : / u s r / b i n

POSIXLY_CORRECT=
строка

Если эта переменная устанавливается при запуске или
в ходе выполнения оболочки Bash, последняя пере­
ходит в режим работы по стандарту POSIX, отменяя
режим работы и видоизменяя средства, вступающие
в конфликт со стандартом POSIX

PROMPT_COMMAND=
команда

Если эта переменная установлена, оболочка Bash вы• полняет заданную команду всякий раз, прежде чем
выводить основное приглашение

54

|

Bash. Карманный справочник системного администратора

Переменная

PROMPTEDIRTRIM=n

Что обозначает
Обозначает, сколько завершающих составляющих ката­
логов остается для специальной строки приглашения
\ w или \ Н (см. далее раздел "Специальные строки
приглашений"). Удаляемые составляющие каталогов за­
меняются многоточиями

Р30=строка

Символьная строка, выводимая интерактивными
оболочками после чтения команды, но перед ее вы­
полнением

Р$1=строка

Основная строка приглашения. По умолчанию выбира­
ется строка ’ \ s - \ v \ $

Р$2=строка

'

Вспомогательное приглашение, применяемое в много­
строчных командах. По умолчанию выбирается при­
глашение >

Р33=строка

Строка приглашения в циклах s e l e c t . По умолчанию

Р84=строка

Строка приглашения к трассировке выполняемых команд

выбирается строка приглашения #?

(b a s h -х и л и s e t -х ) . По умолчанию выбирается
приглашение +. Оболочки, выполняемые как корневые,
не наследуют эту переменную из рабочей среды

8НЕ1Ь=файл

Наименование оболочки, выбираемой пользователем
по умолчанию (например, по пути / b i n / s h ) . Оболочка
Bash устанавливает эту переменную, если при запуске
она отсутствует в рабочей среде

TERM=строка
TIMEFORMAT=строка

Тип терминала
Форматирующая строка для вывода времени с помо­
щью ключевого слова t im e . Подробнее об этом см.
оперативную страницу руководства

TMOUT=n

bash(])

Если никакой команды не введено по истечении п
секунд, то происходит выход из оболочки. Значение,
устанавливаемое в этой переменной, оказывает также
влияние на действие команды r e a d и цикла s e l e c t

TMPDIR= ха тало г
auto_
resume=список

В указанном каталоге размещаются временно созда­
ваемые файлы, применяемые в оболочке
Допускает применение простых символьных строк
для возобновления приостановленных заданий. Если
установлено значение e x a c t , символьная строка
должна точно совпадать с именем команды. А если уста­
новлено значение s u b s t r i n g , то символьная строка
может совпадать с подстрокой из имени команды

Переменные

|

55

Переменная

Что обозначает

h i s t c h a r s = символы Два или три символа, определяющие порядок подста­
новки предыстории в стиле оболочки c s h . Первый сим­
вол сигнализирует о событии в предыстории команд,
второй символ обозначает "быструю" подстановку, а тре­
тий — начало комментария. По умолчанию для этой
цели выбираются символы ’

А

#. См. также раздел

"Предыстория команд в стиле оболочки С Shell"

Массивы
В оболочке Bash предоставляются два вида массивов: ин­
дексированные массивы, где индексами являются целые числа
от нуля и выше, а также ассоциативные массивы, где индекса­
ми являются символьные строки.
Индексированные массивы

В оболочке Bash поддерживаются одномерные массивы.
Первый элемент такого массива нумеруется нулевым. Никаких
ограничений на количество элементов массива в оболочке Bash
не накладывается. Массивы инициализируются с помощью
специальной формы присваивания, как показано в приведен­
ном ниже примере.
message=(hi there how are you today)

Задаваемые значения становятся элементами массива. Зна­
чения могут быть присвоены отдельным элементам массива
следующим образом:
message[0]=hi
message[l]=there
message[2]=how
message[3]=are
message[4]=you
message[5]=today

# Это нелегкий путь

Объявлять индексные массивы не требуется. Массив мож­
но создать по любой достоверной ссылке на индексированную
переменную.
56

|

Bash. Карманный справочник системного администратора

Для ссылки на массивы служит синтаксическая форма
Хотя она не требуется для ссылки на массивы в форме
((...)) команды le t , которая автоматически заключает в ка­
вычки указанные элементы. Следует, однако, иметь в виду, что
квадратные скобки [ и ] вводятся буквально, т.е. они не озна­
чают какой-то дополнительный синтаксис.
Отрицательные индексы отсчитываются от последнего ин­
декса с прибавлением единицы. Ниже приведены некоторые
примеры применения индексированных массивов.
$ а= (0 1 2 3 4 5 6 7 8)
$ echo ${а[4] }

# Создать индексированный массив
# Использовать положительный индекс

4
$ echo ${а[-2]}

# Использовать индекс: 8 + 1 - 2 = 7

7

Подстановки массивов
Подстановки переменных для массивов и их элементов вы­
полняются в следующих формах.
$ { имя [ i ] }

$ { имя}

Использовать элемент 1 массива имя, где 1 может быть
арифметическим выражением, как поясняется ниже, в разделе
"Арифметические выражения"
Использовать нулевой элемент массива имя

$ { имя [ * ] } ,
${и м я[@ ]}

Использовать все элементы массива имя

$ { #имя [ * ] } ,
$ {# и м я [@ ]}

Использовать ряд элементов массива имя

Ассоциативные массивы
В оболочке Bash поддерживаются также ассоциативные
массивы, где индексами являются символьные строки, а не
числа, как в команде awk, реализующей одноименный язык. В
данном случае квадратные скобки ([ и ]) действуют подобно
двойным кавычкам. Ассоциативные массивы должны быть
объявлены с помощью параметра -А в командах d eclare,
lo c a l и readonly. Специальный синтаксис позволяет присва­
ивать значения сразу нескольким элементам ассоциативного
массива, как показано ниже.
Переменные

|

57

data=([joe]=30 [тагу]=25)

message= ([0]=hi [2]=there)

#
#
#
#
#
#

Присваивание значении
элементам ассоциативного
массива
Присваивание значений
элементам индексированного
массива

Для извлечения значений из массива служат формы

$ {data [joe] } и $ {data [тагу] }. Специальные выражения
для извлечения всех индексов из ассоциативного массива дей­
ствуют таким же образом, как и в индексированных массивах.

Специальные строки приглашений
Значения переменных PSO, PSI, PS2 и PS4 обрабатываются
в оболочке Bash, принимая во внимание следующие управляю­
щие последовательности символов.


Звонок (BEL в коде ASCII) — звуковой или визуальный
предупреждающий сигнал (восьмеричное значение 07)
Текущее время в 24-часовом формате ЧЧ:ММ


\d
\D{ формат}



Символ перехода (Escape в коде ASCII; восьмеричное
значение 033)

\h


Имя хоста (т.е. сетевого узла) вплоть до первой точки
Полное имя хоста

\j
\1
\п


\t


\v
W

58

Дата в формате "день недели месяц день"
Дата, указанная в заданном формате (см. оперативную
страницу руководства s trftim e fi]]. Указывать фигурные скобки
необязательно

Текущее количество заданий
Базовое имя терминального устройства в оболочке
Символ новой строки
Символ перевода каретки
Имя оболочки (базовое имя в переменной $0)
Текущее время в 24-часовом формате ЧЧ:ММ:СС
Текущее время в 12-часовом формате ЧЧ:ММ:СС
Имя текущего пользователя
Текущая версия оболочки Bash
Текущий выпуск (версия плюс версия исправлений)
оболочки Bash
|

Bash. Карманный справочник системного администратора

\w

Базовое имя текущего каталога, где обозначение начального
каталога $номе сокращается до *. См. также приведенное
ранее описание переменной PROMPT_DIRTRIM

\ !

Номер строки с данной командой, сохраненной в предыстории

\#

Номер данной команды (в соответствии с подсчетом команд,
который ведется в текущей оболочке)

\$

Если действующий идентификатор пользователя равен нулю, то
символ #, а иначе — символ $

\@
\ппл

Текущее время в 12-часовом формате a.m./p.m. (т.е. до и после
полудня)
Символ, представленный восьмеричным значением п п п

\\

Символ обратной косой черты

\ [

Начало последовательности непечатаемых символов, например,
для выделения или изменения цвета в эмуляторе терминала

\]

Конец последовательности непечатаемых символов

Переменные PSO, PSI, PS2 и PS4 подвергаются подстановке
управляющих последовательностей символов, переменных, ко­
манд и арифметических выражений. Сначала обрабатываются
управляющие последовательности символов, затем выполня­
ются подстановки, если параметр оболочки prom ptvars акти­
визирован по команде shopt (по умолчанию).
В режиме работы по стандарту POSIX дело обстоит не­
сколько иначе. Значения переменных PS1 и PS2 подвергаются
подстановке параметров, знак ! заменяется номером строки
с текущей командой в предыстории, а знаки ! ! — собственно
знаком восклицания.

Арифметические выражения
Команда let выполняет целочисленные арифметические
операции. Оболочка Bash обеспечивает порядок подстановки
значений арифметических выражений (для применения в ка­
честве аргументов или сохранения в переменных), а также
базовые преобразования, если таковые требуются. Ниже пере­
числены формы представления арифметических выражений.

Арифметические выражения

|

59

$ ((

вы раж ен ие

))

Использовать значение выражения, указанного в круглых скобках. Оболочка Bash попытается произвести
синтаксический анализ формы $ ( ( . . . ) ) как арифме­
тического выражения, прежде чем анализировать ее как
вложенную подстановку команд

В#п

Интерпретировать заданное целочисленное значение п
по указанному основанию В. Например, форма 8 # 1 0 0
обозначает восьмеричный эквивалент десятичного
числа 64

Операции
В оболочке Bash поддерживаются арифметические опера­
ции, перечисленные ниже в порядке их старшинства. Большая
их часть унаследована из языка программирования С.
Операция

Описание

++ —

Автоматическое инкрементирование и декрементирование

+ -

Унарный плюс и минус

1 -

Логическое отрицание и двоичная инверсия (дополнение до едини­

(как префиксное, так и постфиксное)

цы или получение обратного кода)
Возведение в степень
* /

%

Умножение, деление, взятие модуля (получение остатка отделения)

+ «

Сложение и вычитание
»

Поразрядный сдвиг влево и вправо

>=

Операции сравнения: меньше, меньше или равно, больше, больше
или равно

= =

! =

Операции сравнения: равно, неравно (обе операции выполняются
слева направо)

&

Логическая операция поразрядное И

А

Логическая операция поразрядное исключающее ИЛИ

1

Логическая операция поразрядное ИЛИ

&&

Логическая операция И (укороченная)

I I

Логическая операция ИЛИ (укороченная)

? :

Встроенное вычисление по условию

60

|

Bash. Карманный справочник системного администратора

Операция

Описание

= += -=
Присваивание
н
*= /« %=
II
«= »=
I I ___
&= А= Iя
>

Последовательное вычисление выражений

Примечания
Команда l e t и форма ((...)) встроены в оболочку, и поэто­
му в них доступны значения переменных. Имя переменной со­
всем не обязательно предварять знаком денежной единицы ($),
чтобы извлечь ее значение, хотя и такой способ обращения
к переменной вполне работоспособен.
Команда l e t возвращает не вполне очевидный код завер­
шения. Так, нулевой код свидетельствует об удачном заверше­
нии данной команды и ненулевом математическом результате,
а ненулевой код — о неудачном завершении и нулевом матема­
тическом результате.
Примеры
let "count=0" "i = i + 1"
let "num % 2"

(( percent