Bash-скрипты. Урок 3


Всем привет!
Тут предыдущий урок
Поехали)

Задача: найти в директории файлы созданные позднее 100 дней и вывести список в файл. Дни, имя директории и имя списка передать как аргументы при запуске скрипта.
Решение:

#!/bin/bash
if (($# < 3))
then
echo "Usage: $0 {daysago} {directory} {outputfile}";
echo "Example: $0 100 ./ outputfile.txt";
exit
fi
daysago=$1
directory=$2
outputfile=$3
find $directory -iregex ".*" -type f -mtime +$daysago > $outputfile

Пояснение:
1. Встроенные переменные
Для передачи данных скриптам используем параметры командной строки. Вызвав скрипт с параметрами, мы передаём информацию, с которой он может работать.
list-old-files.sh — наш скрипт

Вот его вывод при запуске без параметров

Вот основные встроенные переменные:
$0 — имя скрипта
$1 $2… $n — параметры переданные скрипту, если надо параметров более 9, то используем конструкцию ${10}
$# — кол-во параметров переданных скрипту
$$ — PID скрипта

Глянув текст скрипта все понятно 😀

2. Команда find
Find — это важная и часто используемая команда для поиска файлов и каталогов на основе специальных условий.
Базовый синтаксис команды выглядит следующим образом: find [параметры] [путь…] [выражение]

find $directory -iregex ".*" -type f -mtime +$daysago
Разберем параметры:
-iregex ".*" — путь к файлу соответствует регулярному выражению без учета регистра (regex — с учетом регистра)
-type f — искать только файлы
-mtime +$daysago — поиск по времени модификации файла

3. Операторы ">" и ">>"
Чаще всего используется перенаправление вывода команды в файл. Также можно направить вывод не только в файл, но и на вход другой команды или на устройство (например, принтер).
">" — выводит в файл перезаписывая, создавая новый файл каждый раз
">>" — выводит в файл создавая новый или дописывая содержимое к существующему файлу
> $outputfile — объяснять нечего 😀

Стартуем скрипт с параметрами:
./list-old-files.sh 100 /var/spool/cups outputlist.txt
Содержимое outputlist.txt

  1. Зябл

    Самп! А давай вместе учебник издадим! Ты будешь Bash скриптам обучать, а я тоже чему-нибудь нехорошему учить буду.

  2. Samp Автор записи

    Что хуже консоли с башем может быть? 😀

Добавить комментарий