Решение 1 — testscript.sh
# testscript.sh
#!/bin/bash
#
ARHPATH=/tmp/Arh
EXTPATH=/opt/newfolder
DATE=`date '+%d-%m-%y'`
echo $DATE
for i in {1..5}
do
mkdir -p Dir$i
for j in {1..5}
do
date +'%H-%M-%S' > Dir$i/File-$j.txt
sleep 5
done
ls Dir$i
done
tar -czvf $ARHPATH/Arh-$DATE.tar.gz Dir* >> ArhList.txt
sleep 5
mkdir -p $EXTPATH
tar -xzf $ARHPATH/Arh-$DATE.tar.gz -C $EXTPATH
Разбор
ARHPATHиEXTPATH— переменные путей, легко изменитьDATE=`date '+%d-%m-%y'`— дата в формате 01-06-25- Вложенный цикл: внешний по Dir (1..5), внутренний по File (1..5)
date +'%H-%M-%S' > Dir$i/File-$j.txt— записывает текущее время в файлtar -czvf ... Dir*— упаковывает все Dir1..Dir5 (glob)>> ArhList.txt— вывод tar -v идёт в файл (накопление)tar -xzf ... -C $EXTPATH— распаковка с сохранением структуры
Решение 2 — pinger.sh
# pinger.sh
#!/bin/bash
read -p "Введите адрес для пинга: " address
read -p "Введите количество запросов для проверки: " count
ping_result=$(ping -c "$count" "$address")
avg_ping=$(echo "$ping_result" | awk -F'/' '/^rtt/ { print $5 }')
echo "Среднее время пинга до $address составляет: $avg_ping мс"
Разбор
read -p "..." address— запросить адрес у пользователяping_result=$(ping -c "$count" "$address")— захватить весь вывод в переменнуюawk -F'/'— разделитель//^rtt/— найти строку начинающуюся сrtt{ print $5 }— вывести 5-е поле (avg после min/avg/max/mdev)
Решение 3 — md5check.sh
# md5check.sh
#!/bin/bash
read -p "Enter path for control: " pathcheck
read -p "Enter path for result file: " pathresult
mkdir -p $pathresult
for var in $pathcheck/*
do
echo "file name - " $var
cd $pathresult
md5sum $pathcheck/$var >> $pathcheck-md5sum.txt
done
Разбор
- Цикл по всем файлам в директории:
for var in $pathcheck/* md5sum $pathcheck/$var— вычислить хэш конкретного файла>> $pathcheck-md5sum.txt— добавить результат к файлу с хэшами
Решение 4 — scriptmaker.sh
# scriptmaker.sh
#!/bin/bash
read -p "Enter path for script: " SCRIPTPATH
read -p "Enter name for your script: " NAME
mkdir -p $SCRIPTPATH
ls $SCRIPTPATH/$NAME 2>/dev/null
if [ $? -eq 0 ]
then
echo "BAD NAME " $NAME "file exists"
else
echo "Script will be created using path " $SCRIPTPATH/$NAME
echo -e "#!/bin/bash\n#\n#Write the code here\n#\n" > $SCRIPTPATH/$NAME
chmod +x $SCRIPTPATH/$NAME
echo "DONE"
fi
Разбор
ls $SCRIPTPATH/$NAME 2>/dev/null— тихая проверка существования$? -eq 0— ls вернул 0 (файл найден) → файл существуетecho -e "#!/bin/bash\n..."—-eинтерпретирует \n как перевод строкиchmod +x— назначить права исполнения новому скрипту
Решение 5 — rename_ext.sh
# rename_ext.sh
#!/bin/bash
read -p "Введите директорию (Enter = текущая): " directory
if [ -z "$directory" ]; then
directory="."
fi
if [ ! -d "$directory" ]; then
echo "Директория '$directory' не существует."
exit 1
fi
read -p "Введите текущее расширение файлов: " current_extension
read -p "Введите новое расширение файлов: " new_extension
cd "$directory" || exit
for file in *.$current_extension; do
if [ -e "$file" ]; then
filename=$(basename "$file" ".$current_extension")
mv "$file" "$filename.$new_extension"
echo "Изменено: $file -> $filename.$new_extension"
fi
done
echo "Готово."
Разбор
[ -z "$directory" ]— строка пустая → использовать.[ ! -d "$directory" ]— директория не существует → выход с ошибкойfor file in *.$current_extension— перебрать все файлы с нужным расширениемbasename "$file" ".$current_extension"— имя файла без расширенияmv "$file" "$filename.$new_extension"— переименовать