Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций ПСРВ.doc
Скачиваний:
81
Добавлен:
12.02.2016
Размер:
2.73 Mб
Скачать

3.3. Соглашения по работе с командной строкой

В QNX приняты традиционные для UNIX-систем соглашения об интерпретации аргументов командной строки. Аргументы подразделяются на две категории: опции (или флаги) и все остальные. Опции меняют поведение программы, а остальные аргументы содержат разного рода входные данные (например, названия файлов). Опции бывают двух видов.

  • Короткие опции состоят из дефиса и одиночного символа (обычно это буква в нижнем или верхнем регистре). Такие опции быстрее и проще набирать.

  • Длинные опции состоят из двух дефисов, после которых следует имя, содержащее буквы нижнего и верхнего регистров и дефисы. Такие опции легче запоминать и читать (например, в командных сценариях).

Обычно системные программы поддерживают обе разновидности каждой опции: первую - для краткости, вторую - для ясности. Например, большинство программ понимает опции -h и --help и трактуют их одинаково. Как правило они указываются в командной строке сразу после имени программы. После опций могут идти другие аргументы, в частности имена файлов и другие входные данные.

3.4. Знакомство с shell

После ввода правильных имени и пароля утилита login запуска­ет командный интерпретатор (login shell). Что такое командный интерпретатор? Это программа, которая выдает на экран при­глашение (для "простого" пользователя — $, для суперпользова­теля — #), принимает команды и запускает их.

В одной системе можно од­новременно использовать любые интерпретаторы. Если пользователь работает в графической оболочке Photon, то командная строка доступна ему с помощью графического псев­дотерминала — программы pterm.

Поскольку shell является интерпретатором команд, то коман­да — это базовое понятие. Команды в shell обычно имеют следующий формат:

<имя команды> <опции> <аргумент(ы)>

В общем, каждая команда может иметь несколько опций, которые обычно записываются со знаком ``-''. (Часто в документации вместо термина опция используют в том же контексте слово "флаг").

Например:

ls -ls /usr/bin

ls -имя команды выдачи содержимого директория,

-ls -опции ("-" - признак опций, l - длинный формат, s - об'ем файлов в блоках).

/usr/bin - директорий, для которого выполняется команда.

Эта команда выдаст на экран в длинном формате содержимое директория /usr/bin, при этом добавит информацию о размере каждого файла в блоках.

Как правило (но не всегда), первое слово (т.е. последовательность символов до пробела, табуляции или конца строки) shell воспринимает, как команду. Поэтому в командной строке

cat cat

первое слово будет расшифровано shell, как команда (конкатенации), которая выдаст на экран файл с именем "cat" (второе слово), находящийся в текущем директории. Многие часто используемые команды состоят из двух-трех букв.

Команды могут быть как отдельными программами (утилитами), так и "встроенными" командами shell.

Когда вы вводите команду, shell делает несколько вещей. Во-первых, смотрит на то, что может (должно) быть именем команды и является ли это внутренней для shell командой. (Внутренняя, это команда, которую shell знает как выполнять.) Shell также проверяет, не является ли команда синонимом другой или требуется подстановка имени. Если этого не надо делать, shell ищет соответствующую этому имени программу на диске. Если shell находит такую программу, он ее выполняет, передавая ей аргументы из командной строки.

К сожалению, структура команды выдерживается далеко не всегда. Не всегда перед флагами ставится минус, не всегда флаги идут одним словом. Есть разнообразие и в представлении аргументов. К числу команд, имеющих экзотические форматы, относятся и такие "ходовые" команды, как сс, tar, dd, find и ряд других.

Характерна в этом смысле утилита tar (Tape Archiv). Чтобы извлечь содержимое архива, запишем:

tar xvf arxive.tar

где, как вы уже догадались:

tar — имя утилиты;

xvf — опции (х — извлечь; v — показывать на экране ход "расТАРивания"; f — "расТАРивать" указанный файл, а не ленту в стримере);

archive.tar — имя архивного файла.

Обратите внимание, что перед опциями нет дефиса (-). Этот нюанс постоянно сбивал с толку пользователей, поэтому в со­временных реализациях утилиты tar поддерживается два вари­анта задания опций: с дефисом и без него.

Существует несколько сотен команд, но обычно пользователь применяет лишь несколько десятков. Наиболее часто исполь­зуемые команды приведены в табл. 11.1.

Что нужно сделать?

Команда (без аргументов)

Определить текущий каталог

pwd

Просмотреть содержимое каталога

ls

Перейти в другой каталог

cd

Создать пустой файл

touch

Создать каталог

mkdir

Копировать файл

ср

Копировать каталог

ср -R

Удалить файл

rm

Удалить каталог

rmdir

rm -R

Просмотреть файл

cat

Переименовать файл

mv

Таблица 1. Примеры команд

Можно задать несколько команд в одной командной строке, раз­делив их точкой с запятой (;). Перевод строки (нажатие клавиши <Enter>) воспринимается как конец команды. Если команда длинная и ее необходимо перенести на следующую строку, то перед переводом строки ставят обратный слэш (\).

Если ввести команду, а shell не сможет найти программу для этой команды (здесь ``eat''):

/home/stud# eat dirt

eat: command not found

/home/stud#

он выдает сообщение об ошибке, которое объясняет причину невыполнения команды. Вы часто будете видеть это сообщение, если будете вводить имена команд с ошибками.