Командная строка Linux. Полное руководство - [51]
-rwxr-xr-x 1 root root 11532 2011-05-04 17:43 aafire
-rwxr-xr-x 1 root root 7292 2011-05-04 17:43 aainfo
Сохранение результатов работы
И здесь vi предлагает нам несколько способов сохранения отредактированных файлов. Мы уже знакомы с ex-командой :w, но существуют и другие команды, которые могут оказаться полезными.
В командном режиме можно ввести ZZ, чтобы сохранить текущий файл и выйти из vi. Аналогично, ex-команда :wq сочетает в себе команды :w и :q, первая из которых сохраняет файл, а вторая закрывает редактор.
В команде :w можно также указать имя файла. В этом случае она будет действовать как команда Save As (Сохранить как). Например, если вы редактируете foo.txt и хотите сохранить альтернативную версию с именем foo1.txt, введите следующую команду:
:w foo1.txt
ПРИМЕЧАНИЕ
Эта команда сохранит файл с новым именем, но она не изменит имя текущего редактируемого файла. Если после этого продолжить редактирование, вы будете редактировать foo.txt, а не foo1.txt.
13. Настройка приглашения к вводу
В этой главе мы рассмотрим, казалось бы, такую незначительную деталь, как приглашение к вводу командной оболочки (prompt). Кроме того, мы познакомимся с некоторыми внутренними особенностями работы командной оболочки и самой программы эмулятора терминала.
Как и многое в Linux, приглашение к вводу командной оболочки можно настраивать в очень широких пределах, и хотя мы принимаем это приглашение как данность, оно в действительности оказывается очень полезным средством для тех, кто умеет управлять им.
Устройство строки приглашения к вводу
По умолчанию строка приглашения к вводу имеет следующий вид:
[me@linuxbox ~]$
Обратите внимание, что она содержит имя пользователя, имя хоста (сетевое имя компьютера) и имя текущего рабочего каталога. Но как она образовалась? Все, оказывается, очень просто. Форма приглашения к вводу определяется в переменной окружения PS1 (сокращенно от prompt string 1 — строка приглашения 1). Увидеть содержимое переменной PS1 можно с помощью команды echo:
[me@linuxbox ~]$ echo $PS1
[\u@\h \W]\$
ПРИМЕЧАНИЕ
Не волнуйтесь, если вы увидите нечто отличающееся от примера, приведенного выше. Все дистрибутивы Linux определяют приглашение к вводу по-своему, а некоторые содержат весьма экзотические определения.
Мы видим, что PS1 содержит несколько символов, например: квадратные скобки, знак @ и знак доллара, но все остальное — сплошная абракадабра. Наиболее догадливые из вас сразу поймут, что символы, экранированные слешем, — специальные символы, как те, что мы видели в табл. 7.2. В табл. 13.1 приводится неполный список символов, которые командная оболочка интерпретирует специальным образом в строке приглашения.
Таблица 13.1. Экранированные последовательности, используемые в строке приглашения
Последовательность | Отображаемое значение |
\a | Звонок. Заставляет компьютер издавать звуковой сигнал |
\d | Текущая дата в формате: день недели месяц число; например, «Mon May 26» (Пн Май 26) |
\h | Имя хоста локальной машины минус имя домена |
\H | Полное имя хоста |
\j | Число заданий, действующих в текущем сеансе |
\l | Имя текущего устройства терминала |
\n | Символ перевода строки |
\r | Возврат каретки |
\s | Имя программы командной оболочки |
\t | Текущее время в 24-часовом формате |
\T | Текущее время в 12-часовом формате |
\@ | Текущее время в 12-часовом формате AM/PM |
\A | Текущее время в 24-часовом формате, часы:минуты |
\г | Имя пользователя |
\v | Номер версии командной оболочки |
\V | Номер версии и выпуска командной оболочки |
\w | Имя текущего рабочего каталога |
\W | Последняя часть в имени текущего рабочего каталога |
\! | Номер текущей команды в истории |
\# | Число команд, введенных в текущем сеансе командной оболочки |
\$ | Выводит символ $, если пользователь не является суперпользователем, в противном случае выводит символ # |
\[ | Отмечает начало последовательности из одного или нескольких непечатаемых символов. Используется для внедрения непечатаемых символов, управляющих поведением эмулятора терминала, например перемещает курсор или изменяет цвет текста |
\] | Отмечает конец последовательности непечатаемых символов |
Альтернативные варианты оформления приглашения
Имея список специальных символов, можно попробовать изменить оформление приглашения. Для начала сохраните исходное определение, чтобы его можно было восстановить позднее. Для этого скопируйте значение переменной PS1 в другую переменную:
[me@linuxbox ~]$ ps1_old="$PS1"
Здесь создается новая переменная с именем ps1_old, и ей присваивается значение переменной PS1. Убедиться, что значение скопировано, можно с помощью команды echo:
[me@linuxbox ~]$ echo $ps1_old
[\u@\h \W]\$
Это позволит вам в любой момент восстановить исходное оформление приглашения, выполнив обратную процедуру:
[me@linuxbox ~]$ PS1="$ps1_old"
Теперь, когда все готово, давайте посмотрим, что получится, если определить пустую строку приглашения:
[me@linuxbox ~]$ PS1=
Если определить приглашение как пустую строку, мы ничего не увидим. Строка приглашения просто исчезнет! В действительности она все еще существует, но поскольку она пустая, на экране ничего не отображается, — собственно, как мы и просили. Так как пустая строка приглашения дезориентирует, давайте определим минимальное оформление: