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