Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QNX 4 Руководство пользователя.doc
Скачиваний:
248
Добавлен:
02.05.2014
Размер:
1.02 Mб
Скачать

Глава 2. Основные команды языка

В этой главе...

Синтаксис команд

Переадресование ввода-вывода

Выполнение команд на другом узле или устройстве

Отображение системных сообщений

Использование шаблонов

Ввод нескольких команд

Сведения о командах интерпретатора

Хотите узнать больше?

2.1. Синтаксис команд

2.1.1. Синтаксическая структура

Всякий раз, когда Вы смотрите команду в "Utilities Reference",

Вы видите синтаксическую структуру, которая определяет, как исполь-

зовать команду. Для большинства команд синтаксическая структура

состоит из трех основных частей:

имя_команды опции операнды,

где:

имя_команды - имя команды, которую нужно выполнить. Это может

быть имя выполняемой программы такой, как утилита, или это может

быть имя команды командного интерпретатора;

опции - позволяют Вам задать альтернативное поведение команды.

Опции обычно состоят из алфавитно-цифрового символа, следуемого за

дефисом (например, "-c"). Некоторые опции содержат аргумент (напри-

мер, "-n number"). Если Вы задаете опцию, которая содержит аргу-

мент, Вы должны также задать и его;

операнды - позволяют Вам определить данные, необходимые для

команд (обычно имя файла). Если команда позволяет Вам задать нес-

колько операндов, они будут обрабатываться в порядке, который Вы

указываете. В отличие от опций, перед операндом дефиса нет (напри-

мер, "файл...").

На рис. 1 показана типичная синтаксическая структура:

.

- 20 -

ЁИмя

Ёкоманды ЁОпции

Ё +---------+------------+

Ё Ё Ё Ё

Ё +---+ Ё Ё

Ё Ё Ё Ё Ё

more [-ceisu] [-n number] [-x tabstop] [ file..]

Ё Ё Ё

+------------+ Ё

Ё Ё

ЁАргументы Ё

Ёопций Операнд

Рис. 1

Заметим, что элемент:

[-ceisu]

является удобным способом указать, что возможны следующие опции:

-c -e -i -s -u

2.1.2. Символы клавиш

При рассмотрении синтаксической структуры Вам следует знать о

следующих символах:

... - многоточие, следующее за параметром опции или операнда,

указывает, что может быть описано более, чем одно значение. Напри-

мер, в структуре, указанной выше, для утилиты more - операнд:

file...

указывает, что Вы можете описать более,чем один файл в командной

строке (например, "more myfile1 myfile2").

[ ] -значение, включенное в скобки ([ ]) - необязательное. Оп-

ции всегда заключаются в скобки (например, "[-c]"). Если операнд

заключен в скобки, его использование не обязательно (например, "[fi-

le...]" в вышеуказанной иллюстрации).

| - полоса ИЛИ используется между альтернативами, указывая,

- 21 -

что может быть выбрано только одно значение (например, "-a Ё -f").

2.1.3. Группирование опций

Следующие примеры командной строки more показывают возможные

способы группирования опций и аргументов опций (каждая из этих ко-

мандных строк позволит Вам отобразить файл, названный myfile):

a) Вы можете перечислить каждую опцию раздельно в командной

строке:

more -c -e myfile;

b)Вы можете объединить несколько опций вместе, используя один

дефис (-):

more -ce myfile;

c)Если Вы вводите опции вместе с дефисом (-), помните, что

только последняя опция может иметь аргумент. Так Вы можете задать:

more -cen10 myfile;

но будет ошибка, если зададите:

more -n10ce myfile;

d)Вы можете определить аргумент опции сразу же после опции или

отделить его одним, двумя или более пробелами:

more -ce -n10 -x 4 myfile

e)Этот пример показывает все способы, которыми Вы можете

сгруппировать опции и их аргументы:

more -c -e -sn10 -x 4 myfile

2.1.4. Пометка специальных символов

Некоторые символы могут иметь специальное значение в командном

интерпретаторе в зависимости от их контекста. Если любой из специ-

альных символов, распознаваемых командным интерпретатором, предназ-

начен для включения в командную строку, тогда Вы должны пометить

эти символы. Пометка относится к методу, который позволяет эти сим-

волы обработать, как простые символы, вместо интерпретирования их

- 22 -

специальным образом командным интерпретатором. Вы должны помечать

следующие символы, чтобы избежать их специальной интерпретации:

| $ <space>

& ' <tab>

; \ <newline>

( "

) '

Вы можете пометить следующие символы в зависимости от их кон-

текста в пределах команд командного интерпретатора

