♦ enable <имя_команды>
♦ eval [аргументы]
♦ let <переменная>=<арифметическое выражение>
♦ source <файл>
Другие встроенные команды служат инструкциями командного языка bash
.3.4.2. История команд
Оболочка предлагает вам много возможностей для облегчения ввода команд и редактирования командной строки. Помимо функции автозаполнения, с которой вы познакомились в п.1.1.4.7, bash
содержит механизм командной истории. Суть его в том, что вводимые вами команды (по умолчанию 1000) запоминаются и доступны для повторного вызова — без изменений или с ними.Команда history
Если вас интересуют только последние несколько команд:
$ history 23 # показать последние 23 команды
Если вас интересуют все команды, имеющие отношение к монтированию каталога public
$ history | grep mount | grep public
# еще один пример конвейера
Номера команд выводятся для того, чтобы вы могли снова ввести эту команду, набрав
$ ! <номер>
или
$ !! # запускает последнюю из введенных команд
или
$ !<первые_буквы> # запускает последнюю из команд,
# начинающихся с этих букв.
Стрелки «вверх» и «вниз» перемещают по командной истории, не отправляя команду на выполнение, а вводя ее в командную строку для редактирования.
Последнюю команду может для вас отредактировать сама оболочка. Для этого вместо команды введите:
$ ^что_заменить^чем_заменить
Например, вы запросили справку по команде оболочке bash
:man bash
. Если сразу после этого вы хотите посмотреть справку по оболочке csh, можете вместо man csh
набрать$ ^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