Tcsh: прочие возможности

Оболочка tcsh, как и все её собратья, располагает такими возможностями, как использование шаблонов в именах файлов и управление запущенными заданиями. Ни по сути, ни по форме они ничем не отличаются от аналогичных средств в оболочках sh-семейства, поэтому остановлюсь на них вкратце.

Использование шаблонов в именах файлов при указании их как аргументов команд предполагает, что часть имени файла вводится в виде специальных метасимволов, которые при обработке подменяется их значениями. Применяемые в tcsh метасимволы стандартны:

  • символ * заменяет любую последовательность любых символов за исключением начальной точки в именах скрытых файлов: её надо указывать явным образом;
  • символ ? заменяет любую единичную литеру или цифру;
  • набор символов [?-?] определяет диапазон литер или цифр, подставляемых в имена файлов;
  • в набор символов {*,*,*} можно вставить целые слова, которые будут помещены в имена файлов.

Управление заданиями включает в себя возможности запуска команд в фоновом режиме, просмотра списков запущенных заданий, перевода их из фонового режима в активный и обратно.

Для фонового исполнения команда запускается с символом & в конце командной конструкции, после чего возвращается приглашение командной строки, и становится возможным ввод следующей команды, которая также может определяться как фоновая. Команда jobs выводит список всех запущенных команд (и фоновых, и активных) с указанием их номеров. Для перевода фоновой команды в активный режим служит команда fg с указанием номера задания; команда bg, напротив, переводит активную задачу в режим фонового исполнения.

Наконец, последнее, о чём надо сказать пару слов -- это об операторах, которые упоминались в разделе о встроенных командах как одна из их разновидностей.

В tcsh поддерживаются условные операторы и операторы цикла. Условный оператор if, как явствует из его названия, определяет некоторое условие, при соответствии которому выполняется указанное действие, а при несоответствии -- не происходит ничего или выполняется другое действие, что в общем виде выглядит так:

if (условие) then
	command1
else
	command2
endif

С примером условного оператора мы столкнёмся в следующем разделе при рассмотрении прототипа конфигурационного файла ~/.cshrc:

if ($?prompt) then
        set filec
        ...
endif

То есть, если в данном экземпляре командной оболочки определена переменная prompt, что является показателем интерактивного режима её работы, в силу вступают определения перечисляемых ниже переменных.

Оператором цикла while определяется некое условие, при истинности которого происходит непрерывное выполнение указанных за условием команд.

Оператор цикла foreach позволяет организовать цикл по элементам массива слов:

foreach name (wordlist)
...
end

Один из частых случаев его использования -- переименование серии однотипных файлов, пример чему можно видеть здесь.

И, наконец, многовариантный условный оператор switch позволяет передавать управление в зависимости от того, удовлетворяет ли строка string какому-либо шаблону из набора pattern1, pattern2, ...( в этом случае управление передается в блок, ограниченный case ... breaksw) или нет (в этом случае управление передается на ветвь default:... endsw):

switch (string)
case pattern1 :  ...  breaksw  case {it pattern2} :
...
breaksw
...
default:
...
endsw

Вообще, операторы -- это совершенно отдельная тема, относящаяся уже не к пользованию как таковому, а к csh-скриптингу. Так что пока более насущным мне представляется вопрос настройки tcsh.


Содержание

. .