Основы ремесла 2
.pdf•Задание:
•Вывести в файл lslist список файлов текущего каталога
•Сравнить вывод команд cat nfile и cat 2>/dev/null nfile где nfile – имя заведомо несуществующего файла
Последовательное выполнение команд
•Последовательное выполнение команд вне зависимости от исхода работы предыдущей: с помощью символа ‘;’. Пример:
./configure ; make ; make install
•Последовательное выполнение команд при условии успешного завершения предыдущих: с помощью символа ‘&&’. Примеры:
./configure && make && make install mkdir newdir && cp lsfile newdir
•Выполнение команды, если предыдущая завершилась ошибкой: с помощью символа ‘||’. Пример:
cat nfile 2>/dev/null || echo Error!
Конвейеры
•Конвейер – это последовательность команд, разделенных символом ‘|’. При выполнении оболочка переназначает вывод каждой команды (кроме последней) на ввод следующей.
•Команда tee [-a] file перенаправляет вывод предыдущей команды на ввод следующей, сохраняя его в file
•Пример:
ls | wc -w
•Задание:
•Подсчитать количество файлов в текущем каталоге, имя которых содержит в начале либо строку file, либо строку new, и не заканчивается цифрой, записав имена этих файлов в файл filelist
•Вывести на экран модель процессора (model name) (с помощью команды grep и файла /proc/cpuinfo)
•Вывести на экран название VGA контроллера (с помощью команды grep и lspci)
Переменные оболочки
• Синтаксис:
name=value – присваивание значения value переменной name $name – получение значения переменной name
set – выводит список всех переменных в алфавитном порядке
•Задание:
•Создать переменные со своим именем фамилией и группой и вывести их в предложении:
•Name=MyName
•Surname=MySername
•Group=MyGroup
•echo “My name is $Name $Surname. My group is $Group”
Переменные окружения
•Переменная окружения (environment variable) – переменная, использующаяся для хранения текстовых строк пользователя и информации о настройках ОС.
•env – выводит все переменные окружения
•export MyEnv=string – устанавливает переменную окружения
MyEnv со значением string
•Задание:
•Установить свою переменную окружения, например MyName
•Посмотреть список всех переменных
Bash-скрипты
•Скрипт — простой список команд, записанный в файл.
•Задание:
•Создать файл и открыть в текстовом редакторе (н-р nano helloscrypt)
•Записать в файл строку:
echo “Hello, world!”
•Сохранить и выйти из текстового редактора
•Выставить права доступа на выполнение: chmod +x helloscrypt
•Запустить скрипт на выполнение одним из вариантов:
./helloscrypt sh helloscrypt
Подстановка результатов выполнения команд
• Синтаксис: name=$(command [args]) name=`command [args]`
где command [args] – команда с аргументами
•Задания:
•Создать скрипт со строкой echo “$(cat file)”, выполнить
•Аналогично с
dir=`pwd` echo “$dir”
Передача аргументов
•Параметры:
•$0 – имя файла, содержащего текст процедуры
•$1 $2 … $9 ${10} ${11} … - позиционные параметры
•Специальные переменные:
•$# - количество фактических аргументов (десятичное)
•$* - совокупность всех фактических аргументов (начиная с $1), разделенных пробелами
•$$ - идентификатор процесса
•$? - код завершения последней выполненной команды
Пример использования
• Создать скрипт threearg со следующими строчками:
echo Command name: $0 echo Arg1: $1
echo Arg2: $2 echo Arg3: $3
• Выполнить с какими-нибудь аргументами, например
./threearg qwerty 123 -flag