Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 87
Текст из файла (страница 87)
Встроенные команды возвращают значение 0 (успешное выполнение)или 1(неудача)syml i n/<s={chase|ignore|expand}Определить способ работы с символическими ссылками. Расширять их до реального имени каталога по cwd(chase), считать действительными каталогами (ignore)или расширять аргументы, напоминающие путевыеимена(expand)tcshВерсия tcshtermТип терминалаtime=' n %c'Если выполнение команды занимает более л секундпроцессорного времени, отобразить пользовательскоевремя, системное время, прошедшее время (для команды) и загрузку процессора (в процентах). Указывайтеальтернативные %с флаги для отображения другой информацииt periodКоличество минут менаду выполнениями псевдонимаperiodicttyИмя терминала, если таковой имеетсяuidИдентификатор пользователяuserРегистрационное имя пользователяverboseОтображать команду после выполнения подстановкииз журнала команд; идентично выполнению csh —vversionНомер версии интерпретатора и дополнительная информация, включая параметры, установленные на этапе компиляцииvisiblebellМерцание экрана вместо звукового сигналаинтерпретатору.По591ПеременныеПеременнаяОписаниеwatch—([n] user terminal..
.)Наблюдение за входом в систему и выходом пользователя user на терминале terminal (terminal - имя терминалаили any. User тоже может принимать значение any).Проверка каждые п минут (по умолчанию равно 10)who=stringЗадать информацию, отображаемую командой watchwordchars—charsСписок всех не буквенно-цифровых символов, которыемогут являться частью слова. По умолчанию это символы *?_-.[ ]~=Форматирование переменной приглашенияИнтерпретатор tcsh поддерживает набор подстановок, которые определяютвид приглашения (в csh доступны только простые строки приглашений иподстановка команд из журнала по символу !). Вот список существующихподстановок:% % Символ % .Текущий рабочий каталог.%/Текущий рабочий каталог в записи с символом ~.%~%# Символ #— для суперпользователя, > - для всех остальных пользователей.% ? Код завершения предыдущей команды.%Ь Конец выделения полужирным шрифтом.%dПоследние п (по умолчанию равно 1) компонент имени текущего рабочего каталога.
Если задан 0, неотображаемые компоненты заменяютсяна /<skipped>.День недели (Mon, Tue и т. д.).%1%m%п%р%sНомер текущего события.Текущий терминал.Первый компонент имени узла.Имя пользователя.Текущее время с точностью до секунды (в 12-часовом формате).Конец инверсного выделения (reverse video).%t,%@Текущее время (в 12 -часовом формате).%и Конец подчеркивания.% w Текущий месяц (Jan, Feb и т. д.).592Глава 8.
Интерпретаторы csh и tcsh%у%ВТекущий год (99, 00 и т. д.).Начало полужирного выделения.%С Аналогично %с, но с использованием абсолютных имен, а не записичерез ~.%DЧисло месяца (09, 10 и т. д.).% М Полное имя узла.% Р Текущее время с точностью до секунды (в 24-часовом формате).%SНачало инверсного выделения (reverse video).% Т Текущее время (в 24-часовом формате).%UНачало подчеркивания.% W Текущий месяц (09, 10 и т. д.).%Y Текущий год (1999, 2000 и т. д.).Пример файла .cshrcit Предопределенные переменныеset path=(~ "/bin /usr/ucb /bin /usr/bin .)set mail=(/usr/mail/tom)if ($?prompt) thenset echoset noclobber ignoreeof# настройки для диалогового режимаset cdpath=(/usr/lib /usr/spool/uucp)# Теперь можно вводить команду cd macros вместо cd /usr/lib/macrosset history=100set prompt='tom \!% 'set time=3tt содержит номер командыtt Мои переменныеset man1 = "/usr/man/man1"set a="[a-z]*"set A="[A-Z]«"it теперь можно использовать cd $man1, Is $nan1tt а также vi $att или grep string $AЯ Псевдонимыaliasaliasaliasaliasaliasendifс "clear; dirs"tt кавычки экранируют ; или |h "history|more"j jobs -1Is Is -sFCtt переопределяем команду Is!del 'mv \! * ~/tfnp_dir tt безопасная альтернатива rmПеременные593Переменные окруженияВ интерпретаторе С shell существует набор переменных окружения, которыеотличаются от переменных интерпретатора и не являются, по сути, его составляющей.
Переменные интерпретатора имеют смысл только в текущеминтерпретаторе, а переменные окружения автоматически экспортируютсяиз интерпретатора и видимы глобально. К примеру, переменные С shell доступны только определенному сценарию, в котором они определяются, тогда как переменные окружения могут использоваться любым сценарием интерпретатора, почтовыми службами или редакторами, с которыми работаетпользователь.Переменные окружения инициализируются следующим образом:setenv VAR valueПо принятым соглашениям все буквы имен переменных окружения прописные.
Можно создавать собственные переменные окружения либо использовать предопределенные существующие, которые перечислены ниже.Каждой из этих переменных окружения соответствует переменная интерпретатора С shell. Если меняется значение одной из этих переменных, значение второй изменяется автоматически (курсивом отмечены переменные,действительные только для tcsh):GROUPИмя группы пользователя; то же, что и group.НОМЕДомашний каталог; то же, что и home.PATHПути поиска команд; то же, что и path.SHLVLУровень вложенности интерпретаторов; то же, что и shlvl,TERMТип терминала; то же, что и term.USERРегистрационное имя пользователя; то же, что и user.Вот некоторые из прочих переменных окружения, не имеющих соответствий среди переменных интерпретатора (курсивом выделены переменные,действительные только для tcsh):COLUMNSКоличество колонок текста на терминале.DISPLAYПеременная, указывающая на экран пользователя в системе X Window.Если она установлена, интерпретатор отменяет действие autologout.594Глава 8.
Интерпретаторы csh и tcshEDITORПолное имя редактора по умолчанию. См. такжеУ1811АЬ.HOSTИмя машины.HOSTTYPEТип машины. Переменная устарела и будет в будущем изъята из употребления.НРАТНСписок каталогов, в которых производится поиск документации. Элементы разделяются двоеточием.LANGПредпочтительный язык. Используется для организации поддержкиязыков, отличных от английского.LC_CTYPEПараметры локализации, влияющие на обработку символов (локаль).Применяется для организации поддержки языков, отличных от английского.LINESКоличество строк текста на терминале.LOGNAMEЕще одно имя переменной USER.MACHTYPEТип машины.MAILФайл почтового ящика.
Используется почтовыми программами. Переменная не идентична переменной С shell mail, по которой производитсятолько проверка наличия новых сообщений.NOREBINDОтображаемые символы не могут переопределяться. Предназначена дляорганизации поддержки языков, отличных от английского.OSTYPEОперационная система.PWDТекущий рабочий каталог; значение копируется nscwd.REMOTEHOSTИмя машины (удаленного узла).Выражения595SHELLПеременная по умолчанию не определена; инициализируется значениемshell, после чего обе переменные идентичны.TERMCAPФайл, содержащий последовательности позиционирования курсора дляразных типов терминалов пользователей.
По умолчанию это файл /etc/termcap.VENDORНазвание производителя системы.VISUALПолное имя экранного редактора по умолчанию. См. также EDITOR.ВыраженияВыражения используются в операторах @, if и while для выполнения арифметических и строковых сравнений, проверки свойств файлов и т. д. Команды exit и set также могут включать выражения, как и встроенная командаfiletest. Выражения формируются из переменных и констант в сочетании соператорами, которые схожи с операторами языка программирования С.Приоритеты операторов идентичны приоритетам в языке С.
Их легко запомнить следующим образом:1. */%2. +Все прочие выражения необходимо заключать в круглые скобки. Скобки необходимы, если выражение содержит операторы <, >, & или |.ОператорыСуществуют операторы нескольких типов:Операторы присваиванияОператорОписаниеПрисвоить значение+= -=Присвоить после сложения/вычитания*= /= Х=Присвоить после умножения/деления/взятия остатка&= -= |=Присвоить после выполнения поразрядных операций AND/XOR/ORИнкрементДекрементГлава 8. Интерпретаторы csh и tcsh596Арифметические операторыОператорОписаниеУмножение, целочисленное деление, взятие остаткаСложение, вычитаниеПоразрядные и логические операторыОператорОписаниеДвоичная инверсия (дополнение до единицы)Логическое отрицаниеПоразрядный сдвиг влево и вправоПоразрядное AND (И)Поразрядное исключающее OR (ИЛИ) - XORIПоразрядное OR (ИЛИ)&&Логическое AND (И)IIЛогическое OR (ИЛИ){ command }1, если команда завершилась успешно, О - в противном случае.
Обратите внимание, что происходит инвертирование обычного кода завершения команды. Более практичным в некоторых случаях является использование переменной $statusОператоры отношенийОператорОписаниеРавенство; неравенствоМеньше либо равно; больше либо равноСтрого меньше; строго большеОператоры опроса файловДля строки file выполняется подстановка команд и расширение файловыхимен перед проверкой. Btcsh условия можно комбинировать (например,-ef).Доступны следующие операторы:ОператорОписание-d fileФайл является каталогом-е fileФайл существует-f fileФайл является обычным-о fileПользователь является владельцем этого файлаВыражения597ОператорОписание-г fileУ пользователя есть права на чтение файла-w fileУ пользователя есть права на запись в файл-х fileУ пользователя есть права на выполнение файла-z fileНулевой размер файлаОтрицание любого из вышеперечисленных операторовДалее приведены некоторые операторы, специфичные для tcsh:ОператорОписание-b/ileФайл является специальным файлом блочного устройства-с fileФайл является специальным файлом символьного устройства-g fileДля файла установлен бит set-group-ID-k fileУстановлен бит «клейкости» файла (sticky bit)-1 fileФайл является символической ссылкой-L fileВыполнять все последующие операторы для символической ссылки, ане для файла, на который она указывает-p fileФайл является именованным каналом (FIFO)-s fileРазмер файла ненулевой-S fileФайл является сокетом (socket)-t fileФайл является открытым файловым дескриптором терминального устройства-u fileУстановлен бит set-user-ID для файла-X fileФайл является исполняемым и расположен в одном из каталогов, заданных переменной окружения PATH, либо является встроенной командойинтерпретатораИ наконец, в tcsh существуют следующие операторы, которые позволяютполучать информацию иного рода:ОператорОписание- А [ : ] fileВремя последнего доступа к файлу в секундах, прошедших с началаэпохи (1 января 1970 г.).
При указании двоеточия результат отображается в стандартном формате времени-С[:] fileВремя последнего изменения индексного дескриптора (inode-блока).При указании двоеточия результат отображается в стандартномформате времени-D fileНомер устройства598Глава 8. Интерпретаторы csh и tcshОператорОписание-F fileСоставной идентификатор файла в виде устройство:индексныйдескриптор (deviceiinode)-G[:] fileЧисленный идентификатор группы файла. При указании двоеточияотображается имя группы, если оно доступно, в противном случае численный идентификатор-I fileНомер inode-блока-L fileИмя файла, на который указывает символическая ссылка file-M[:] fileВремя последнего изменения файла.
При указании двоеточия результат отображается в стандартном формате времени-N fileКоличество жестких ссылок для файла-P[:] fileПрава доступа для файла в восьмеричной системе, без первого нуля.При указании двоеточия нуль включается в отображение-Pmode[:] file Эквивалентен оператору -Р file AND mode (логическая конъюнкция). При указании двоеточия ведущий нуль включается в отображение-U[:] fileЧисленный идентификатор владельца файла. При указании двоеточия отображается имя пользователя, если оно доступно, в противном случае - численный идентификатор-Z fileРазмер файла в байтахПримерыВ следующих примерах отображено использование операторов с командой (в предположении, что п = 4:Значение $хВыражениех = ($п > 10 || $п < 5)1х = ($п >=0О&&$п < 3)х = ($п « 2)16х = ($л » 2)1х = $п % 2Ох = $п % 31Далее следуют примеры первых строк операторов и while:ВыражениеЗначениеwhile ($#argv ! = 0)Пока не исчерпаны аргументы.if ($today[1] == "Fri")Если первое слово - «Fri».
. .599Журнал командВыражениеЗначениеif (-f $ a r g v [ 1 ] )Если первым аргументом является имя обычного файла. . .if (! ~d Stmpdir)Если tmpdir не является каталогом. . .Журнал командРанее выполнявшиеся команды сохраняются в специальном журнале. В интерпретаторе С shell существует возможность доступа к этому журналу сцелью проверки, повторения команд либо выполнения измененных вариантов. Встроенная команда history отображает содержимое журнала; предопределенные переменные histchars и history влияют на работу механизмажурнала команд.