Перейти к содержимому

Основы Bash

Объединяйте команды в конвейеры и напишите свой первый многоразовый Bash-скрипт.

  • linux.bash

Задания

  1. 1. Посчитайте ошибки10 очк.

    Сколько запросов в ~/data/access.log вернули код ответа 404?

  2. 2. Найдите сканер10 очк.

    С какого IP-адреса пришло больше всего ответов 404? (Кто-то перебирает файлы.)

  3. 3. Сохраните уникальных посетителей15 очк.

    Запишите отсортированный список уникальных IP-адресов клиентов (по одному на строку) в ~/report/ips.txt.

  4. 4. Автоматизируйте20 очк.

    Создайте исполняемый скрипт ~/bin/count404.sh, который выводит только количество ответов 404 в ~/data/access.log. Его запускают от имени student из любого каталога, поэтому используйте абсолютные пути (или $HOME).

Вводные и справка по командам

Настоящая сила оболочки — в композиции: маленькие инструменты, соединённые конвейерами (|).

grep "шаблон" файл | sort | uniq -c | sort -rn | head

Журнал вашего веб-сервера лежит в ~/data/access.log.

Справка по командам

КомандаЧто делает
grep '<текст>' <файл>строки, содержащие текст (кавычки сохраняют пробелы)
wc -lсчитает строки
cut -d' ' -f1первое поле, если поля разделены пробелом
sort / sort -uсортировка / сортировка без повторов
uniq -cсчитает подряд идущие одинаковые строки (сначала sort)
sort -rnсортировка чисел по убыванию
head -1первая строка
<команда> > <файл>записать вывод в файл
mkdir -p <каталог>создать каталог
nano <файл>простой редактор: Ctrl+O — сохранить, Enter, Ctrl+X — выйти
chmod +x <файл>сделать файл исполняемым

Скрипт начинается со строки #!/bin/bash. Внутри скрипта используйте полный путь или $HOME, потому что проверка запускает его из другого каталога.

Основы Bash: практика в терминале онлайн — CyberLab