Особенности работы оболочки 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`
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
Сохраняет текущий каталог в списке и применяет cd к dir. Без аргументов изменяет верхний из двух каталогов.pushd [dir | +n | -n]
- +n
Перемещает n-й каталог (считая с левой стороны списка, выведенного с помощью dirs) на вершину списка с помощью обработки стека.
- -n
Перемещает n-й каталог (считая с правой стороны списка, выведенного с помощью dirs) на вершину списка с помощью обработки стека.
- dir
Устанавливает текущий рабочий каталог на вершину стека и применяет cds к dir. Для того, чтобы посмотреть список каталогов, используется команда dirs.
- popd
Выкладывает каталог из стека и применяет cds к новому верхнему каталогу. Если не даны аргументы, убирает верхний каталог из стека и применяет cds к новому верхнему каталогу. Элементы нумеруются начиная с 0 с первого каталога, занесенного в список с помощью dirs, таким образом команда popd эквивалентна popd +0.popd [+n | -n]
- +n
Перемещает n-й каталог (считая с левой стороны списка, выведенного с помощью dirs), начиная с 0.
- -n
Перемещает n-й каталог (считая с правой стороны выведенного списка от dirs), начиная с 0.
- dirs
Выводит список текущих запомненных каталогов. Каталоги заносятся в список с помощью команды pushd. Возвращаться обратно по списку можно с помощью команды popd.dirs [+n | -n] [-l]
- +n
Выводит n-й каталог (считая с левой стороны списка,выведенного с помощью dirs, когда вызов без опций), начиная с 0.
- -n
Выводит n-й каталог (считая с правой стороны списка, выведенного с помощью dirs, когда вызов без опций), начиная с 0.
- -l
Выдает полный листинг; формат вывода списка по умолчанию использует тильду для обозначения домашнего каталога.
- history
Выводит список истории с номерами строк. Строковые приставки с a * модифицируются. Аргумент n сообщает списку только последние n строк. Опция -w - запись текущей истории в файл истории; -r - чтение текущего файла истории и превращение его содержимого в список истории. Аргумент -a присоединение новых строк истории (строки истории входят во время начала текущего сеанса Bash) к файлу истории. Наконец, аргумент -n - чтение строк истории, которые еще не считаны из файла истории, в текущий список истории. Это строки, присоединенные к файлу истории во время начала текущего сеанса Bash. Если дано имя файла, то он используется как файл истории, иначе если $HISTFILE имеет значение, то оно используется. В противном случае используется `"/.bash_history`.history [n] [ [-w -r -a -n] [имя файла]]
- logout
Выход из login-оболочки.
- source
Синоним '.' (см. раздел 1.4. "Встроенные команды оболочки Борна").
2.4 Переменные С-shell
- IGNOREEOF
Если эта переменная задана, она представляет ряд последовательных EOF Bash, которые будут читаться перед выходом. По умолчанию Bash осуществляет выход на чтение одного EOF.
- cdable_vars
Если эта переменная задана, Bash рассматривает некаталоговые аргументы команды cd как имена переменных, чьи значения каталоги, в которые нужно перейти.
Вперед Назад Содержание