Загрузка данных


Отлично. Заменил все названия (файлов, переменных, сообщений) на животных.  
Скрипты сохранили тот же смысл, но выглядят совсем иначе.

---

## Лабораторная работа №9 — Полное содержание (версия "Животные")

### Задание 1. Скрипт cat.sh (был angelean.sh)

#!/bin/bash

fox=""
bear=""
wolf=""
rabbit=false
mouse=false
deer=false
owl=false

while getopts "i:o:r:csuvi:" opt; do
  case $opt in
    i) fox="$OPTARG" ;;
    o) bear="$OPTARG" ;;
    r) wolf="$OPTARG" ;;
    c) rabbit=true ;;
    s) mouse=true ;;
    u) deer=true ;;
    v) owl=true ;;
    *) echo "unknown animal"; exit 1 ;;
  esac
done

if [ -z "$fox" ] || [ -z "$wolf" ]; then
    echo "Error: need -i (file) and -r (search pattern)"
    exit 1
fi

cmd="grep"
[ "$owl" = true ] && cmd="$cmd -v"
[ "$mouse" = true ] && cmd="$cmd -o"
[ "$deer" = true ] && cmd="$cmd -u"

if [ "$rabbit" = true ]; then
    res=$(grep -c "$wolf" "$fox")
else
    res=$($cmd "$wolf" "$fox")
fi

if [ -n "$bear" ]; then
    echo "$res" > "$bear"
    echo "Result saved to $bear"
else
    echo "$res"
fi

Проверка:

./cat.sh -i zoo.txt -r tiger
./cat.sh -i zoo.txt -r tiger -c
./cat.sh -i zoo.txt -r tiger -o out.txt
cat out.txt
./cat.sh -i zoo.txt -r tiger -v
./cat.sh -i zoo.txt -r tiger -u

---

### Задание 2. Скрипты pig.sh (был a1a.sh) и cow.sh (был brazydemon.sh)

`pig.sh` — запрос числа и код возврата:

#!/bin/bash
read -p "Enter number: " num
if [ "$num" -eq 0 ]; then
    echo "Number is zero"
    exit 0
elif [ "$num" -gt 0 ]; then
    echo "Number is positive"
    exit 1
else
    echo "Number is negative"
    exit 2
fi

`cow.sh` — вызов pig.sh и анализ кода:

#!/bin/bash
./pig.sh
code=$?
case $code in
    0) echo "Result: 0 (zero)" ;;
    1) echo "Result: 1 (positive)" ;;
    2) echo "Result: 2 (negative)" ;;
    *) echo "Unknown code: $code" ;;
esac

Проверка:

./cow.sh
# ввести -5, 0, 5

---

### Задание 3. Скрипт whale.sh (был ilovebigblunt.sh)

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 {create|delete} N"
    exit 1
fi

mode=$1
num=$2

if ! [[ "$num" =~ ^[0-9]+$ ]]; then
    echo "Error: N must be a number"
    exit 1
fi

case $mode in
    create)
        for i in $(seq 1 $num); do
            touch "$i.txt"
        done
        echo "Created $num files"
        ;;
    delete)
        for i in $(seq 1 $num); do
            rm -f "$i.txt"
        done
        echo "Deleted $num files"
        ;;
    *)
        echo "Mode must be create or delete"
        ;;
esac

Проверка:

./whale.sh create 5
ls
./whale.sh delete 5
ls

---

### Задание 4. Скрипт eagle.sh (был destroylonely.sh)

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 <directory>"
    exit 1
fi

target="$1"
archive_name="backup_$(date +%Y%m%d).tar.gz"

if [ ! -d "$target" ]; then
    echo "Error: directory $target not found"
    exit 1
fi

find "$target" -type f -mtime -7 -print0 | tar -czf "$archive_name" --null -T -

echo "Archive created: $archive_name"

Подготовка и проверка:

mkdir forest
cd forest
echo "fresh" > fresh.txt
touch -t 202401010000 old.txt
cd ..
./eagle.sh forest
ls -l backup_*.tar.gz

---

## Таблица замен (оригинал → животные)

| Оригинал | Животное |
|----------|----------|
| angelean.sh | cat.sh |
| a1a.sh | pig.sh |
| brazydemon.sh | cow.sh |
| ilovebigblunt.sh | whale.sh |
| destroylonely.sh | eagle.sh |
| input_file | fox |
| output_file | bear |
| search_pattern | wolf |
| show_count | rabbit |
| show_only_matches | mouse |
| unique_only | deer |
| invert_match | owl |
| target | target (оставил) |
| archive_name | archive_name (оставил) |

---

Если хочешь, могу:
- заменить ещё и команды (grep → search, tar → pack)
- переписать проверки тоже на животных
- сделать всё одной строкой для копирования

Скажи.