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

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

Жанры

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:

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

Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Коллектив авторов
Warhammer Fantasy Battles
Фантастика:
фэнтези
5.00
рейтинг книги
Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Школьный Надзор

Лукьяненко Сергей Васильевич
Дозоры
Фантастика:
фэнтези
7.59
рейтинг книги
Школьный Надзор

Сумерки божков

Амфитеатров Александр Валентинович
1. Романы
Проза:
русская классическая проза
5.00
рейтинг книги
Сумерки божков

"Фантастика 2024-115". Компиляция. Книги 1-20

Виланов Александр Сергеевич
Фантастика 2024. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
городское фэнтези
попаданцы
сказочная фантастика
5.00
рейтинг книги
Фантастика 2024-115. Компиляция. Книги 1-20

Сталин

Радзинский Эдвард Станиславович
3. Загадки жизни и смерти
Проза:
историческая проза
7.36
рейтинг книги
Сталин

Искатель Смерти

Грин Саймон
1. Охотник за смертью
Фантастика:
героическая фантастика
6.20
рейтинг книги
Искатель Смерти

Братья Карамазовы

Достоевский Федор Михайлович
Проза:
классическая проза
русская классическая проза
9.24
рейтинг книги
Братья Карамазовы

Над бездной

Делински Барбара
Любовные романы:
современные любовные романы
7.29
рейтинг книги
Над бездной

Жена по ошибке

Ардова Алиса
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Жена по ошибке

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Ожоги сердца (сборник)

Падерин Иван Григорьевич
Проза:
военная проза
советская классическая проза
5.00
рейтинг книги
Ожоги сердца (сборник)

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Весь Фрэнк Герберт в одном томе. Компиляция

Герберт Фрэнк Патрик
Абсолют
Фантастика:
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Весь Фрэнк Герберт в одном томе. Компиляция