
- •Оглавление
- •Общие сведения
- •Современные версии ос unix
- •Основные характеристики
- •Архитектура ос unix
- •Системное программное обеспечение
- •Терминал и командная строка
- •Терминал
- •2.1.1. Управляющие символы
- •2.1.2. Одновременный доступ к системе
- •Командная строка
- •2.2.1. Командная оболочка
- •2.2.2. Приглашение
- •2.2.3. Команды
- •2.2.4. Шаблоны
- •2.2.5. Перенаправление ввода и вывода
- •2.2.6. Служебные символы
- •2.2.7. Основные группы служебных символов командной оболочки:
- •2.2.8. Процесс выполнения команды
- •Список использованной литературы
Командная строка
Основная среда взаимодействия с UNIX — командная строка. Суть её в том, что каждая строка, передаваемая пользователем системе, — это команда, которую та должна выполнить. Пока не нажата клавиша Enter, строку можно редактировать, затем она отсылается системе.
2.2.1. Командная оболочка
Команды, введённые пользователем, интерпретируются и выполняются специальной программой — командной оболочкой (или «shell» по-английски). Через командную оболочку производится управление пользовательскими процессами — для этого используются средства межпроцессного обмена.
Ввод и вывод командной оболочки непосредственно связаны с терминалом, через который осуществляется передача управляющих последовательностей и текста от пользователя и обратно (рис.1).
Рисунок 1 – Интерфейс командной строки
2.2.2. Приглашение
Для удобства пользователя командная строка оформляется в виде приглашения — специальной последовательности символов, которую командная оболочка выводит на терминал в знак того, что она готова принять очередную команду. Заодно приглашение командной строки служит целям визуальной организации интерфейса пользователя: прежде всего, она указывает область экрана, где будет отображаться вводимая пользователем команда (непосредственно справа от приглашения, в той же строке), кроме того, в приглашении принято помещать информацию о некоторых текущих свойствах командной оболочки (имени пользователя, текущем каталоге и т. п.) — такая информация выполняет роль «подсказок» пользователю, которые облегчают ориентацию в интерфейсе.
Пример выполнения команды
user@desktop ~ $ date
Втр Окт 4 23:15:37 MSD 2005
user@desktop ~ $
Здесь приглашением является строка user@desktop ~ $, которая содержит: имя пользователя, с правами которого исполняется командная оболочка (user), имя компьютера (desktop), имя текущего каталога (~, этим символом в командных оболочках UNIX принято обозначать домашний каталог пользователя). Заканчивается приглашение символом начала ввода ($), который, по существу, является единственным обязательным элементом приглашения и показывает, собственно, готовность командной оболочки к вводу команды. В качестве символа начала ввода могут выступать разные символы, но чаще всего используется именно ($) для обозначения командной строки обычного пользователя и символ (#) для обозначения командной строки суперпользователя (root). Пользователь имеет возможность произвольным образом изменить оформление приглашения командной строки.
2.2.3. Команды
Приведенный выше пример демонстрирует простейшую команду, которая состоит только из имени команды: date. Для исполнения этой команды командная оболочка находит и запускает программу, имя которой совпадает с именем команды. В данном примере это утилита date, которая и выводит на терминал пользователя информацию о текущей дате и времени. Некоторые команды (такие как echo) являются встроенными для данной командной оболочки, и для их выполнения вызывается не программа, а внутренняя функция оболочки.
В качестве имени команды, помимо внешней программы и встроенной функции, может выступать еще и псевдоним (alias). Псевдонимы — это определяемые пользователем сокращения, позволяющие заменить длинную, но часто используемую команду, более короткой. В конфигурационных файлах командного интерпретатора пользователя обычно уже определено несколько сокращений, список которых можно посмотреть с помощью команды alias без параметров:
user@desktop ~ $ alias
alias cp='cp -i'
alias l='ls -lapt'
alias ll='ls -laptc'
alias ls='ls --color=auto'
alias md='mkdir'
alias mv='mv -i'
alias rd='rmdir'
alias rm='rm -i'
Например, по команде ls вместо утилиты /bin/ls bash запускает собственную команду-сокращение, превращающуюся в команду ls --color=auto. Повторно появившуюся в команде подстроку "ls" интерпретатор уже не обрабатывает, во избежание вечного цикла. Например, команда ls -al превращается в результате в ls --color=auto -al.
Однако команды UNIX могут быть устроены и более сложным образом, когда необходимо не только выполнить внешнюю программу, но и передать ей какую-то дополнительную информацию, чтобы так или иначе модифицировать ее работу. Модификаторы поведения в этом случае вводятся в командной строке после имени команды — это параметры команды. Параметров может быть произвольное количество (оно зависит только от смысла передаваемой внешней программе информации), друг от друга параметры отделяются пробелами. Параметры будут переданы программе в том порядке, в котором они указаны в командной строке.
Пример выполнения команды c параметром:
user@desktop ~ $ cal 1 2006
Января 2006
Вс Пн Вт Ср Чт Пт Сб
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Командная оболочка передает внешней программе ее параметры не в виде единой строки, как их ввел пользователь, а в виде упорядоченного списка (первый параметр, второй параметр...). Для этого командную строку необходимо разбить на отдельные «слова». При разбиении на слова командная оболочка использует понятие разделитель (delimiter). Разделитель — это символ, разделяющий слова; таким образом, командная строка — это последовательность слов (которые имеют значение) и разделителей (которые значения не имеют). Для командной оболочки разделителями являются символ пробела, символ табуляции и символ перевода строки. Количество разделителей между двумя соседними словами значения не имеет. Если необходимо передать в качестве параметра строку, содержащую символы-разделители, необходимо эту строку окружить одинарными или двойными кавычками.
user@desktop ~ $ echo "Hello, world."
Hello, world.
Параметры, которые могут быть переданы команде, подразделяются на два вида: первые — это внешние объекты, с которыми должна работать вызываемая команда (например, имена файлов, числа), вторые — это принимаемые программой модификаторы поведения. Последовательность в командной строке обычно такая: имя команды — модификаторы — объект(ы), где и модификаторы, и объекты необязательны.
В программах для UNIX параметры-модификаторы принято называть ключами (а также опциями и иногда флагами). Для формата ключей нет жёсткого стандарта, однако существуют договорённости, нарушать которые не принято. Однобуквенные ключи должны начинаться с символа «-» (как -h), такие ключи можно объединять: du -s -h и du -sh эквивалентны. Другой вид ключей — полнословные — начинается с двух символов «-» (например,
--help, который чаще всего выдаёт подсказку).
Проблемы могут возникнуть, если с символа «-» начинается не ключ, а обычный параметр, например, имя файла. В этом случае команда может интерпретировать этот параметр как ключ, что повлечет ошибку. Для выхода из этой ситуации используется специальная конструкция «--», указывающая, что список ключей закончен, и любые последующие строки следует интерпретировать как параметры. Например:
user@desktop ~ $ ls -l -- -test-file
-rw-r--r-- 1 user users 90 Сен 19 00:20 -test-file