# mkdir /install
# mount /dev/hda1 /install
# chroot /install /bin/bash
Теперь корнем стал каталог /install
, к которому примонтирован новый винчестер, а в качестве командной оболочки используется /bin/bash
. Все, что нам осталось сделать — это перезаписать загрузчик. Если у вас LILO, введите команду:
# lilо
А если GRUB:
# grub-install /dev/hda
Теперь перезагрузите компьютер (reboot) — ваша система успешно восстановлена после клонирования.
Глава 8
Язык командного интерпретатора
Для автоматизации часто выполняемых работ по обслуживанию системы вам понадобится объединять команды в сценарии. С простейшими сценариями, обеспечивающими последовательное выполнение перечисленных команд, вы уже познакомились в гл. 3. Уточню только, как система обрабатывает сценарии. Она ищет в первой строке файла сценария выражение
#!/абсолютный/путь/к/программе/интерпретатору/сценария
и передает сценарий ей на обработку. Как правило, эта программа — либо одна из установленных в системе оболочек (например, #!/bin/tcsh
), либо один из интерпретирующих языков ( #!/usr/bin/perl
), либо ваш собственный интерпретатор: #!/usr/bin/my_program
. Если сценарий предназначен для обработки оболочкой sh, то ее имя указывать необязательно. Между символами # и ! не должно быть пробелов.
Чтобы непосредственно запустить файл сценария на выполнение, вы должны иметь полномочия на исполнение этого файла. Если он доступен вам только для чтения, выполнить его можно командой
$ /программа/обработчик -f <���имя_файла>
Эта глава посвящена языку программирования, встроенному в оболочку bash.
Базовыми операциями этого языка служат все установленные в системе программы, утилиты и сценарии. Оболочка находит их, запускает, обеспечивает передачу им — аргументов, а результатов их работы — другим программам и пользователю, выполняет подстановку переменных и раскрытие шаблонов. Кроме того, оболочка содержит операторы цикла и условные операторы, в результате чего получается мощный язык программирования.
Вместо переменных, как и обычных языках программирования, в bashиспользуется понятие параметра. Именем параметра может быть: слово, состоящее из латинских букв, цифр и знаков подчеркивания, начинающееся с буквы; число; один из специальных символов; *, #, ?, $, !, 0, _.
Тип всех параметров — строковый. Если параметру присвоено значение (хотя бы пустая строка), то говорят, что он задан или установлен. Чтобы сослаться на значение параметра, нужно поставить символ $ перед его именем:
$ echo $0
bash
Параметры делятся на:
♦ переменные оболочки— о них рассказано в п. 3.4.3;
♦ позиционные параметры— их имена представляют собой натуральное число, а значениями служат аргументы с соответствующими номерами, начиная с 1, переданные сценарию или самой оболочке при их запуске;
♦ специальные параметры— их именами служат перечисленные специальные символы, а назначение сведено в таблицу 8.1. Эти параметры — шаблоны, подстановку которых производит оболочка.
Специальные переменные Таблица 8.1
Название |
Подстановка |
$0 |
Имя выполняемого сценария (или, в интерактивном режиме, — самой оболочки) |
$# |
Количество позиционных параметров, переданных сценарию |
$_ |
Последний аргумент предыдущей из выполнявшихся команд |
$? |
Код завершения последней выполненной команды (напоминаю, что значение 0 говорит об успешном завершении, другое — об ошибочном) |
$$ |
Номер текущего процесса (PID) |
$! |
Номер (PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме) |
$* |
Все позиционные параметры, слитые в одну строку: «$*» эквивалентно «$1x$2x…,$n», где x — первый символ значения переменной IFS (internal field separator), по умолчанию — пробел |
$@ |
Все позиционные параметры, подлежащие дальнейшему разбору: «$@» эквивалентно «$1» «$2» ... «$n» |
Напоминаю, что специальные символы в значениях параметров нужно экранировать. Экранировать одиночный символ можно символом «\» (обратный слэш), несколько — апострофами или двойными кавычками. Разница в том, что внутри двойных кавычек выполняются подстановки значений: сравните вывод команд echo '$0'
и echo "$0"
.
Читать дальше
Конец ознакомительного отрывка
Купить книгу