esac
PS1='${TITLEBAR}
$GREENu@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 то же самое значение проще:
$ cwd=`pwd` # напоминаю, что команда pwd возвращает
# путь к текущему каталогу
Можно подставлять значения не только определенных вами переменных, но и переменных окружения. Так, чтобы поэкранно вывести список всех процессов, запущенных от вашего имени, введите:
$ ps -ef | grep $USER | less
3.4.5. Шаблоны имен файлов
Этот механизм позволяет не перечислять похоже выглядящие имена файлов и каталогов, а указать на целую группу имен, задав краткий образец. Перед отправкой команды на выполнение оболочка раскрывает шаблон, то есть заменяет образец всеми именами, подходящими под этот образец, и выполняет команду для каждого файла или каталога из этой группы. Шаблоны указываются с помощью специальных символов, перечисленных в таблице 3.3. Символы шаблона можно комбинировать в одной команде.
Символы шаблонов Таблица 3.3
Символ | Значение | Пример |
---|---|---|
* | Произвольная строка символов, в том числе пустая | ~/*.png — все файлы в домашнем каталоге с расширением png; Glava* — файлы Glava, Glava03 и Glava.old |
? | Любой одиночный символ | Glava?? — файлы Glava03 и GlavaXZ, но не Glava и не Glava.old |
[m,M,x] | Любой символ ив перечисленных в скобках | Glava0[3,8] — файлы Glava03 и Glava08, Glava?[3,8] — файлы Glava03, Glava08, Glava13, Glava18, Glava23 |
[a-nA-N] | Любой символ ив указанных интервалов | Glava0[2-4,9] — Glava02, Glava03, Glava04, Glava09 |
[^a-n,x,y] | Любой символ, на указанный в скобках | Glava[^0]* — все главы, начиная с 11 |
Символы шаблона можно использовать и как обычные символы в именах файлов. Тогда их нужно экранировать, чтобы оболочка не приступила к их раскрытию:
$ touch * # создаст файл с именем '*'. Только не
# удаляйте его потом командой rm * !
$ rm Glava0[3,8] # удалит файл с именем Glava0[3,8],
# а не Glava03 и Glava08.
3.4.6. Потоки ввода-вывода
Как я уже сказал, каждому процессу сопоставлена таблица открытых им файлов. Три первых позиции в этой таблице заняты всегда: каждый процесс открывает потоки (помните, что в UNIX файл — это и есть поток данных?) для ввода и вывода данных, а также вывода сообщений об ошибках и другой