📝 Задания для закрепления

К оглавлению урока

⚡ 4 задания занятия

  1. Написать скрипт-информатор: pwd/ps/date/grep/cat/wc/tail/awk
  2. Разобрать скрипт создания файлов: for/while + sleep + mkdir + cp
  3. Скрипт проверки: if [ -d ] / else — директория или файл
  4. Скрипт с аргументами: $1/$# + exit 1 + $RANDOM

Экспресс-опрос

  1. Какая первая строка в скрипте и для чего она предназначена?
  2. Что будет, если команда написана с ошибкой? Будет ли выполняться скрипт далее или остановится на неправильной команде?

Задание 1

Написать скрипт script_ВАШЕИМЯ.sh, который:

  1. Выводит приветствие
  2. Показывает текущий каталог
  3. Выводит список всех процессов
  4. Показывает текущую дату и время
  5. Проверяет наличие файлов, содержащих ключевое слово "error" в каталоге /var/log/
  6. Выводит содержимое файла /etc/os-release
  7. Подсчитывает количество строк в файле с информацией о системе
  8. Выводит последние 5 строк файла /etc/os-release
  9. Выводит информацию о пользователях из /etc/passwd с использованием awk в виде: "Имя пользователя: ..., Домашний каталог: ..."
  10. Выводит сообщение о завершении работы скрипта

Дополнительно: дать права на исполнение скрипту и скопировать его в /tmp/.

Задание 2

Разобрать скрипт создания директорий и копирования файлов в них:

#!/bin/bash
#
DATE=`date '+%d-%m-%y'`
#echo $DATE
for i in {1..5}
do
    date +'%H-%M-%S' > File-$i.txt
    sleep 5
done
mkdir -p $DATE
cp File*.txt $DATE
#cd $DATE
for FILE in $DATE/*
do
    cat $FILE
done

Объяснить: что делает каждая строка? Почему в файлах разное время?

Дополнительно: переписать скрипт с использованием while вместо for.

Задание 3

Создать скрипт, который напишет для каждого файла в текущей директории, является ли он директорией или файлом.

Подсказка: использовать for FILE in * и конструкцию if [ -d "$FILE" ].

Задание 4

Написать скрипт, который будет генерировать файлы со случайными именами и расширениями, а их количество — параметром, который скрипт принимает от пользователя.

Требования:

  • Если аргумент не передан — вывести сообщение об ошибке и завершить с кодом exit 1
  • Использовать переменную $1 для получения количества файлов
  • Имена файлов включают дату (date '+%Y-%m-%d') и $RANDOM
  • Содержимое файлов — случайный текст из /dev/urandom