Разница между 1.113
и текущей версией
ОболочкаShell.
@@ -1,6 +1,4 @@
-- Оболочка shell
-
--- Кратко о программируемой оболочке
+= Оболочка shell
Программируемая оболочка интерпретирует команду и выполняет её. Оболочка shell предназначена для манипуляции с:
1 данными — строчно-ориентированная обработка;
@@ -30,7 +28,7 @@
когда расходы на сами операции
(ввод-вывод, вычисления) существенно превышают расходы на создание новых процессов.
---- Среда запуска команд
+-- Среда запуска команд
Запускаемые программы наследуют окружение оболочки, а именно:
@@ -50,7 +48,7 @@
где каждая программа отвечает за свою отдельную чётко определённую задачу.
Программируя в оболочке пользователь получает новые инструменты «склеивая» и комбинируя существующий компактный набор типовых компонентов-программ.
--- Интерактивный и неинтерактивный режимы
+- Интерактивный и неинтерактивный режимы
В интерактивном режиме оболочка сигнализирует
о готовности принимать команды приглашением — символом доллара ($).
@@ -100,9 +98,9 @@
world
$
--- Запуск команд
+- Запуск команд
---- Простые команды
+-- Простые команды
Оболочка выполняет преобразования с командами,
разбивая каждую входную строку на последовательность символов,
@@ -125,7 +123,7 @@
Вторая команда выполняется сразу после первой, приглашения не выводятся.
---- Асинхронный запуск
+-- Асинхронный запуск
Команды в оболочке запускаются последовательно.
Перед тем как запустить следующую команду оболочка дожидается завершения предыдущей.
@@ -174,7 +172,7 @@
$
--- Переменные
+- Переменные
Переменная — это именованый параметр, который хранит значение.
Для раскрытия переменной в оболочке используется символ доллара ($),
@@ -213,7 +211,7 @@
orange
$
---- Подробнее о переменных
+-- Подробнее о переменных
Если рядом с раскрываемой переменной слитно без пробелов расположены другие символы, то раскрывать переменную безопаснее заключив её имя в фигурные скобки ({...}). В таком случае оболочка может определить где начинается и заканчивается её имя.
@@ -264,7 +262,7 @@
path
$
---- Подстановка команд
+-- Подстановка команд
Команду заключённую в
@@ -289,7 +287,7 @@
$ cp notes.log notes_20150315.log
---- Арифметические подстановки
+-- Арифметические подстановки
Выражение заключённое в
@@ -307,7 +305,7 @@
i=$((i+1))
done
--- Экранирование через "..." и '...'
+- Экранирование через "..." и '...'
Разбиение строк на слова — полезная функция оболочки.
Оболочка даёт возможность предотвратить разбиение,
@@ -370,7 +368,7 @@
It’s not my fault!
$
--- Перенаправление ввода-вывода
+- Перенаправление ввода-вывода
Оболочка организует для каждой запускаемой программы три открытых файла с каждым из которых связан свой номер дескриптора:
@@ -427,7 +425,7 @@
$ grep '^root:' /etc/passwd >/dev/null
--- Дублирование дескрипторов ввода-вывода
+- Дублирование дескрипторов ввода-вывода
Дескрипторы открытых файлов могут дублироваться или закрываться средствами оболочки. Команда дублирования дескриптора файла ввода в общем виде выглядит так:
@@ -455,7 +453,7 @@
Очевидно, что закрывать любые из трёх стандартных дескрипторов не следует за исключением редких случаев, когда пользователь действительно понимает зачем он это делает.
--- Программные каналы
+- Программные каналы
Одно из главных достижений Unix — программные каналы.
Они позволяют подать вывод одной программы на вход другой без временных файлов.
@@ -486,7 +484,7 @@
Здесь в дескриптор стандартного вывода ошибок дублируется дескриптор программного канала, соединённый с ``wc -l``. Таким образом и стандартный вывод и стандартный вывод ошибок из ``ls -1`` попадёт в конвеер и будет передан следующей команде.
--- Группировка команд
+- Группировка команд
Команды в оболочке могут быть сгруппированы двумя способами:
@@ -526,9 +524,9 @@
то она не затрагивает окружения основной оболочки,
иначе пришлось бы сохранять текущий каталог до запуска копирования и восстанавливать его после.
--- Шаблоны имён файлов
+- Шаблоны имён файлов
-Символы «?», «*» и «[» имеют специальное назначение.
+Символы «?», «*» и «\[» имеют специальное назначение.
Когда оболочка встречает такие символы в аргументе команды (вне кавычек),
то аргумент интерпретируются как шаблон имён файлов.
Оболочка пытается найти подходящие под шаблон имена файлов (выполняет раскрытие шаблона),
@@ -544,7 +542,7 @@
Если файлы с именами, подходящими под шаблон, не существуют, то оболочка подставляет
сам шаблон буквально.
---- Замечания по раскрытию шаблонов
+-- Замечания по раскрытию шаблонов
Символ слэш (/) не может быть частью шаблона при раскрытии путей,
потому что является ''разделителем пути'' (''path separator'').
@@ -564,7 +562,7 @@
тогда точку нужно указывать явно.
В шаблон «.*» при раскрытии путей всегда попадут текущий и родительский каталоги.
--- Литература
+- Литература
1 Kernighan, B. W. Software tools in Pascal / B. W. Kernighan, P. J. Plauger. — Addison-Wesley Longman Publishing Co., Inc., 1981.
1 Bourne, S. R. An Introduction to the UNIX Shell / S. R. Bourne. — Bell Laboratories. Computing Science, 1978.
1 Peek, J. Unix Power Tools / Jerry Peek, Shelley Powers, Tim O'Reilly, Mike Loukides. — 3rd ed. — O'Reilly Media, October 2002.