Особенности работы оболочки bash.: ВОЗМОЖНОСТИ C-SHELL

Вперед Назад Содержание

2. ВОЗМОЖНОСТИ C-SHELL

С-оболочка(csh) была создана Биллом Джоем в университете Беркли. Считается, что в общем она имеет лучшие возможности диалогового использования, чем изначальная оболочка Борна. Некоторые возможности csh присутствуют в Bash, включая управление заданиями, расширение истории, т.н. "защищенное" переназначение и некоторые переменные для контроля за диалоговым режимом оболочки (IGNOREEOF).

Подробно об подстановке строк из истории см. гл.6.

2.1 Тильдовые расширения

Bash имеет тильдовое (~) расширение, подобное, но не идентичное соответствующему в csh. Следующая таблица показывает, что слова без кавычек начинаются с тильдового расширения.

~

текущее значение $HOME.

~/foo

`$HOME÷foo`

~fred÷foo

Подкаталог foo домашнего каталога пользователя fred.

~+÷foo

`$PWD/foo`

~-

`$OLDPWD/foo`

Bash также выполняет тильдовое расширение для слов, следующих за операторами переназначения и слов, следующих за `=` в операторах обозначения.

2.2 Brace-расширение.

Вrace (фигурноскобочное)-расширение - механизм, с помощью которого можно генерировать произвольные строки. Этот механизм подобен pathname-расширению (подробнее см. Bash manual page), но в нем нет необходимости существования имен файлов. Образец brace-расширения: опционная преамбула, затем серия разделенных запятыми строк, заключенная в фигурные скобки, и опционная постамбула. Преамбула предваряет каждую строку, заключенную в фигурные скобки, а постамбула заключает каждую результирующую строку - слева направо.

Brace-расширения могут вкладываться одно в другое. Результаты каждой расширенной строки не сортируются: сохраняется порядок слева направо. Например:

a{d,c,b}e
расширяется в
ade ace abe.
Brace-расширение выполняется перед всеми остальными расширениями, и все специальные символы других расширений сохраняются в результате. Это строго текстуально. Вash не использует никакой синтаксической интерпретации контекста расширения или текста, заключенного в фигурные скобки.

Правильно сформированное brace-расширение должно содержать открывающую и закрывающую фигурные скобки без кавычек, и по крайней мере одну запятую. Любое неправильное brace-расширение остается неизменным.

Эта конструкция используется для краткости, когда нужно породить общий префикс строк длиннее, чем в следующем примере:

mkdir usr/local/src/bash/{old,new,dist,bugs}
или

chown root/usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}.

2.3 Встроенные команды С-оболочки

Bash имеет несколько встроенных команд, описания которых очень похожи на соответствующие в csh.

pushd

pushd [dir | +n | -n]
Сохраняет текущий каталог в списке и применяет cd к dir. Без аргументов изменяет верхний из двух каталогов.
+n

Перемещает n-й каталог (считая с левой стороны списка, выведенного с помощью dirs) на вершину списка с помощью обработки стека.

-n

Перемещает n-й каталог (считая с правой стороны списка, выведенного с помощью dirs) на вершину списка с помощью обработки стека.

dir

Устанавливает текущий рабочий каталог на вершину стека и применяет cds к dir. Для того, чтобы посмотреть список каталогов, используется команда dirs.

popd

popd [+n | -n]
Выкладывает каталог из стека и применяет cds к новому верхнему каталогу. Если не даны аргументы, убирает верхний каталог из стека и применяет cds к новому верхнему каталогу. Элементы нумеруются начиная с 0 с первого каталога, занесенного в список с помощью dirs, таким образом команда popd эквивалентна popd +0.
+n

Перемещает n-й каталог (считая с левой стороны списка, выведенного с помощью dirs), начиная с 0.

-n

Перемещает n-й каталог (считая с правой стороны выведенного списка от dirs), начиная с 0.

dirs

dirs [+n | -n]  [-l]
Выводит список текущих запомненных каталогов. Каталоги заносятся в список с помощью команды pushd. Возвращаться обратно по списку можно с помощью команды popd.

+n

Выводит n-й каталог (считая с левой стороны списка,выведенного с помощью dirs, когда вызов без опций), начиная с 0.

-n

Выводит n-й каталог (считая с правой стороны списка, выведенного с помощью dirs, когда вызов без опций), начиная с 0.

-l

Выдает полный листинг; формат вывода списка по умолчанию использует тильду для обозначения домашнего каталога.

history

history [n] [ [-w -r -a -n] [имя файла]]
Выводит список истории с номерами строк. Строковые приставки с a * модифицируются. Аргумент n сообщает списку только последние n строк. Опция -w - запись текущей истории в файл истории; -r - чтение текущего файла истории и превращение его содержимого в список истории. Аргумент -a присоединение новых строк истории (строки истории входят во время начала текущего сеанса Bash) к файлу истории. Наконец, аргумент -n - чтение строк истории, которые еще не считаны из файла истории, в текущий список истории. Это строки, присоединенные к файлу истории во время начала текущего сеанса Bash. Если дано имя файла, то он используется как файл истории, иначе если $HISTFILE имеет значение, то оно используется. В противном случае используется `"/.bash_history`.

logout

Выход из login-оболочки.

source

Синоним '.' (см. раздел 1.4. "Встроенные команды оболочки Борна").

2.4 Переменные С-shell

IGNOREEOF

Если эта переменная задана, она представляет ряд последовательных EOF Bash, которые будут читаться перед выходом. По умолчанию Bash осуществляет выход на чтение одного EOF.

cdable_vars

Если эта переменная задана, Bash рассматривает некаталоговые аргументы команды cd как имена переменных, чьи значения каталоги, в которые нужно перейти.


Вперед Назад Содержание