Продолжим рассмотрение правил использования командной строки. Поскольку оболочек много, то, естественно, что какие-то конкретные правила записи команд могут отличаться для разных версий программы. Но многие оболочки интерпретируют специально выделенный набор символов одинаково. За ними закреплены особые функции. Мы уже встретились с тем, как используются «/» и «$». В командной строке могут быть использованы и другие специальные символы. Рассмотрим их назначение, систематизировав такую информацию в одном месте. При этом для некоторых символов подробные примеры использования будут приведены и в других частях пособия. До начала рассмотрения использования некоторых специальных символов отметим, что их очень много. Рассматривать будем только небольшую часть. Описание всех из них содержится в страницах справочного руководства man страницы bash.
Символ \
Сначала изучим, как используется символ «\» – обратный слеш. Он может иметь разное применение. В имени файла он используется, когда за ним располагается пробел « » или другой символ, выполняющий служебную роль, но последнюю надо отменить. Следующая группа команд демонстрирует операции с каталогом, имеющим в имени пробел. В приведенном тексте применен символ (#), используемый в сценариях для записи комментариев.
# переход в домашний каталог пользователя
cd ~
# вывод его адреса
Pwd
root
# создание каталога,
# имеющего в имени символ пробел
mkdir 1-th\ directory
# копирование файла в созданный каталог
cp .profile /root/1-th\ directory
# копирование второго файла в созданный каталог
cp .bashrc ./1-th\ directory
# вывод списка файлов текущего каталога
# и всех подчиненных ему
Ls –R
.:
1-th directory
./1-th directory
Кавычки
Есть три типа кавычек: двойные ( " ), одиночные ( ’ ) и обратные ( ` ) (в литературе встречаются и другие названия третьих: одиночные апострофы, слабое ударение). Они всегда используются в паре.
Внутри двойных кавычек отменяется действие всех служебных символов кроме трех: $ (доллар), ` (обратные кавычки) и \ (обратный слеш). В некоторых вариантах оболочек пара таких символов отменяется еще и действие специальных символов «!» и «|».
Одинарные кавычки действуют более «строго». Внутри них теряют назначение все специальные символы оболочки. Еще одна пара символов – обратные кавычки – применяются, когда результат выполнения одной команды нужно использовать как входные аргументы для выполнения другой команды.
Начнем с рассмотрения использования двойных кавычек. Используемая в нескольких следующих примерах команда echo выводят значения двух переменных HOME и BASH. Для двойных кавычек в первом и втором случаях вывод одинаков – двойные кавычки не отменяют действие символа $. Только в третьем случае его действие отменяется символом \, поэтому распечатывается не значение переменной, а набор символов $HOME.
echo “$HOME $BASH”
/root /bin/bash
echo “$HOME $BASH”
/root/bin /bash
echo “\$HOME $BASH”
$HOME /bin/bash
В следующих командах имена переменных заключены в одиночные кавычки. В первом и втором случаях действие символа $ отменяется, а в третьем – отменяется действие и \.
echo’$HOME $BASH’
$HOME $BASH
echo ’$HOME $BASH’
$HOME $BASH
echo ’\$HOME $BASH’
\$HOME $BASH
Теперь приведем примеры команд с использованием обратных кавычек. Как говорилось их применение оправдано, когда результат выполнения одной команды надо передать другой. Если ввести команду
Cal 12
то выводится информация о 12-м месяце текущего года.
Декабрь 2009
Пн
Вт
Ср
Чт
Пт
Сб
Вс
Команда
date “+%m %y“
даст такой результат
12 09
Такие две команды можно соединить обратными кавычками так
cal `date “+%m %y“`
Это даст результат как у команды cal с параметрами 12 09
Декабрь 2009
Пн
Вт
Ср
Чт
Пт
Сб
Вс
Продолжим рассматривать использование других специальных символов оболочек.
Символ &
Этот символ позволяет перевести выполнение команды в фоновый режим. Последний может одновременно реализовывать несколько процессов. В режиме многозадачности они будут попеременно получать системные ресурсы и, прежде всего, процессорное время. Мы подробнее поговорим о фоновых процессах в лабораторной работе 4.
Символ ;
Этот символ используется, когда в строке надо записать более одной команды. Если не ставить этот знак, то вторая команда будет восприниматься как параметры первой. Но если соединить этим знаком обе команды, то они будут выполнены последовательно. К примеру, если записать