Стрелки «вверх» и «вниз» перемещают по командной истории, не отправляя команду на выполнение, а вводя ее в командную строку для редактирования.
Последнюю команду может для вас отредактировать сама оболочка. Для этого вместо команды введите:
$ ^что_заменить^чем_заменить
Например, вы запросили справку по команде оболочке bash: man bash
. Если сразу после этого вы хотите посмотреть справку по оболочке csh, можете вместо man csh
набрать
$ ^ba^c
Помните, что замене подлежит первое вхождение подстроки «что_заменить».
Если вы хотите не изменить, а дополнить последнюю команду (например, пропустить ее вывод через фильтр more), введите
$ !! | more
Описание и использование переменных
Как любой язык программирования, командный язык 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
.
Читать дальше
Конец ознакомительного отрывка
Купить книгу