Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

$ ^ba^c

Помните, что замене подлежит первое вхождение подстроки «что_заменить».

Если вы хотите не изменить, а дополнить последнюю команду (например, пропустить ее вывод через фильтр more), введите

$ !! | more

3.4.3. Переменные

Описание и использование переменных

Как любой язык программирования, командный язык bash поддерживает переменные. Тип их — строковый. Оператор присваивания выглядит так:

$ <имя_переменной>=<значение>

Имя должно начинаться с буквы и может состоять из латинских букв, цифр, знака подчеркивания. Если значение переменной содержит специальные символы, их нужно экранировать кавычками или обратным слэшем (см. п. 2.1.1).

Операция подстановки значения переменной обозначается символом $ (не путайте с приглашением bash). Вывести значение переменной можно командой echo:

$ cwd=/home/den/MyDownloads/packages

$ echo cwd # выводит имя переменной

cwd

$ echo $cwd # выводит значение переменной

/home/den/MyDownloads/packages

Установленные таким образом переменные доступны только встроенным командам bash. Чтобы они стали доступны дочерним процессам (программам и командным сценариям, запускаемым из-под bash), их нужно поместить в окружение bash. Делается это командой export:

$ export HELLO="Hello from environment!" # пробел нужно экранировать

Чтобы почувствовать разницу, создайте простейший командный сценарий, выводящий значения двух переменных. Для записи сценария можно создать пустой файл и открыть его в каком-нибудь ASCII-редакторе, а можно вспомнить п.2.1.4 и воспользоваться командой

cat
:

$ cat > myscript

echo Env variable: $HELLO

echo Local variable: $hello # помните о разнице в регистре?

# Это другая переменная.

^D

$

Комбинация клавиш Ctrl+D завершает ввод и закрывает файл, и вы снова видите приглашение оболочки.

Получившийся файл сценария нужно сделать исполняемым (п.2.1.4):

$ chmod а+x myscript

Теперь осталось определить переменную hello и запустить сценарий:

$ hello="Hello from local"

$ echo $hello

Hello from local

$ ./myscript

Env variable: Hello from environment!

Local variable:

$

Переменные окружения

Когда оболочка начинает работу, она устанавливает для себя несколько переменных окружения. Имена их стандартны. Программы и сценарии могут запросить их значения вместо того, чтобы пытаться выяснить нужную им информацию самостоятельно.

Несколько таких переменных перечислены в таблице 3.2.

Переменные окружения bash Таблица 3.2

Имя Назначение
BASH_VERSION Версия оболочки
USER Имя. под которым вы зарегистрировались
UID, EUID Реальный и эффективный userID
HOME Путь к вашему домашнему каталогу
HOSTNAME Имя вашего компьютера
HOSTTYPE Тип процессора (i386 или другой)
OSTYPE Операционная система (linux-gnu)
HISTFILE, HISTSIZE Расположение и размер файла истории команд
LANG Язык текущего сеанса
LINES, COLUMNS Число строк и столбцов на экране текстовой консоли
PS1, PS2, PS3, PS4 Переменные, определяющие вид приглашения оболочки
PATH Порядок просмотра каталогов в поисках исполняемого файла с заданным вами именем, когда полный путь к нему не указан

Чтобы просмотреть значения всех переменных текущего сеанса, как определенных вами, так и переменных окружения, введите команду set.

Обратите внимание на переменную PATH: среди каталогов, в которых bash ищет исполняемый файл, нет текущего. Поэтому в предыдущем примере, если бы вы попытались исполнить сценарий командой myscript, оболочка ответила бы «Command not found». Нужно было указать путь к исполняемому файлу, и мы указали его относительным способом, считая от текущего каталога:

./myscript
.

Переменная 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:

Поделиться:
Популярные книги

Неудержимый. Книга XXIX

Боярский Андрей
29. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неудержимый. Книга XXIX

Дважды одаренный. Том V

Тарс Элиан
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
5.00
рейтинг книги
Дважды одаренный. Том V

Двойник Короля 4

Скабер Артемий
4. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 4

Вперед в прошлое 9

Ратманов Денис
9. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 9

Чужак

Листратов Валерий
1. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Чужак

Страх

Рыбаков Анатолий Наумович
2. Дети Арбата
Проза:
историческая проза
9.49
рейтинг книги
Страх

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Инженер против

Красногоров Яр
1. Сила Сопротивления
Фантастика:
боевая фантастика
постапокалипсис
рпг
фэнтези
5.00
рейтинг книги
Инженер против

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Имперец. Том 4

Романов Михаил Яковлевич
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 4

Горизонт Вечности

Вайс Александр
11. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Горизонт Вечности

ЖЛ 9

Шелег Дмитрий Витальевич
9. Живой лёд
Фантастика:
фэнтези
боевая фантастика
5.00
рейтинг книги
ЖЛ 9