Язык обработки данных AWK

       

Работа с командной строкой


Набираемую пользователем строку интерпретатор воспринимает как команду (или несколько команд). Синтаксис командного интерпретатора позволяет набирать

несколько команд в одной строке, разделяя их точкой с запятой. Например

% cd /tmp; lf

эквивалентно двум последовательно введенным командам:

% cd /tmp

% lf

Наоборот, при желании пользователь может

продолжить набор длинной команды на следующей строке, закончив текущую строку знаком \\. До завершения ввода команды вы будете получать ``вторичное приглашение'' &gt вместо основного (%). Например,

% tar tv Makefile star.o star.c star.dat main.o main.c

эквивалентно

% tar tv Makefile star.o \

&gt star.c star.dat \

&gt main.o main.c



Управление потоками ввода-вывода осуществляется, подобно DOS(Точнее, синтаксис перенаправления потоков ОС DOS восприняла от UNIX) с помощью символов &gt , &gt &gt , &lt , &lt &lt , |. Отметим здесь только следующее: в отличие от DOS при создании программного канала между двумя процессами ОС UNIX запускает оба процесса одновременно и осуществляет передачу информации через системный буфер (без промежуточной записи на жесткий диск). Таким образом, программные каналы в ОС UNIX являются весьма эффективным способом обмена. В случае переполнения системного буфера (например если ``передающая'' программа выдает информацию в канал быстрее чем ее может обработать ``принимающая'' программа) ОС автоматически приостанавливает тот процесс, который осуществляет запись в канал до освобождения буфера.

Полезный частный случай использования механизма перенаправления потоков - перенаправление в /dev/null, что позволяет избавиться от ненужных сообщений на экран. С помощью того же механизма можно создавать пустые файлы:

% cat &lt /dev/null &gt myfile

создаст в текущей директории пустой файл myfile.

Дополнительно C-shell позволяет группировать команды с помощью круглых скобок. В этом случае вся конструкция внутри скобок рассматривается интерпретатором как одна команда.


Сие полезно, например, в таких конструкциях:

% (command1 | command2) &lt myfile

Если же скобки опустить, shell не сможет определить какой из команд вы хотите подать на вход файл myfile.

Следующие ``удобства'' существуют в данной реализации C-shell:

  • Вы можете не набирать длинную команду до конца, а попробовать после частичного набора команды (или имени файла) нажать клавишу табуляции &lt Tab&gt . C-shell попытается сама дополнить недостающие символы, либо ответит писком, если выбор неоднозначен.

  • Если вы набрали команду, но забыли ее опции, наберите последовательность &lt Esc&gt H. C-shell выдаст краткую помощь. Например,

    % ps&lt EscH&gt

  • Набирая полное имя файла пользуйтесь комбинацией клавиш ^D. Вы сможете получить листинг набираемого каталога в формате команды lf.

  • Командный буфер запоминает 20 последних команд. Вместо набора команды вы можете вызвать ее из буфера с помощью стрелочной клавиатуры (конечно только в том случае, если эта команда есть в буфере).


    Содержание раздела