Журнал LinuxFormat - перейти на главную

LXF124:DrBrown2

Материал из Linuxformat
Версия от 15:13, 1 ноября 2010; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Четыре способа настроить 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 Активировать историю команд
Персональные инструменты
купить
подписаться
Яндекс.Метрика