Лабораторная работа. 10 лаба ОС и оболочки. Разработка сценариев bash
Скачать 94.81 Kb.
|
Разработка сценариев bash Цель работы – практическое знакомство с методами создания и использования сценариев ОС Linux 1. Получить полный список ключей команды stat. Аргументы, обязательные для длинных ключей, обязательны и для коротких. -L, --dereference следовать по ссылкам -f, --file-system показать состояние файловой системы, а не файла -c --format=ФОРМАТ использовать указанный ФОРМАТ, а не принимаемый по умолчанию; переводить строку после каждого использования ФОРМАТА --printf=FORMAT как --format, но интерпретировать экранирующие последовательности и не переводить строку в конце. Если вам нужен перевод строки, вставьте в ФОРМАТ \n. -t, --terse выводить информацию в компактной форме --help показать эту справку и выйти --version показать информацию о версии и выйти Допустимые форматные последовательности для файлов (без --file-system): %a права доступа в восьмеричной форме %A права доступа в читаемой форме %b число выделенных блоков (см. %B) %B размер блока, сообщаемого %b, в байтах %C строка контекста безопасности SELinux %d номер устройства, десятичный %D номер устройства, шестнадцатеричный %f низкоуровневый режим, шестнадцатеричный %F тип файла %g ID группы-владельца %G имя группы-владельца %h количество жёстких ссылок %i количество Inode %m точка монтирования %n имя файла %N экранированное имя файла, символьная ссылки разыменовывается %o оптимальный размер блока ввода/вывода %s полный размер в байтах %t основной тип устройства, шестнадцатеричный формат %T второстепенный тип устройства, шестнадцатеричный формат %u ID пользователя-владельца %U имя пользователя-владельца %w время создания файла; - , если неизвестно %W время создания файла в секундах с начала Эпохи; 0, если неизвестно %x время последнего доступа %X время последнего доступа в секундах с начала Эпохи %y время последней модификации %Y время последней модификации в секундах с начала Эпохи %z время последнего изменения %Z время последнего изменения в секундах с начала Эпохи Допустимые форматные последовательности для файловых систем: %a количество свободных блоков, доступных для обычного пользователя %b общее количество блоков данных в файловой системе %c общее количество файловых нод в файловой системе %d количество свободных файловых нод в файловой системе %f количество свободных блоков в файловой системе %i идентификатор файловой системы, шестнадцатеричный %l максимальная длина имени файла %n имя файла %s размер блока (для быстрейшей передачи) %S фундаментальный размер блока (для подсчета блоков) %t тип файловой системы, шестнадцатеричный %T тип файловой системы в понятном для человека виде 2. Вычислить факториал целого числа, вводимого с клавиатуры. Предусмотреть проверку правильности ввода аргумента. (( )) - математическое сравнение. [ - используется для логического сравнения. fi - обозначаем окончание условия. Комментарий начинается со знака # и продолжается до конца строки. Принято знак # ставить в первой символьной позиции строки. Первая строка #! /bin/sh — это особая форма комментария; символы #! сообщают системе о том, что следующий за ними аргумент — программа, применяемая для выполнения данного файла. В данном случае программа /bin/sh — командная оболочка, применяемая по умолчанию. Команда exit гарантирует, что сценарий вернет осмысленный код завершения. листинг:
#!/bin/bash echo "Введите число от которого будете брать факториал" read counter factorial=1 if [ $counter -lt 0 ] then echo "Введите положительное число или ноль" else while [ $counter -gt 0 ] do factorial=$(( $factorial * $counter )) counter=$(( $counter - 1 )) done echo $factorial fi exit 0 3. Найти первые N чисел Фибоначчи, используя рекуррентное соотношение Ai+1=Ai+Ai-1 Значения первых двух чисел и необходимое количество чисел N ввести с клавиатуры. листинг: #!/bin/bash echo "Введите первое число:" read a echo "Введите второе число:" read b echo "Введите количество элементов последовательности:" read N echo "Первые" $N "чисел Фибоначчи:" i=1 while [ $i -le $N ] do let "d=(($b+$a))" a=$b b=$d let "i+=1" echo "$b" done exit 0 4. Написать и выполнить сценарии для решения индивидуальных задач, номер задачи определяется номером бригады: 4 вариант. В текущем каталоге найти имя файла, который был изменен позже всех. На экран вывести дату изменения и имя файла. Для получения доступа к отдельным полям информации о файле или файловой системе к приведенным выше командам добавляется ключ –с и параметр, определяющий поле. %n имя файла % y Время последней модификации -r в обратном порядке Line вывести одну строку листинг #!/bin/bash stat -c ‘%y %n’ * | sort -rh | line exit 0 |