LXF124:DrBrown2
|
|
|
Содержание |
Четыре способа настроить Bash
- Заставьте оболочку работать по-вашему, благодаря несложному руководству по настройке.
Способ 1: Выступаем под псевдонимом
Алиасы (псевдонимы) – простой способ расширить оболочку, определив новые команды через существующие. Так, если вы скучаете по MS DOS, используйте
alias dir ls alias erase rm
Можно определить алиас с тем же именем, что и команда, для которой он задается. Например,
alias ls=’ls ----color=auto’
определяет псевдоним ls через команду ls. Это означает, что каждый раз при вызове команды ls опция --color будет добавлена автоматически. Такой алиас может быть уже определен в вашем дистрибутиве. Другой пример. Если команда rm кажется вам неумолимой, создайте такой алиас:
alias rm=’rm -i’
Тогда вызов rm сам добавит себе флаг interactive при каждом использовании. Если вы перекрыли какую-то команду алиасом, но хотите выполнить ее «в чистом виде», просто добавьте перед ней символ \. Например,
\rm xyz
вызовет настоящую команду rm.
Способ 2: Функции
Для некоторых вещей алиасов недостаточно. Допустим, я хочу определить псевдоним far (сокращение от “find and remove” – найти и удалить), который ищет и удаляет все файлы по заданному шаблону. Хорошо бы команда вида
far ‘*.mp3’
удаляла все mp3-файлы в моем домашнем каталоге. Это действие раскрывается в такую команду:
find ~ -name ‘*.mp3’ -exec rm {} \;
Проблема в том, что аргумент (в данном случае *.mp3) должен появиться в середине раскрытой команды, и это нельзя сделать с помощью псевдонима – но можно с помощью функции. Функции в Bash определяются на С-подобном языке. Моя маленькая функция far может быть такой:
far() { set -o noglob; find ~ -name $1 -exec rm {} \; }
Здесь $1 ссылается на аргумент, передаваемый функции (*.mp3 в примере выше). Первая строка обеспечивает, что шаблоны типа *.mp3 будут переданы в find как есть, без раскрытия оболочкой (см. ниже).
Способ 3: Меняем строку приглашения
Каждый раз, когда Bash готов к приему очередной команды, он выводит подсказку. Строка подсказки определена в переменной оболочки PS1. Подсказку можно поменять на любое сообщение, присвоив его этой переменной, например:
PS1=’What next? \$’
Принято, что строка подсказки обычного пользователя завершается $, а пользователя root – #. Решетка напоминает об ответственности администратора. В строке подсказки можно указать несколько специальных символов, которые предоставят различную информацию о том, кто вы и где находитесь. Некоторые из них выделены в таблицу. Взгляните…
Последовательность | Раскрывается в |
---|---|
\h | Имя хоста |
\u | Ваше имя пользователя |
\t | Текущее время |
\w | Текущий каталог |
\$ | Выводит #, если вы root, и $, если нет |
Способ 4: Булевы опции
В Bash есть несколько булевых опций, с помощью которых можно управлять его поведением. Некоторые из них показаны в таблице.
Используйте команду типа
$ set -o noclobber
чтобы включить опцию, и
$ set +o noclobber
чтобы отключить ее (+ и - здесь противоречат моей интуиции!).
Приведенная ниже команда покажет все опции и их текущее состояние.
$set -o
Опция | Значение в жизни |
---|---|
vi | Использовать Vi-стиль редактирования истории команд |
emacs | Использовать Emacs-стиль редактирования истории команд |
noclobber | Отказываться перезаписывать файлы через перенаправление вывода |
ignoreeof | Не выходить по символу конца файла (^D) – вместо этого использовать обычный logout |
noglob | Запретить расширение спецсимволов |
xtrace | Показывать каждую команду после раскрытия аргументов (например, чтобы отследить выполнение скрипта) |
history | Активировать историю команд |