Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИДЗ на тему Пользовательский интерфейс UNIX подобной ОС.doc
Скачиваний:
11
Добавлен:
20.06.2014
Размер:
232.96 Кб
Скачать
    1. Командная строка

Основная среда взаимодействия с 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