Работа с командной строкой
Набираемую пользователем строку интерпретатор воспринимает как команду (или несколько команд). Синтаксис командного интерпретатора позволяет набирать
несколько команд в одной строке, разделяя их точкой с запятой. Например
% cd /tmp; lf
эквивалентно двум последовательно введенным командам:
% cd /tmp
% lf
Наоборот, при желании пользователь может
продолжить набор длинной команды на следующей строке, закончив текущую строку знаком \\. До завершения ввода команды вы будете получать ``вторичное приглашение'' > вместо основного (%). Например,
% tar tv Makefile star.o star.c star.dat main.o main.c
эквивалентно
% tar tv Makefile star.o \
> star.c star.dat \
> main.o main.c
Управление потоками ввода-вывода осуществляется, подобно DOS(Точнее, синтаксис перенаправления потоков ОС DOS восприняла от UNIX) с помощью символов > , > > , < , < < , |. Отметим здесь только следующее: в отличие от DOS при создании программного канала между двумя процессами ОС UNIX запускает оба процесса одновременно и осуществляет передачу информации через системный буфер (без промежуточной записи на жесткий диск). Таким образом, программные каналы в ОС UNIX являются весьма эффективным способом обмена. В случае переполнения системного буфера (например если ``передающая'' программа выдает информацию в канал быстрее чем ее может обработать ``принимающая'' программа) ОС автоматически приостанавливает тот процесс, который осуществляет запись в канал до освобождения буфера.
Полезный частный случай использования механизма перенаправления потоков - перенаправление в /dev/null, что позволяет избавиться от ненужных сообщений на экран. С помощью того же механизма можно создавать пустые файлы:
% cat < /dev/null > myfile
создаст в текущей директории пустой файл myfile.
Дополнительно C-shell позволяет группировать команды с помощью круглых скобок. В этом случае вся конструкция внутри скобок рассматривается интерпретатором как одна команда.
Сие полезно, например, в таких конструкциях:
% (command1 | command2) < myfile
Если же скобки опустить, shell не сможет определить какой из команд вы хотите подать на вход файл myfile.
Следующие ``удобства'' существуют в данной реализации C-shell:
% ps< EscH>