, при этом имя_каталога записывается в вершину стека, остальные элементы стека сохраняются с новыми номерами. Форма 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 -