Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UNIX_Konsp+Present_Kostiv / Терминал и командная строка.doc
Скачиваний:
46
Добавлен:
12.02.2016
Размер:
256.51 Кб
Скачать

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

user@desktop ~ $ date

Втр Окт 4 23:15:37 MSD 2005

user@desktop ~ $

Здесь приглашением является строка user@desktop ~ $, которая содержит: имя пользователя, с правами которого исполняется командная оболочка (user), имя компьютера (desktop), имя текущего каталога (~, этим символом в командных оболочках UNIX принято обозначать домашний каталог пользователя). Заканчивается приглашение символом начала ввода ($), который, по существу, является единственным обязательным элементом приглашения и показывает, собственно, готовность командной оболочки к вводу команды. В качестве символа начала ввода могут выступать разные символы, но чаще всего используется именно ($) для обозначения командной строки обычного пользователя и символ (#) для обозначения командной строки суперпользователя (root). Пользователь имеет возможность произвольным образом изменить оформление приглашения командной строки.

Команды

Презентация 4-03: формат команды

Приведенный выше пример демонстрирует простейшую команду, которая состоит только из имени команды: 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 могут быть устроены и более сложным образом, когда необходимо не только выполнить внешнюю программу, но и передать ей какую-то дополнительную информацию, чтобы так или иначе модифицировать ее работу. Модификаторы поведения в этом случае вводятся в командной строке после имени команды — это параметры команды. Параметров может быть произвольное количество (оно зависит только от смысла передаваемой внешней программе информации), друг от друга параметры отделяются пробелами. Параметры будут переданы программе в том порядке, в котором они указаны в командной строке.

Пример 2.2. Пример выполнения команды 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, который чаще всего выдаёт подсказку). Особый вид ключей — параметрические, которые принимают собственный параметр: например, в команде grep -f access.log -n test имя файла access.log — часть параметра -f.

Проблемы могут возникнуть, если с символа «-» начинается не ключ, а обычный параметр, например, имя файла. В этом случае команда может интерпретировать этот параметр как ключ, что повлечет ошибку. Для выхода из этой ситуации используется специальная конструкция «--», указывающая, что список ключей закончен, и любые последующие строки следует интерпретировать как параметры. Например:

user@desktop ~ $ ls -l -- -test-file

-rw-r--r-- 1 user users 90 Сен 19 00:20 -test-file