ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 14.07.2019
Просмотров: 655
Скачиваний: 23
Разработка сценариев 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 гарантирует, что сценарий вернет осмысленный код завершения.
листинг:
Выр1 -gt Выр2 |
True (истина), если Выр1 меньше Выр2 |
Выр1 -lt Выр2 |
True (истина), если Выр1 меньше, чем Выр2 |
#!/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