ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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