ОПИСАНИЕ:
"Файл1" копируется в "файл2". Если "файл2" существует,
режим и владелец сохраняются, в противном случае ис-
пользуется режим исходного файла.
Вторая форма данной команды копирует один или несколь-
ко указанных файлов в "справочник" с исходными имена-
ми.
Команда cp отвергает запрос на копирование файла в са-
мого себя.
Если задан параметр -i и копирование производится в
уже существующий файл, от пользователя требуется
подтверждение. Если пользователь подтверждает запрос,
выдавая ответ "y", команда cp продолжает работу. При
выдаче любого другого символа предыдущее содержимое
файла сохраняется.
ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
cat, pr, mv
66
АПК 00210-01 33 01-4
ИМЯ:
crypt - зашифровать/расшифровать.
ФОРМАТ:
crypt [ключ]
ОПИСАНИЕ:
Команда crypt осуществляет чтение из стандартного
файла ввода и запись в стандартный файл вывода. Аргу-
мент "ключ" представляет собой ключ, который задает
конкретное преобразование информации. Если "ключ" не
задан, команда crypt требует ввод ключа с терминала,
не выдавая символов на экран терминала во время ввода
ключа. Две команды crypt с одним и тем же значением
ключа (ключ1):
crypt ключ1 <исходный >зашифрованный
crypt ключ1 <зашифрованный | pr
зашифруют исходный файл и, расшифровав, распечатают
исходный текст.
Файлы, зашифрованные с помощью crypt, совместимы с
теми файлами, с которыми работает редактор ed в режиме
шифрования.
Защита зашифрованных файлов основана на трех факторах:
1) лежащий в основе метод должен быть трудным для
разгадки;
67
АПК 00210-01 33 01-4
2) прямой просмотр пространства ключей должен быть
невозможен;
3) обходные пути, позволяющие получить ключи или
исходный текст, должны быть минимизированы.
Команда crypt реализует однороторную шифровальную ма-
шину с 256-элементным ротором. Методы борьбы с такими
машинами известны, однако не очень широко. Более того,
для расшифровки необходимо проделать достаточно боль-
шую работу.
Преобразование ключа во внутренние установки машины
умышленно сделано сложным. Однако, если ключи ограни-
чены, например, тремя малыми буквами, зашифрованные
файлы могут быть прочитаны с затратами не более пяти
минут машинного времени.
Поскольку ключ является параметром команды crypt, он
является потенциально видимым для пользователей, вы-
полняющих команду ps или ее производную. Для уменьше-
ния этой возможности crypt разрушает любую запись клю-
ча сразу же после входа. Несомненно, выбор ключей и их
защищенность представляют собой наиболее уязвимое
место.
ФАЙЛЫ:
/dev/tty для напечатанного ключа
ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
ed, makekey
68
АПК 00210-01 33 01-4
ИМЯ:
csh - интерпретатор командного языка с Си-подобным
синтаксисом.
ФОРМАТ:
csh [-cefinstvVxX] [параметр...]
ОПИСАНИЕ:
Команда csh представляет собой интерпретатор командно-
го языка CSHELL, который, в отличие от языка SHELL,
имеет более широкий набор встроенных команд, поддержи-
вает некоторый контекст работы и имеет Си-подобный
синтаксис.
Функционирование csh начинается с выполнения командно-
го файла ".cshrc" в регистрационном справочнике поль-
зователя. Если csh используется в качестве интерпрета-
тора основного командного языка, при регистрирации в
системе выполняется командный файл ".login" в том же
справочнике. После этого интерпретатор начинает считы-
вать команды с терминала, выдавая в качестве подсказки
символ "%". При завершении работы выполняется ко-
мандный файл ".logout" в регистрационном справочнике
пользователя.
ЛЕКСИЧЕСКАЯ СТРУКТУРА:
Командой в языке CSHELL считается набор параметров.
Параметром является произвольная последовательность
символов, не содержащая символов пробела, табуляции и
69
АПК 00210-01 33 01-4
новой строки. Первый параметр в строке рассматривается
как имя команды, которую необходимо выполнить.
Существует набор символов, которые имеют специальное
значение в языке CSHELL, и обрабатываются особым обра-
зом. Такие символы в дальнейшем будут называться мета-
символами. К их числу относятся "&", "|", ";", "<",
">", "(", ")", "*" и некоторые другие.
В неинтерактивном режиме символ "#" указывает на нача-
ло комментария. Он теряет свое специальное значение
при использовании любого из существующих механизмов
экранирования.
КОМАНДЫ:
Простая команда представляет собой последовательность
слов, первое из которых - имя выполняемой команды, а
остальные передаются в качестве параметров. Последова-
тельность простых команд, разделенных символами "|",
образует канал межпроцессной связи (вывод предыдущей
команды является вводом следующей). Цепочки команд,
образующих межпроцессные каналы (конвейеры), могут
разделяться с помощью символа ";", при этом они выпол-
няются последовательно. В фоновом режиме, когда после-
довательность команд завершается символом "&", csh
может не дожидаясь окончания трансляции перейти к вы-
полнению следующей команды. В таком режиме существует
автоматическая защита от сигнала останова; следова-
тельно, нет необходимости в использовании команды
70
АПК 00210-01 33 01-4
"nohup".
Список команд, заключенный в скобки (), рассматривает-
ся как простая команда, которая может являться частью
конвейера. Символы "||" и "&&", используемые в ка-
честве разделителей, указывают (как и в языке Си), что
второй конвейер должен запускаться только в случае за-
вершения первого.
МЕХАНИЗМ ПОДСТАНОВКИ ПРЕДШЕСТВУЮЩИХ КОМАНД:
Csh запоминает командные строки, которые вводил поль-
зователь в процессе работы, и позволяет осуществлять
их повторный ввод.
Указателем выполнения подстановки команд является
символ "!". Подстановка может начинаться в любом месте
входного потока. Символ "!" теряет свое специальное
значение, если он экранирован с помощью символа "
также если за ним следует пробел, знак табуляции,
символ новой строки, "=" или "(". Подстановка команд
производится также в том случае, когда входная строка
начинается символом "^".
Команды нумеруются последовательно, начиная с 1. Коли-
чество запоминаемых csh командных строк определяется
переменной history. Ссылки на предыдущие команды из
текущей команды могут быть осуществлены следующим об-
разом:
!N по номеру команды;
71
АПК 00210-01 33 01-4
!-n на n команд раньше относительно текущей команды;
!c по первой букве команды;
!?...?!
по строке "...", содержащейся в некотором слове
команды;
!! повторное выполнение последней команды.
Для выбора из команды отдельных параметров, после спе-
цификации команды нужно указать ":" и определитель
требуемых параметров. Слова входной строки нумеруются,
начиная с 0: 0 - обычно имя команды, 1 - первый пара-
метр и т.д. Основными определителями являются:
0 имя команды;
n n-ый параметр;
^ первый параметр;
$ последний параметр;
% слово, которое соответствует (непосредственно
предшествующему) образцу ?...?;
х-y диапазон слов;
-y соответствует "0-y";27
* выбрать все параметры, начиная с первого ("%-$");
х* выбрать все параметры, начиная с n-го ("х-$");
72
АПК 00210-01 33 01-4
х- то же, что "х*", но не включая последний параметр
"$".
Символ ":" может быть опущен, если определитель начи-
нается одним из символов "^", "$", "*", "-" или "%".
После необязательного определителя могут указываться
модификаторы. Каждому из них предшествует двоеточие
":". Определены следующие модификаторы:
g применить модификацию во всех словах;
h удалить имя файла, оставляя имена справочников,
ведущих к нему;
р распечатать новую команду, но не выполнять ее;
q заключить модифицируемое слово в кавычки, пре-
дотвращая его дальнейшую модификацию;
r удалить расширение имени файла, указанное через
точку ".";
s/l/r заменить l на r. В качестве разделителя вместо
"/" может быть использован любой символ.В стро-
ках l и r разделитель должен экранироваться
символом "
ся предыдущая строка либо из l, либо из строки
контекстуального поиска s в "!?s?". Если строка
r пуста, то l удаляется;
t удалить имена всех справочников, ведущих к
файлу, оставляя имя файла;
73
АПК 00210-01 33 01-4
x то же, что и q, но разбить на слова в местах
наличия пробелов, знаков табуляции и символов
новой строки;
& повторить предыдущую модификацию.
Csh ппредоствляет удобный способ модификации последней
строки. Для этих целей используется конструкция "^об-
разец^замена".
ПСЕВДОНИМЫ:
С помощью команд alias и unalias интерпретатор csh
составляет список псевдонимов, которые могут устанав-
ливаться, отображаться и модифицироваться. После прос-
мотра командной строки она разбивается на отдельные
команды, и первое слово каждой команды проверяется
(слева направо), чтобы выяснить, имеет ли оно псевдо-
ним. Если имеет, то текст, который является псевдони-
мом данной команды, считывается с помощью механизма
history так, как если бы эта команда была предыдущей
входной строкой. Полученные слова заменяют команду и
список параметров. Этот механизм позволяет вводить
новый синтаксис команд.
ПОДСТАНОВКА ПЕРЕМЕННЫХ:
После подстановки псевдонимов и грамматического разбо-
ра входной строки и перед выполнением каждой команды
производится подстановка переменных, обозначаемая сим-
волом "$".
74
АПК 00210-01 33 01-4
Существуют следующие конструкции:
$имя
${имя}
Подставить значение переменной. Фигурные скобки
отделяют "имя" от символов, которые к нему не
относятся. Имена переменных могут содержать до
20 букв и символов подчеркивания;
$имя[селектор]
${имя[селектор]}
Подставить значение слова, выбранного "селекто-
ром" из множества значений переменной "имя";
$#имя
${#имя}
Подставить количество слов, хранящихся в пере-
менной;
$0 Подставить имя стандартного файла ввода. Если
это имя неизвестно, возникает ошибка;
$число
${число}
Эквивалентно "$argv [число]";
$* Эквивалентно "$argv [*]";
С помощью модификатора ":" не могут быть произведены
75
АПК 00210-01 33 01-4
следующие подстановки:
$?имя
${?имя}
Подставить "1", если "имя" определено, или "0" -
если не определено.
$?0 Подставить "1", если стандартный файл ввода оп-
ределен, или "0" - в противном случае.
$$ Подставить номер процесса csh.
ПОДСТАНОВКА ВЫВОДА КОМАНД:
При подстановке команды, ее заключают в обратные
апострофы `...`. Эта команда выполняется, а ее стан-
дартный вывод разбивается на отдельные слова в местах
наличия пробелов, знаков табуляции и символов новой
строки, причем пустые слова отбрасываются, и этот
текст затем заменяет исходную строку в "`". Внутри
строк, заключенных в кавычки "...", только символ
новой строки выделяет новые слова.Пробелы и символы
табуляции сохраняются.
При помощи подстановки вывода команды может быть соз-
дана только часть слова, даже если команда выдает це-
лую строку.
ПОДСТАНОВКА ИМЕН ФАЙЛОВ:
Если слово содержит любой из символов "*", "?", "[",
76
АПК 00210-01 33 01-4
"{" или начинается с "^ ", то в нем может быть осу-
ществлена подстановка имени файла. При этом данное
слово является образцом, который заменяется соот-
ветствующим списком файлов, отсортированных в алфавит-
ном порядке. Если в списке имен файлов не найдено ни
одного соответствия заданному образцу, возникает ошиб-
ка. Следующие символы имеют специальное значение:
* Соответствует любой последовательности символов,
в том числе пустой;
? Соответствует любому одиночному символу;
[...]
Соответствует любому из перечисленных символов.
Пара символов, разделенная знаком "-", соот-
ветствует любому символу из указанного лексичес-
кого промежутка;
~ Регистрационный справочник, являющийся значением
переменной home;
~имя Регистрационный справочник пользователя с именем
"имя";
[a,b,...,n]
Соответствует любому из перечисленных символов.
Для указания самих символов "[" и "]" в списке
перед ними должен ставиться символ "
a{b,c,d}e
77
АПК 00210-01 33 01-4
Соответствует "abe ace ade". Использование пробе-
лов не допускается.
При подборе имен файлов символ ".", находящийся в на-
чале имени файла или непосредственно после "/", а
также символ "/" должны быть указаны явно и точно на
своих местах.
ВВОД/ВЫВОД
Для задания файлов ввода/вывода используются следующие
конструкции:
<имя Использовать файл "имя" в качестве стандартного
файла ввода;
<<слово
Считать ввод интерпретатора до строки, которая
идентична указанному "слову". Полученный времен-
ный файл использовать в качестве стандартного
файла ввода;
>имя
>!имя
>&имя
>&!имя
Использовать файл "имя" в качестве стандартного
файла вывода. Содержимое файла усекается до ну-
левой длины. Если определена переменная
noclobber, файл не должен существовать, иначе
78
АПК 00210-01 33 01-4
возникает ошибка. Для предотвращения непреднаме-
ренного разрушения файлов используются конструк-
ции с "!". Конструкции, использующие "&", нап-
равляют в стандартный файл вывода также диагнос-
тические сообщения;
>>имя
>>&имя
>>!имя
>>&!имя
Использовать файл "имя" в качестве стандартного
файла вывода; выходная информация дописывается к
содержимому файла "имя". Если определена пере-
менная noclobber, а файл не существует, то ис-
пользование конструкций, не содержащих "!",
приводит к возникновению ошибки.
В фоновом режиме стандартным файлом вывода по умолча-
нию является пустой файл "/dev/null". Диагностика
может быть выведена по каналу межпроцессной связи. Для
этого используется конструкция "|&".
ВЫРАЖЕНИЯ:
Некоторые из встроенных команд могут содержать выраже-
ния, в которых имеются операции, аналогичные операциям
в языке Си, с таким же приоритетом. Эти выражения
могут появляться в командах @, exit, if и while. Раз-
решены следующие операции: "||", "&&", "|", "~", "&",
79
АПК 00210-01 33 01-4
"==", "!=", "<=", ">=", "<", ">", "<<", ">>", "+",
"-", "*", "/", "%", "!", "^", "(", ")".
Старшинство операций в этом ряду возрастает слева нап-
раво; внутри следующих групп операции имеют одинаковый
приоритет:
== !=
<= >= < >
<< >>
+ -
* / %
В операциях сравнения "==", "!=", операндами являются
строки; остальные оперируют с числами. Логическими
значениями являются: 0 - "ложь", 1 (или любое число,
отличное от нуля) - "истина". Все знаки операций
должны отделяться от операндов пробелами. В одном сло-
ве не должны встречаться два компонента выражений, за
исключением случаев использования следующих знаков
операций: "&", "|", "<", ">", "(", ")".
Имеющиеся в csh операции присваивания аналогичны опе-
рациям присваивания языка Си. К ним относятся: "=",
"+=", "-=", "*=", "/=", "%=".
Постфиксные операции "++" и "--" соответственно инкре-
ментируют и декрементируют "имя" (например, "@i++").
В качестве простых операндов в выражениях могут ис-
пользоваться команды, заключенные в фигурные скобки
80
АПК 00210-01 33 01-4
"{...}".
В csh имеются операции опроса свойств файла вида "-l
имя", где l может принимать следующие значения:
r разрешение чтения;
w разрешение записи;
х разрешение выполнения;
е существование;
о владелец;
z нулевой размер;
f незашифрованный файл;
d справочник.
В указанном файле осуществляются подстановки перемен-
ных и имен файлов. Если файл обладает требуемым
свойством, то возвращается значение 1 (истина), иначе
- 0 (ложь).
КОМАНДЫ УПРАВЛЕНИЯ:
К командам управления относятся следующие конструкции:
foreach имя (слово ...)
список_команд
end
Переменной "имя" последовательно присваиваются
значения "слово ..." и выполняется "список_ко-
манд".
switch( строка )
81
АПК 00210-01 33 01-4
case слово:
...
breaksw
...
default:
...
breaksw
endsw
"Строка" последовательно сравнивается со всеми
"словами". Если соответствие не обнаружено, вы-
полнение продолжается после default. Команда
breaksw приводит к тому, что выполнение продол-
жается после endsw.
if( выр1 ) then список_команд1
else if( выр2 ) then список_команд2
else список_команд3
endif
Если значение первого выражения истинно (отлично
от нуля), выполняется "список_команд1". В про-
тивном случае проверяется "выражение2": если оно
истинно, выполняется "список_команд2" и т.д.
while( выражение )
...
end
Цикл выполняется, пока истинно значение "выраже-
82
АПК 00210-01 33 01-4
ния".
В операторах управления csh ключевое слово (if, else и
др.) должно быть первым слово в строке.
ВСТРОЕННЫЕ КОМАНДЫ:
alias
alias имя
alias имя список_слов
Первая форма распечатывает все псевдонимы. Вто-
рая форма распечатывает псевдоним указанного
"имени". Последняя форма определяет "спи-
сок_слов" как псевдоним "имени". В "списке_слов"
осуществляется подстановка команд и имен файлов.
В качестве "имен" нельзя использовать "alias" и
"unalias".
alloc Выдает размер используемой динамической памяти,
включая используемую и свободную память, а также
адрес последней ячейки памяти.
break Вызывает возобновление выполнения после end бли-
жайшей внешней конструкции foreach или while.
Если в одной строке указывается несколько команд
break, разделенных точкой с запятой, то переход
осуществляется через столько же уровней.
breaksw
Вызывает выход из команды switch, возобновляя
83
АПК 00210-01 33 01-4
выполнение после endsw.
case метка:
"Метка" - один из вариантов оператора switch.
cd
cd имя
chdir
chdir имя
заменяет текущий справочник на справочник "имя".
Если параметр отсутствует, то по умолчанию при-
нимается регистрационный справочник.
continue
Продолжает выполнение ближайшего внешнего while
или foreach. Остальные команды текущей строки
выполняются.
default:
Метка, обозначающая вариант по умолчанию в опе-
раторе switch.Должна располагаться после всех
меток case.
echo список_слов
Указанные слова записываются в стандартный файл
вывода. Символ " на новую строку.
else
end
endif
84
АПК 00210-01 33 01-4
endsw
Используются в операторах foreach, if, switch и
while.
ехес команда
"Команда" запускается вместо csh. Работа csh за-
вершается.
exit
exit( выр )
Производится выход из csh либо со значением пе-
ременной status (первая форма), либо со значени-
ем указанного выражения "выр" (вторая форма);
glob список_слов
Эта команда аналогична команде echo, за исключе-
нием того, что при выводе слова разделяются про-
белами, так как символ "
goto слово
Команда безусловного перехода на метку.
Выполнение продолжается со строки, идущей после
указанной метки. Метка должна завершаться симво-
лом ":".
hashstat
Распечатывает статистику, определяющую, насколь-
ко эффективно внутренняя таблица хэширования
размещает команды.
85
АПК 00210-01 33 01-4
history
Отображает список предшествующих команд.
if (выр) команда
Если значение указанного выражения истинно, вы-
полняется "команда". Команда должна быть одна.
Использование конвейеров не допускается.
login
login имя
По команде login завершается работа csh и иници-
ализируется программа init для данного дисплея.
Команда может использоваться без параметра "имя"
и с ним. Во втором случае сразу же будет запро-
шен входной пароль пользователя.
logout
Прерывает работу csh. Если определена переменная
ignoreeof, то сигнал конца файла <CTRL/D> игно-
рируется.
nice
nice +число
nice команда
nice +число команда
Первая форма устанавливает приоритет csh равным
4. Вторая форма устанавливает приоритет равным
указанному числу. Последние формы выполняют ко-
манду с приоритетом 4 и "число" соответственно.
86
АПК 00210-01 33 01-4
Используя конструкцию "nice -число ...", супер-
пользователь может установить отрицательный при-
оритет. Команда выполняется в подпроцессе
csh.Использование конвейеров не допускается.
nohup
nohup команда
Команда предотвращает реакцию csh на сигналы
прерывания. При использовании без параметров
действие nohup распространяется на все строки
командого файла, указанные за ней. Во второй
форме сигналы прерывания игнорируются только при
выполнении указанной "команды". Для всех фоновых
процессов, nohup выполняется автоматически.
onintr
onintr -
onintr метка
Управляет реакцией csh на прерывания. Первая
форма восстанавливает стандартную реакцию csh на
прерывания, которая заключается в завершении вы-
полнения командных файлов csh или возврате в ин-
терактивный режим. Вторая форма вызывает игнори-
рование любых сигналов прерывания. Последняя
форма при получении сигнала прерывания вызывает
выполнение команды "goto метка".
rehash
87
АПК 00210-01 33 01-4
Создает хэш-таблицу команд, содержащихся в спра-
вочниках, которые указаны в переменной path.
repeat счетчик команда
Повторяет выполнение "команды" "счетчик" раз.
Стандартные файлы ввода/вывода задаются только
один раз.
set
set имя
set имя=слово
set имя[индекс]=слово
set имя=(список_слов)
Первая форма данной команды выводит значения
всех переменных csh. Переменные, которые имеют
несколько значений, выводятся в виде списка,
заключенного в скобки. Вторая форма присваивает
указанному "имени" строку нулевой длины. Третья
форма присваивает "имени" значение "слова". Чет-
вертая форма присваивает компоненту имени с но-
мером "индекс" значение "слова". Последняя форма
присваивает "имени" значения из "списока_слов".
setenv
setenv имя значение
Первая форма выводит значения переменных среды
процесса, вторая их устанавливает.
shift
88
АПК 00210-01 33 01-4
shift переменная
Члены переменной argv сдвигаются влево, при этом
argv[1] (левый элемент списка) отбрасывается.
Если элемент списка не определен или имеет менее
одного значения, то возникает ошибка. Вторая
форма команды выполняет эти же действия над ука-
занной "переменной".
source имя
Csh считывает команды из файла "имя". Командa
source может быть вложенной.Если глубина вложе-
ния слишком велика, то может не хватить дескрип-
торов файлов. Ошибка в команде source на любом
уровне прерывает выполнение остальных вложенных
команд source. Ввод команд, произведенный в про-
цессе выполнения команды source не фиксируется в
списке предшествующих команд.
time
time команда
При отсутствии параметров сообщает время, затра-
ченное интерпретатором csh и порожденными про-
цессами. Если параметр задан, выдается время,
затраченное указанной "командой".
umask
umask значение
Маска доступа к файлу сообщается (первая форма)
89
АПК 00210-01 33 01-4
или устанавливается равной указанному значению
(вторая форма). Значение маски указывается в
восьмеричном коде. Самыми распространенными зна-
чениями маски являются 022 (по умолчанию), кото-
рое задает любой доступ для пользователей своей
группы и доступ для чтения и выполнения другим
пользователям, и 002, определяющее любой доступ,
за исключением записи, для пользователей своей
группы и всех прочих;
unalias образец
Все псевдонимы, имена которых соответствуют ука-
занному образцу, отбрасываются. Следовательно,
команда "unalias *" удаляет все псевдонимы. Если
псевдонимы не удалились, это не считается ошиб-
кой.Использование команды без параметров приво-
дит к возникновению ошибки.
unhash
Запрещает использование хэш-таблицы для ускоре-
ния нахождения выполняемых программ.
unset образец
Все переменные, имена которых соответствуют ука-
занному образцу, удаляются. Таким образом, ко-
манда "unset *" удаляет все переменные, опреде-
ленные командой set. Попытка удалить неопреде-
ленную переменную не приводит к возникновению
"Файл1" копируется в "файл2". Если "файл2" существует,
режим и владелец сохраняются, в противном случае ис-
пользуется режим исходного файла.
Вторая форма данной команды копирует один или несколь-
ко указанных файлов в "справочник" с исходными имена-
ми.
Команда cp отвергает запрос на копирование файла в са-
мого себя.
Если задан параметр -i и копирование производится в
уже существующий файл, от пользователя требуется
подтверждение. Если пользователь подтверждает запрос,
выдавая ответ "y", команда cp продолжает работу. При
выдаче любого другого символа предыдущее содержимое
файла сохраняется.
ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
cat, pr, mv
66
АПК 00210-01 33 01-4
ИМЯ:
crypt - зашифровать/расшифровать.
ФОРМАТ:
crypt [ключ]
ОПИСАНИЕ:
Команда crypt осуществляет чтение из стандартного
файла ввода и запись в стандартный файл вывода. Аргу-
мент "ключ" представляет собой ключ, который задает
конкретное преобразование информации. Если "ключ" не
задан, команда crypt требует ввод ключа с терминала,
не выдавая символов на экран терминала во время ввода
ключа. Две команды crypt с одним и тем же значением
ключа (ключ1):
crypt ключ1 <исходный >зашифрованный
crypt ключ1 <зашифрованный | pr
зашифруют исходный файл и, расшифровав, распечатают
исходный текст.
Файлы, зашифрованные с помощью crypt, совместимы с
теми файлами, с которыми работает редактор ed в режиме
шифрования.
Защита зашифрованных файлов основана на трех факторах:
1) лежащий в основе метод должен быть трудным для
разгадки;
67
АПК 00210-01 33 01-4
2) прямой просмотр пространства ключей должен быть
невозможен;
3) обходные пути, позволяющие получить ключи или
исходный текст, должны быть минимизированы.
Команда crypt реализует однороторную шифровальную ма-
шину с 256-элементным ротором. Методы борьбы с такими
машинами известны, однако не очень широко. Более того,
для расшифровки необходимо проделать достаточно боль-
шую работу.
Преобразование ключа во внутренние установки машины
умышленно сделано сложным. Однако, если ключи ограни-
чены, например, тремя малыми буквами, зашифрованные
файлы могут быть прочитаны с затратами не более пяти
минут машинного времени.
Поскольку ключ является параметром команды crypt, он
является потенциально видимым для пользователей, вы-
полняющих команду ps или ее производную. Для уменьше-
ния этой возможности crypt разрушает любую запись клю-
ча сразу же после входа. Несомненно, выбор ключей и их
защищенность представляют собой наиболее уязвимое
место.
ФАЙЛЫ:
/dev/tty для напечатанного ключа
ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
ed, makekey
68
АПК 00210-01 33 01-4
ИМЯ:
csh - интерпретатор командного языка с Си-подобным
синтаксисом.
ФОРМАТ:
csh [-cefinstvVxX] [параметр...]
ОПИСАНИЕ:
Команда csh представляет собой интерпретатор командно-
го языка CSHELL, который, в отличие от языка SHELL,
имеет более широкий набор встроенных команд, поддержи-
вает некоторый контекст работы и имеет Си-подобный
синтаксис.
Функционирование csh начинается с выполнения командно-
го файла ".cshrc" в регистрационном справочнике поль-
зователя. Если csh используется в качестве интерпрета-
тора основного командного языка, при регистрирации в
системе выполняется командный файл ".login" в том же
справочнике. После этого интерпретатор начинает считы-
вать команды с терминала, выдавая в качестве подсказки
символ "%". При завершении работы выполняется ко-
мандный файл ".logout" в регистрационном справочнике
пользователя.
ЛЕКСИЧЕСКАЯ СТРУКТУРА:
Командой в языке CSHELL считается набор параметров.
Параметром является произвольная последовательность
символов, не содержащая символов пробела, табуляции и
69
АПК 00210-01 33 01-4
новой строки. Первый параметр в строке рассматривается
как имя команды, которую необходимо выполнить.
Существует набор символов, которые имеют специальное
значение в языке CSHELL, и обрабатываются особым обра-
зом. Такие символы в дальнейшем будут называться мета-
символами. К их числу относятся "&", "|", ";", "<",
">", "(", ")", "*" и некоторые другие.
В неинтерактивном режиме символ "#" указывает на нача-
ло комментария. Он теряет свое специальное значение
при использовании любого из существующих механизмов
экранирования.
КОМАНДЫ:
Простая команда представляет собой последовательность
слов, первое из которых - имя выполняемой команды, а
остальные передаются в качестве параметров. Последова-
тельность простых команд, разделенных символами "|",
образует канал межпроцессной связи (вывод предыдущей
команды является вводом следующей). Цепочки команд,
образующих межпроцессные каналы (конвейеры), могут
разделяться с помощью символа ";", при этом они выпол-
няются последовательно. В фоновом режиме, когда после-
довательность команд завершается символом "&", csh
может не дожидаясь окончания трансляции перейти к вы-
полнению следующей команды. В таком режиме существует
автоматическая защита от сигнала останова; следова-
тельно, нет необходимости в использовании команды
70
АПК 00210-01 33 01-4
"nohup".
Список команд, заключенный в скобки (), рассматривает-
ся как простая команда, которая может являться частью
конвейера. Символы "||" и "&&", используемые в ка-
честве разделителей, указывают (как и в языке Си), что
второй конвейер должен запускаться только в случае за-
вершения первого.
МЕХАНИЗМ ПОДСТАНОВКИ ПРЕДШЕСТВУЮЩИХ КОМАНД:
Csh запоминает командные строки, которые вводил поль-
зователь в процессе работы, и позволяет осуществлять
их повторный ввод.
Указателем выполнения подстановки команд является
символ "!". Подстановка может начинаться в любом месте
входного потока. Символ "!" теряет свое специальное
значение, если он экранирован с помощью символа "
также если за ним следует пробел, знак табуляции,
символ новой строки, "=" или "(". Подстановка команд
производится также в том случае, когда входная строка
начинается символом "^".
Команды нумеруются последовательно, начиная с 1. Коли-
чество запоминаемых csh командных строк определяется
переменной history. Ссылки на предыдущие команды из
текущей команды могут быть осуществлены следующим об-
разом:
!N по номеру команды;
71
АПК 00210-01 33 01-4
!-n на n команд раньше относительно текущей команды;
!c по первой букве команды;
!?...?!
по строке "...", содержащейся в некотором слове
команды;
!! повторное выполнение последней команды.
Для выбора из команды отдельных параметров, после спе-
цификации команды нужно указать ":" и определитель
требуемых параметров. Слова входной строки нумеруются,
начиная с 0: 0 - обычно имя команды, 1 - первый пара-
метр и т.д. Основными определителями являются:
0 имя команды;
n n-ый параметр;
^ первый параметр;
$ последний параметр;
% слово, которое соответствует (непосредственно
предшествующему) образцу ?...?;
х-y диапазон слов;
-y соответствует "0-y";27
* выбрать все параметры, начиная с первого ("%-$");
х* выбрать все параметры, начиная с n-го ("х-$");
72
АПК 00210-01 33 01-4
х- то же, что "х*", но не включая последний параметр
"$".
Символ ":" может быть опущен, если определитель начи-
нается одним из символов "^", "$", "*", "-" или "%".
После необязательного определителя могут указываться
модификаторы. Каждому из них предшествует двоеточие
":". Определены следующие модификаторы:
g применить модификацию во всех словах;
h удалить имя файла, оставляя имена справочников,
ведущих к нему;
р распечатать новую команду, но не выполнять ее;
q заключить модифицируемое слово в кавычки, пре-
дотвращая его дальнейшую модификацию;
r удалить расширение имени файла, указанное через
точку ".";
s/l/r заменить l на r. В качестве разделителя вместо
"/" может быть использован любой символ.В стро-
ках l и r разделитель должен экранироваться
символом "
ся предыдущая строка либо из l, либо из строки
контекстуального поиска s в "!?s?". Если строка
r пуста, то l удаляется;
t удалить имена всех справочников, ведущих к
файлу, оставляя имя файла;
73
АПК 00210-01 33 01-4
x то же, что и q, но разбить на слова в местах
наличия пробелов, знаков табуляции и символов
новой строки;
& повторить предыдущую модификацию.
Csh ппредоствляет удобный способ модификации последней
строки. Для этих целей используется конструкция "^об-
разец^замена".
ПСЕВДОНИМЫ:
С помощью команд alias и unalias интерпретатор csh
составляет список псевдонимов, которые могут устанав-
ливаться, отображаться и модифицироваться. После прос-
мотра командной строки она разбивается на отдельные
команды, и первое слово каждой команды проверяется
(слева направо), чтобы выяснить, имеет ли оно псевдо-
ним. Если имеет, то текст, который является псевдони-
мом данной команды, считывается с помощью механизма
history так, как если бы эта команда была предыдущей
входной строкой. Полученные слова заменяют команду и
список параметров. Этот механизм позволяет вводить
новый синтаксис команд.
ПОДСТАНОВКА ПЕРЕМЕННЫХ:
После подстановки псевдонимов и грамматического разбо-
ра входной строки и перед выполнением каждой команды
производится подстановка переменных, обозначаемая сим-
волом "$".
74
АПК 00210-01 33 01-4
Существуют следующие конструкции:
$имя
${имя}
Подставить значение переменной. Фигурные скобки
отделяют "имя" от символов, которые к нему не
относятся. Имена переменных могут содержать до
20 букв и символов подчеркивания;
$имя[селектор]
${имя[селектор]}
Подставить значение слова, выбранного "селекто-
ром" из множества значений переменной "имя";
$#имя
${#имя}
Подставить количество слов, хранящихся в пере-
менной;
$0 Подставить имя стандартного файла ввода. Если
это имя неизвестно, возникает ошибка;
$число
${число}
Эквивалентно "$argv [число]";
$* Эквивалентно "$argv [*]";
С помощью модификатора ":" не могут быть произведены
75
АПК 00210-01 33 01-4
следующие подстановки:
$?имя
${?имя}
Подставить "1", если "имя" определено, или "0" -
если не определено.
$?0 Подставить "1", если стандартный файл ввода оп-
ределен, или "0" - в противном случае.
$$ Подставить номер процесса csh.
ПОДСТАНОВКА ВЫВОДА КОМАНД:
При подстановке команды, ее заключают в обратные
апострофы `...`. Эта команда выполняется, а ее стан-
дартный вывод разбивается на отдельные слова в местах
наличия пробелов, знаков табуляции и символов новой
строки, причем пустые слова отбрасываются, и этот
текст затем заменяет исходную строку в "`". Внутри
строк, заключенных в кавычки "...", только символ
новой строки выделяет новые слова.Пробелы и символы
табуляции сохраняются.
При помощи подстановки вывода команды может быть соз-
дана только часть слова, даже если команда выдает це-
лую строку.
ПОДСТАНОВКА ИМЕН ФАЙЛОВ:
Если слово содержит любой из символов "*", "?", "[",
76
АПК 00210-01 33 01-4
"{" или начинается с "^ ", то в нем может быть осу-
ществлена подстановка имени файла. При этом данное
слово является образцом, который заменяется соот-
ветствующим списком файлов, отсортированных в алфавит-
ном порядке. Если в списке имен файлов не найдено ни
одного соответствия заданному образцу, возникает ошиб-
ка. Следующие символы имеют специальное значение:
* Соответствует любой последовательности символов,
в том числе пустой;
? Соответствует любому одиночному символу;
[...]
Соответствует любому из перечисленных символов.
Пара символов, разделенная знаком "-", соот-
ветствует любому символу из указанного лексичес-
кого промежутка;
~ Регистрационный справочник, являющийся значением
переменной home;
~имя Регистрационный справочник пользователя с именем
"имя";
[a,b,...,n]
Соответствует любому из перечисленных символов.
Для указания самих символов "[" и "]" в списке
перед ними должен ставиться символ "
a{b,c,d}e
77
АПК 00210-01 33 01-4
Соответствует "abe ace ade". Использование пробе-
лов не допускается.
При подборе имен файлов символ ".", находящийся в на-
чале имени файла или непосредственно после "/", а
также символ "/" должны быть указаны явно и точно на
своих местах.
ВВОД/ВЫВОД
Для задания файлов ввода/вывода используются следующие
конструкции:
<имя Использовать файл "имя" в качестве стандартного
файла ввода;
<<слово
Считать ввод интерпретатора до строки, которая
идентична указанному "слову". Полученный времен-
ный файл использовать в качестве стандартного
файла ввода;
>имя
>!имя
>&имя
>&!имя
Использовать файл "имя" в качестве стандартного
файла вывода. Содержимое файла усекается до ну-
левой длины. Если определена переменная
noclobber, файл не должен существовать, иначе
78
АПК 00210-01 33 01-4
возникает ошибка. Для предотвращения непреднаме-
ренного разрушения файлов используются конструк-
ции с "!". Конструкции, использующие "&", нап-
равляют в стандартный файл вывода также диагнос-
тические сообщения;
>>имя
>>&имя
>>!имя
>>&!имя
Использовать файл "имя" в качестве стандартного
файла вывода; выходная информация дописывается к
содержимому файла "имя". Если определена пере-
менная noclobber, а файл не существует, то ис-
пользование конструкций, не содержащих "!",
приводит к возникновению ошибки.
В фоновом режиме стандартным файлом вывода по умолча-
нию является пустой файл "/dev/null". Диагностика
может быть выведена по каналу межпроцессной связи. Для
этого используется конструкция "|&".
ВЫРАЖЕНИЯ:
Некоторые из встроенных команд могут содержать выраже-
ния, в которых имеются операции, аналогичные операциям
в языке Си, с таким же приоритетом. Эти выражения
могут появляться в командах @, exit, if и while. Раз-
решены следующие операции: "||", "&&", "|", "~", "&",
79
АПК 00210-01 33 01-4
"==", "!=", "<=", ">=", "<", ">", "<<", ">>", "+",
"-", "*", "/", "%", "!", "^", "(", ")".
Старшинство операций в этом ряду возрастает слева нап-
раво; внутри следующих групп операции имеют одинаковый
приоритет:
== !=
<= >= < >
<< >>
+ -
* / %
В операциях сравнения "==", "!=", операндами являются
строки; остальные оперируют с числами. Логическими
значениями являются: 0 - "ложь", 1 (или любое число,
отличное от нуля) - "истина". Все знаки операций
должны отделяться от операндов пробелами. В одном сло-
ве не должны встречаться два компонента выражений, за
исключением случаев использования следующих знаков
операций: "&", "|", "<", ">", "(", ")".
Имеющиеся в csh операции присваивания аналогичны опе-
рациям присваивания языка Си. К ним относятся: "=",
"+=", "-=", "*=", "/=", "%=".
Постфиксные операции "++" и "--" соответственно инкре-
ментируют и декрементируют "имя" (например, "@i++").
В качестве простых операндов в выражениях могут ис-
пользоваться команды, заключенные в фигурные скобки
80
АПК 00210-01 33 01-4
"{...}".
В csh имеются операции опроса свойств файла вида "-l
имя", где l может принимать следующие значения:
r разрешение чтения;
w разрешение записи;
х разрешение выполнения;
е существование;
о владелец;
z нулевой размер;
f незашифрованный файл;
d справочник.
В указанном файле осуществляются подстановки перемен-
ных и имен файлов. Если файл обладает требуемым
свойством, то возвращается значение 1 (истина), иначе
- 0 (ложь).
КОМАНДЫ УПРАВЛЕНИЯ:
К командам управления относятся следующие конструкции:
foreach имя (слово ...)
список_команд
end
Переменной "имя" последовательно присваиваются
значения "слово ..." и выполняется "список_ко-
манд".
switch( строка )
81
АПК 00210-01 33 01-4
case слово:
...
breaksw
...
default:
...
breaksw
endsw
"Строка" последовательно сравнивается со всеми
"словами". Если соответствие не обнаружено, вы-
полнение продолжается после default. Команда
breaksw приводит к тому, что выполнение продол-
жается после endsw.
if( выр1 ) then список_команд1
else if( выр2 ) then список_команд2
else список_команд3
endif
Если значение первого выражения истинно (отлично
от нуля), выполняется "список_команд1". В про-
тивном случае проверяется "выражение2": если оно
истинно, выполняется "список_команд2" и т.д.
while( выражение )
...
end
Цикл выполняется, пока истинно значение "выраже-
82
АПК 00210-01 33 01-4
ния".
В операторах управления csh ключевое слово (if, else и
др.) должно быть первым слово в строке.
ВСТРОЕННЫЕ КОМАНДЫ:
alias
alias имя
alias имя список_слов
Первая форма распечатывает все псевдонимы. Вто-
рая форма распечатывает псевдоним указанного
"имени". Последняя форма определяет "спи-
сок_слов" как псевдоним "имени". В "списке_слов"
осуществляется подстановка команд и имен файлов.
В качестве "имен" нельзя использовать "alias" и
"unalias".
alloc Выдает размер используемой динамической памяти,
включая используемую и свободную память, а также
адрес последней ячейки памяти.
break Вызывает возобновление выполнения после end бли-
жайшей внешней конструкции foreach или while.
Если в одной строке указывается несколько команд
break, разделенных точкой с запятой, то переход
осуществляется через столько же уровней.
breaksw
Вызывает выход из команды switch, возобновляя
83
АПК 00210-01 33 01-4
выполнение после endsw.
case метка:
"Метка" - один из вариантов оператора switch.
cd
cd имя
chdir
chdir имя
заменяет текущий справочник на справочник "имя".
Если параметр отсутствует, то по умолчанию при-
нимается регистрационный справочник.
continue
Продолжает выполнение ближайшего внешнего while
или foreach. Остальные команды текущей строки
выполняются.
default:
Метка, обозначающая вариант по умолчанию в опе-
раторе switch.Должна располагаться после всех
меток case.
echo список_слов
Указанные слова записываются в стандартный файл
вывода. Символ " на новую строку.
else
end
endif
84
АПК 00210-01 33 01-4
endsw
Используются в операторах foreach, if, switch и
while.
ехес команда
"Команда" запускается вместо csh. Работа csh за-
вершается.
exit
exit( выр )
Производится выход из csh либо со значением пе-
ременной status (первая форма), либо со значени-
ем указанного выражения "выр" (вторая форма);
glob список_слов
Эта команда аналогична команде echo, за исключе-
нием того, что при выводе слова разделяются про-
белами, так как символ "
goto слово
Команда безусловного перехода на метку.
Выполнение продолжается со строки, идущей после
указанной метки. Метка должна завершаться симво-
лом ":".
hashstat
Распечатывает статистику, определяющую, насколь-
ко эффективно внутренняя таблица хэширования
размещает команды.
85
АПК 00210-01 33 01-4
history
Отображает список предшествующих команд.
if (выр) команда
Если значение указанного выражения истинно, вы-
полняется "команда". Команда должна быть одна.
Использование конвейеров не допускается.
login
login имя
По команде login завершается работа csh и иници-
ализируется программа init для данного дисплея.
Команда может использоваться без параметра "имя"
и с ним. Во втором случае сразу же будет запро-
шен входной пароль пользователя.
logout
Прерывает работу csh. Если определена переменная
ignoreeof, то сигнал конца файла <CTRL/D> игно-
рируется.
nice
nice +число
nice команда
nice +число команда
Первая форма устанавливает приоритет csh равным
4. Вторая форма устанавливает приоритет равным
указанному числу. Последние формы выполняют ко-
манду с приоритетом 4 и "число" соответственно.
86
АПК 00210-01 33 01-4
Используя конструкцию "nice -число ...", супер-
пользователь может установить отрицательный при-
оритет. Команда выполняется в подпроцессе
csh.Использование конвейеров не допускается.
nohup
nohup команда
Команда предотвращает реакцию csh на сигналы
прерывания. При использовании без параметров
действие nohup распространяется на все строки
командого файла, указанные за ней. Во второй
форме сигналы прерывания игнорируются только при
выполнении указанной "команды". Для всех фоновых
процессов, nohup выполняется автоматически.
onintr
onintr -
onintr метка
Управляет реакцией csh на прерывания. Первая
форма восстанавливает стандартную реакцию csh на
прерывания, которая заключается в завершении вы-
полнения командных файлов csh или возврате в ин-
терактивный режим. Вторая форма вызывает игнори-
рование любых сигналов прерывания. Последняя
форма при получении сигнала прерывания вызывает
выполнение команды "goto метка".
rehash
87
АПК 00210-01 33 01-4
Создает хэш-таблицу команд, содержащихся в спра-
вочниках, которые указаны в переменной path.
repeat счетчик команда
Повторяет выполнение "команды" "счетчик" раз.
Стандартные файлы ввода/вывода задаются только
один раз.
set
set имя
set имя=слово
set имя[индекс]=слово
set имя=(список_слов)
Первая форма данной команды выводит значения
всех переменных csh. Переменные, которые имеют
несколько значений, выводятся в виде списка,
заключенного в скобки. Вторая форма присваивает
указанному "имени" строку нулевой длины. Третья
форма присваивает "имени" значение "слова". Чет-
вертая форма присваивает компоненту имени с но-
мером "индекс" значение "слова". Последняя форма
присваивает "имени" значения из "списока_слов".
setenv
setenv имя значение
Первая форма выводит значения переменных среды
процесса, вторая их устанавливает.
shift
88
АПК 00210-01 33 01-4
shift переменная
Члены переменной argv сдвигаются влево, при этом
argv[1] (левый элемент списка) отбрасывается.
Если элемент списка не определен или имеет менее
одного значения, то возникает ошибка. Вторая
форма команды выполняет эти же действия над ука-
занной "переменной".
source имя
Csh считывает команды из файла "имя". Командa
source может быть вложенной.Если глубина вложе-
ния слишком велика, то может не хватить дескрип-
торов файлов. Ошибка в команде source на любом
уровне прерывает выполнение остальных вложенных
команд source. Ввод команд, произведенный в про-
цессе выполнения команды source не фиксируется в
списке предшествующих команд.
time
time команда
При отсутствии параметров сообщает время, затра-
ченное интерпретатором csh и порожденными про-
цессами. Если параметр задан, выдается время,
затраченное указанной "командой".
umask
umask значение
Маска доступа к файлу сообщается (первая форма)
89
АПК 00210-01 33 01-4
или устанавливается равной указанному значению
(вторая форма). Значение маски указывается в
восьмеричном коде. Самыми распространенными зна-
чениями маски являются 022 (по умолчанию), кото-
рое задает любой доступ для пользователей своей
группы и доступ для чтения и выполнения другим
пользователям, и 002, определяющее любой доступ,
за исключением записи, для пользователей своей
группы и всех прочих;
unalias образец
Все псевдонимы, имена которых соответствуют ука-
занному образцу, отбрасываются. Следовательно,
команда "unalias *" удаляет все псевдонимы. Если
псевдонимы не удалились, это не считается ошиб-
кой.Использование команды без параметров приво-
дит к возникновению ошибки.
unhash
Запрещает использование хэш-таблицы для ускоре-
ния нахождения выполняемых программ.
unset образец
Все переменные, имена которых соответствуют ука-
занному образцу, удаляются. Таким образом, ко-
манда "unset *" удаляет все переменные, опреде-
ленные командой set. Попытка удалить неопреде-
ленную переменную не приводит к возникновению