* ? [ # ~ = %

Есть три способа пометить символы:

-------------------------------------------------------------------

Чтобы пометить: Вы должны

-------------------------------------------------------------------

единственный символ перед этим символом поставить

один символ (\)

все специальные символы заключить всю строку в оди-

в пределах строки нарные кавычки

все специальные символы в пределах заключить всю строку в двойные

строки, за исключением $, ' и \ кавычки

-------------------------------------------------------------------

Примеры:

Любая из следующих команд:

grep QNX\ 4 chapter1.txt

grep 'QNX 4' chapter1.txt

grep "QNX 4" chapter1.txt,-

найдет все строки "QNX" в файле chapter1.txt.

Однако, заметим, что команда:

grep QNX 4 chapter1.txt

будет делать не то, что Вы ожидаете, т.к. она будет пытаться искать

- 23 -

строку "QNX" в файлах 4 и chapter1.txt. Кроме того, команда:

grep 'QNX\ 4' chapter1.txt

не будет также искать "QNX", т.к. одинарные кавычки заставляют ко-

мандный интерпретатор игнорировать специальное значение симво-

ла "\". Следовательно, вышеуказанная команда будет пытаться найти

строку:

QNX\ 4

в файле chapter1.txt.

2.2. Переадресование ввода-вывода

Большинство команд читают входные данные из файла стандартного

ввода (stdin), который обычно присваивается Вашей клавиатуре, и за-

писывают выходные данные в файл стандартного вывода (stdout), кото-

рый обычно присваивается экрану Вашего дисплея. Однако, бывают слу-

чаи, когда Вы хотите:

- считать входные данные из файла или устройства, отличного от

клавиатуры;

- переадресовать stdout в файл или на другую команду

-------------------------------------------------------------------

Если Вы хотите, чтобы процесс: используйте этот символ:

-------------------------------------------------------------------

читал из файла или другого < (символ входной переадресации)

устройства

переадресовал stdout в файл > (символ выходной переадресации)

переадресовал stdout в файл, >> (символ добавления к выходным

добавляя к содержимому файла данным)

переадресовал stdout непос- | (pipe-символ)

редственно на другую команду

-------------------------------------------------------------------

Например, посмотрим на команду ls, которая выдает список фай-

лов в каталоге. Если Вы хотите получить список файлов и переадресо-

вать его в файл, названный filelist, введите:

ls >filelist

.

- 24 -

2.3. Выполнение команд на другом узле или устройстве

В QNX Вы можете выполнять команды на другой машине (кроме Ва-

шей собственной), если обе машины находятся в одной сети. Это назы-

вается удаленным выполнением. Каждая машина в сети называется уз-

лом. Когда команда вызвана на другом узле, стандартный ввод, стан-

дартный вывод и вывод стандартной ошибки команды отображаются на

экране Вашей консоли (или терминале), если Вы явно не переназначите

их на другое устройство. Для того, чтобы вызвать команду на другом

узле, используйте команду onnode; чтобы переадресовать (или "подк-

лючить") стандартные ввод и вывод команды на другое устройство, ис-

пользуйте команду ontty.

Использование onnode

Выполнить команду sin на узле (вывод команды sin отображается

на экране вызова, то есть на Вашем собственном экране):

onnode 4 sin

Следующая команда эквивалентна вышеуказанной команде onnode,

но использует обозначение //node command:

//4 sin

Загрузить команду sin из /bin узла 2 и выполнить ее на узле 4

(вывод команды sin все еще отображается на экране вызова):

onnode 4 //2/bin/sin

Выполнить команду sin на узле 4 и переадресовать ее выход на кон-

соль 1 узла 2 (потоки входных данных команды sin и выходные ошибки все

еще подключаются к экрану вызова):

onnode 4 sin >//2/dev/con1

Использование ontty

Выполнить команду ls, подключив ее вход и выход к консоли_3:

ontty /dev/con3 ls

- 25 -

Комбинирование onnode и ontty

Если Вы объедините onnode с ontty, Вы можете запустить команду

на другом узле, а также подключить вход и выход команды к устройс-

тву этого узла. Никакие виртуальные каналы не будут подключены к

узлу, с которого вызвана команда. Например, следующая команда за-

пускает сервер nameloc на узле 4 и подключает его вход/выход на

/dev/con1 узла 4:

onnode 4 ontty //4/dev/con1 nameloc &

Имейте в виду, что даже, если программа выполняется на узле 4

и вход/выход подключен к устройству узла 4, она все еще зависит от

вызвавшего ее командного интерпретатора. Например, если эта команда

запускалась командным интерпретатором и он впоследствии завершает

свою работу, команде устанавливается сигнал SIGHUP (то есть и она

будет завершаться). Для того, чтобы полностью отделить команду от

запускающего ее командного интерпретатора, Вы должны использовать

команду nohup. Например:

onnode 4 ontty //4/dev/con1 nohup nameloc &

ВНИМАНИЕ. Для получения дополнительной информации о вышеука-

занных командах смотрите nohup и sh в "Utilities Re-

ference".

Альтернативу использования ontty и onnode смотрите в описании утили-

ты on также в "Utilities Reference".

2.4. Отображение cистемных сообщений

Каждая утилита QNX формирует системные сообщения. По коман-

де use Вы можете отобразить используемые утилитой сообщения. Напри-

мер, чтобы отобразить сообщения more, Вы можете ввести:

use more

Если Вы задаете use для команды и команда не может быть выпол-

нена в текущем каталоге или она не содержит записей сообщений, то

Вам выдается сообщение об ошибке. Дополнительную информацию о ко-

манде use смотрите в "Utilities Reference".

2.5. Использование шаблонов

- 26 -

Вместо использования команды для работы только с одним файлом,

Вы можете использовать шаблоны (также известные, как символы срав-

нения с образцом), чтобы выполнить операции в различных файлах од-

новременно. Для формирования шаблонов Вы можете использовать следу-

ющие символы:

* - соответствует отсутствию или нескольким символам;

? - соответствует любому одиночному символу;

[] - соответствует любым символам (или диапазону симво-

лов, разделенных знаком тире), заключенным в скоб-

ки;

! - исключает символы, заключенные в скобки.

ВНИМАНИЕ. Имейте в виду, что каталоги, также как и файлы, вы-

бираются в соответствии с этими шаблонами.

Примеры:

Следующие примеры показывают Вам, как Вы можете использовать

шаблоны при задании утилиты cp, чтобы скопировать группу файлов в

каталог с именем /tmp (дополнительную информацию об использовании

утилиты cp смотрите в "Utilities Reference").

-------------------------------------------------------------------

Если Вы вводите: cp делает следующее:

-------------------------------------------------------------------

cp f* /tmp копирует все файлы, начинающиеся с f (напри-

мер, frd.c, flnt)

cp *d /tmp копирует все файлы, заканчивающиеся d (напри-

мер, frd, fld)

cp fred? /tmp копирует все файлы, начинающиеся с fred и за-

канчивающиеся любым одиночным символом (нап-

ример, freda, fred3)

cp fred[l23] /tmp копирует все файлы, начинающиеся с fred и за-

канчивающиеся 1, 2, или 3 (то есть fred1,

fred2, fred3)

cp fred[l-3] /tmp как указано выше

cp *.[ch] /tmp копирует все файлы, заканчивающиеся .c или .h

(например, frd.c, barn.h)

cp *.[!o] /tmp копирует все файлы, за исключением .о

-------------------------------------------------------------------

2.6. Ввод нескольких команд

Вы можете ввести более чем одну команду одновременно, разделяя

- 27 -

Ваши команды знаком;. Например, если Вы хотите определить Ваш те-

кущий каталог и увидеть, что он содержит, Вы можете ввести:

pwd; ls

Или, скажем, Вы хотите сделать копию файла в Вашем текущем ка-

талоге, затем посмотреть скорректированное содержание каталога. Вам

необходимо ввести:

сp myfile myfile2; ls

2.7. Сведения о командах интерпретатора

Вы можете ввести любое количество команд интерпретатора в

текстовый файл и затем вызвать команды в режиме пакетной обработки,

просто выполняя этот файл. Файл, содержащий команды интерпретатора,

обычно известен как последовательность команд командного интерпре-

татора.

Вы можете выполнить последовательность команд интерпретато-

ра двумя способами:

- другой командный интерпретатор вызывается с именем Вашей

последовательности команд командного интерпретатора, которое вво-

дится, как аргумент:

sh myscript

- последовательность команд командного интерпретатора непос-

редственно делается выполняемой и затем рассматривается, как новая

команда:

chmod 744 myscript

myscript

В данном случае Ваш командный интерпретатор автоматически вы-

зывает новый командный интерпретатор, чтобы выполнить Вашу последо-

вательность команд командного интерпретатора.

2.8. Дополнительная информация

Некоторые темы, включенные в эту главу, описаны дополнительно

в sh в "Utilities Reference".

.

- 28 -

-------------------------------------------------------------------

Чтобы узнать больше о: смотрите в sh:

-------------------------------------------------------------------

специальных символах отметки Ссылка

переадресовании ввода-вывода Переадресование

выполнении команд на другом узле Удаленное выполнение и испо-

или устройстве льзование команд командного

интерпретатора

использовании шаблонов Расширение

вводе нескольких команд Перечень команд

последовательности команд Последовательность команд ко-

командного интерпретатора мандного интерпретатора

-------------------------------------------------------------------

.

- 29 -