,
при этом имя_каталога записывается в вершину стека,
остальные элементы стека сохраняются с новыми номерами.
Форма pushd +число выполняет команду cd
- 63 -
имя_номер_(1+число). При этом имя_номер_(1+число) ста-
вится в вершину стека, а число имен каталогов переписы-
ваются в конец стека в том порядке, в котором они сле-
довали от вершины стека, другие элементы стека остаются
без изменений.
rehash
обновить хеш-таблицу.
repeat число команда
команда repeat позволяет повторить выполнение команды
указанное число раз. Команда должна быть одна в
командной строке, она не должна быть последователь-
ностью команд, псевдонимом или конвейером.
set
set имя
set имя = слово
set имя[индекс] = слово
set имя = (список_слов)
set список_присваиваний
первая форма команды set отображает значения всех пере-
менных интерпретатора команд. Переменные, которые в
качестве своих значений имеют не одно слово, отобража-
ются как заключенный в скобки список слов. Вторая форма
присваивает указанному имени пустую строку, третья -
слово, четвертая - значение слова с номером индекс,
пятая - список слов. Последняя форма используется для
указания списка присваиваний - в одной командной строке
несколько присваиваний. Во всех случаях происходят
расширения псевдонимов командных строк и имен файлов.
Подстановка переменных осуществляется перед выполне-
нием присваиваний. Перед операциями над элементами мас-
сива его необходимо полностью определить. Не обрабаты-
ваются массивы с переменными или неопределенными грани-
цами.
setenv
setenv имя значение
первая форма выводит значение переменных окружения,
вторая их устанавливает. Удалить переменную окружения
можно командой unsetenv.
shift
shift переменная
осуществляет левый сдвиг списка слов переменной. Левый
элемент списка исчезает. Попытка осуществить shift для
- 64 -
пустого списка приводит к состоянию ошибки.
source файл
предназначена для выполнения командного файла без
порождения нового интерпретатора. Команды source могут
быть вложенными. Ошибка в команде source на любом
уровне завершает выполнение. Вызов команды source без
аргументов порождает состояние ошибки.
stop %внутренний_идентификатор_процесса
stop %шаблон_имени_процесса
останавливает выполнение асинхронного процесса.
suspend
останавливает выполнение интерпретатора.
switch( входная_строка )
case образец_1:
...
breaksw
...
default:
...
endsw
в образцах вариантов case сначала выполняются подста-
новки. В образцах вариантов case можно использовать
шаблоны имен файлов *, ? и [...]. Образцы вариантов
case последовательно сравниваются с указанной в switch
входной строкой. Если не выявлено совпадение образца
со входной строкой, выполнение продолжается после
default. Слова case и default должны стоять первыми в
командной строке. Оператор breaksw передает управление
на строку, следующую за endsw. Если в варианте case не
указан оператор breaksw, то при совпадении с образцом
выполняются все строки до первого breaksw или default.
Если не обнаружено совпадение с образцом и default
отсутствует, выполнение продолжается после endsw.
time
time команда
при отсутствии параметров печатается итог времени,
израсходованного интерпретатором и его потомками. В
качестве команды нельзя использовать псевдонимы.
umask
umask маска
- 65 -
по умолчанию файлу устанавливается код доступа, который
определяется маской. Файл будет иметь код доступа, в
котором маскированы (равны 0) биты, установленные
(равны 1) в маске. Пусть маска имеет вид 123. Первая
цифра относится к маскированию битов доступа для вла-
дельца файла и администратора, вторая - к битам доступа
группы, а третья - к битам доступа всех остальных поль-
зователей. Значение маски указывается в восьмеричном
коде. Обычно значением маски является 002, которое
задает любой доступ для пользователей своей группы,
доступ для чтения и выполнения другим пользователям, и
022, которое определяет любой доступ (за исключением
записи) для пользователей своей группы и всех прочих.
Чтобы узнать текущее значение маски, надо выполнить
команду umask без аргумента.
unalias псевдоним ...
все псевдонимы, имена которых соответствуют указанным,
отменяются. Следовательно, unalias * удаляет все псев-
донимы. При запуске команды без аргументов порождается
состояние ошибки.
unhash
запрещает использовать хеш-таблицу при поиске команды.
unlimit ресурс
unlimit
снимает ограничение на ресурс. Если ресурс не указан,
снимаются ограничения на все ресурсы.
unset шаблон
удаляются все переменные, имена которых соответствуют
указанному шаблону. Таким образом, unset * удаляет все
переменные, установленные командой set.
unsetenv имя
удаляется переменная из окружения.
wait
ожидание всех выполняемых процессов. Пока выполняется
команда wait, приглашение не печатается. Команда wait
выполняется, пока не завершатся все запущенные на
выполнение процессы. При прерывании выполнения команды
wait (CTRL/C или СУ/C) сообщаются имена и номера всех
процессов, для которых выполнялось ожидание.
while( выражение )
...
end
- 66 -
цикл выполняется, пока истинно (не равно нулю) значение
выражения. Ключевые слова while и end должны нахо-
диться на отдельных строках. В теле цикла можно исполь-
зовать break для выхода из цикла и continue для возоб-
новления следующей итерации цикла без завершения теку-
щей.
- 67 -
СОДЕРЖАНИЕ
АННОТАЦИЯ ......................................... 2
1. Командный язык C-shell ............................ 3
1.1. Лексическая структура языка C-shell ............. 3
1.2. Форматы командных строк, перемещения по файловой
системе ......................................... 6
1.3. Управление вводом и выводом ..................... 9
1.4. Управление процессами ........................... 11
1.5. Шаблоны имен файлов и каталогов ................. 17
1.6. Подстановки значений переменных ................. 19
1.7. Модификаторы переменных ......................... 26
1.8. Выражения ....................................... 30
1.9. Операторы языка C-shell ......................... 35
1.10. Командные файлы ................................. 39
1.11. Протоколирование, средства работы с протоколом .. 44
1.12. Переменные интерпретатора csh ................... 49
1.13. Специальные файлы ............................... 55
1.14. Встроенные команды и операторы .................. 57
- 68 -