Переменная PS1 у меня выглядит так: [\u@\h \W]\$
. Это значит, что приглашение оболочки у меня формируется из регистрационного имени ( username ), имени машины ( hostname ), текущего каталога ( working dir ) и символа $. Я могу и изменить его:
[den@dhsi.labs ~]$ pssave=$PS1 # сохраняю старое значение
[den@dhsilabs PS1="\W>"
~> # новое приглашение состоит из имени текущего каталога и символа >
-> cd My* MyDownloads>
MyDownloads > PS1=$pssave # поиграли, и хватит
[den@dhsilabs MyDownloads]$
Удалить переменную можно командой unset <���имя>.
Быстрая смена каталога
Переменная CDPATH задает список каталогов, в которых будет происходить поиск нужного подкаталога при смене каталога (использовании команды cd). Проще всего пояснить, как работает CDPATH, на примере. Пусть в моем каталоге /home/denis/books/linux-server
есть подкаталоги chapter1 ... chapter20
. Если мне нужно перейти в подкаталог chapter2
, то я могу сэкономить на наборе имени его родительского каталога, внеся это имя в переменную CDPATH:
$ export CDPATH=:.:/home/denis/books/linux-server
Теперь по команде cd chapter2
я попаду в каталог /home/denis/books/linux-server/chapter2
из любого места файловой системы, если подкаталога chapter2
нет в текущем каталоге.
Настройка командной строки. Утилита tput
Наверное, многим хочется, чтобы их компьютер не был похож на компьютер коллеги за соседним столом. Кто-то меняет темы, кто-то — обои. Мы попробуем изменить командную строку текстовой консоли. Рассмотрим сценарий, выводящий текущий каталог в правом верхнем углу — обычно этот угол при выводе текста остается свободным. Для чего? А просто так — чтобы было не как у всех.
Для манипуляции с курсором и цветом букв и фона используется утилита tput. В п.2.1.4 вы узнали, как применить ее для восстановления «сбитой» консоли, а сейчас посмотрите на то, что она умеет еще. А потом прочитайте man-страницу.
Листинг 3.1. Демонстрация возможностей утилиты tput
#!/bin/bash
function prompt_command {
# сохраняем текущую позицию курсора
tput sc
# вычисляем длину, необходимую для вывода текущего каталога
# текущий каталог можно узнать с помощью команды pwd
let backwash=$(tput cols)-$(echo $(pwd) | wc -m)-2
# позиционируем курсор Y=0, X=длина
tput cup 0 ${backwash}
# установка цвета букв, начертание — жирное
tput setaf 4 ; tput bold
# выводим полный путь в квадратных скобках
echo -n " ["
# устанавливаем цвет
tput setaf 6
# отображаем путь
echo -n "$(pwd)"
# устанавливаем цвет для закрывающей скобки
tput setaf 4 ; tput bold
# отображаем ]
echo -n "]"
# возвращаем курсор в исходную позицию
tput rc
}
PROMРТ_СОММAND=prompt_соmmand
GREEN="\[$(tput setaf 2 ; tput bold)\]"
WHITE="\[$(tput setaf 7 ; tput bold)\]"
NO_COLOUR="\[$(tput sgr0)\]"
case $TERM in
xterm*|rxvt*)
TITLEBAR='\[\033]0;\u@\h \007\]'
;;
*)
TITLEBAR=""
;;
esac
PS1="${TITLEBAR}\
$GREEN\u@\h \
$WHITE\$$NO_COLOUR "
PS2='> '
PS4='+ '
Команды утилиты tput:
tput setaf [1-7]установка цвета символов с использованием ANSI ESC-последовательности;
tput setab [1-7]установка цвета фона;
tput revобратить цвета фона и переднего плана;
tput boldустановка жирного начертания;
tput dimотключение жирного начертания;
tput smulустановка подчеркнутого начертания;
tput rmulотключение подчеркнутого начертания.
3.4.4. Подстановка переменных и команд
Переменные можно использовать как имена, части имен или аргументы команд. Перед выполнением команды оболочка заменит имена переменных их значениями. Например, после того, как мы присвоили переменной cwd значение пути к каталогу, можно перейти в этот каталог по команде
$ cd $cwd
Вывести на экран файл README из этого каталога можно, введя команду
$ more ${cwd}/README
Брать имя переменной в скобки необязательно, но удобно, если нужно отделить имя переменной от предшествующих ему или следующих за ним символов.
Мощным инструментом оболочки bashявляется подстановка команд, то есть замена имени команды на результат ее выполнения. Так, считая /home/den/МуDownloads/packages
текущим каталогом, мы могли бы присвоить переменной cwd то же самое значение проще:
Читать дальше
Конец ознакомительного отрывка
Купить книгу