Текст задания (из LMS)
Linux: Домашнее задание 9 (Python)
Работаем в JSLinux.
- Создайте файл
myfirstbashscript.shгде угодно. - Сделайте его исполняемым.
- Заведите новую переменную
USERи присвойте ей ваше имя в качестве значения. -
Добавьте в скрипт все необходимое, чтобы он:
- Написал дату
- Поприветствовал Вас по имени (
hello $USER!) - Написал, из какой директории он работает
- Добавил количество процессов с именем bioset одним числом (не учитывая процесс grep)
- Вывел права на файл
/etc/passwdв формате (-rw-r--r--) — и только эту часть (потребуется awk)
- Экспортируйте и пришлите результирующий файл, желательно в формате
txt.
Что вам понадобится:
echo, pwd, ps -ef, date,
grep (и флаг -v не забываем!), wc -l,
awk '{print $НОМЕР СТОЛБЦА}', export_file
Подготовка окружения
Работаем в JSLinux — браузерная Linux-песочница (не нужна установка).
- Откройте JSLinux в браузере
- Выберите дистрибутив (например, Alpine Linux)
- В открывшемся терминале вы можете сразу начать вводить команды
# Проверить, что мы в терминале
pwd
Пошаговое решение
Шаг 1: Создать файл скрипта
# Создать файл в текстовом редакторе vi
vi myfirstbashscript.sh
# Или через nano (проще для начинающих)
nano myfirstbashscript.sh
Шаг 2: Написать содержимое скрипта
Вставьте следующий код в файл (в vi: нажмите i для перехода в режим вставки):
Файл: myfirstbashscript.sh
# myfirstbashscript.sh
#!/bin/bash
USER=Andrew
date
echo "hello $USER!"
pwd
ps -ef | grep bioset | grep -v grep | wc -l
ls -la /etc/passwd | awk '{print $1}'
В vi сохранить и выйти: Esc → :wq → Enter
В nano: Ctrl+X → Y → Enter
Шаг 3: Сделать файл исполняемым
chmod +x myfirstbashscript.sh
# Проверить, что права установлены
ls -la myfirstbashscript.sh
В строке прав должен быть символ x: -rwxr-xr-x
Шаг 4: Запустить скрипт
./myfirstbashscript.sh
Ожидаемый вывод:
Fri Nov 22 12:34:56 UTC 2024
hello Andrew!
/root
0
-rw-r--r--
Шаг 5: Экспортировать файл
# Скопировать скрипт в текстовый файл для отправки
cp myfirstbashscript.sh myfirstbashscript.txt
# Экспортировать через JSLinux
export_file myfirstbashscript.txt
Браузер предложит скачать файл — его и нужно отправить преподавателю.
Разбор каждой строки скрипта
#!/bin/bash — шебанг
Первая строка скрипта. Указывает операционной системе, каким интерпретатором запускать файл.
/bin/bash — путь к интерпретатору Bash.
Без shebang скрипт может запуститься под другой оболочкой с другим синтаксисом.
USER=Andrew — переменная
Создаём переменную USER со значением "Andrew" (замените на своё имя).
Важно: нет пробелов вокруг знака =, иначе bash выдаст ошибку.
Это локальная переменная скрипта, не системная переменная окружения.
date — вывод текущей даты
Выводит текущую дату и время в формате по умолчанию, например: Fri Nov 22 12:34:56 UTC 2024
echo "hello $USER!" — приветствие
Выводит строку с подстановкой переменной. $USER заменяется значением переменной.
Кавычки нужны для корректной работы если в значении переменной есть пробелы.
pwd — текущая директория
Выводит полный путь к текущей директории, из которой запущен скрипт.
ps -ef | grep bioset | grep -v grep | wc -l — количество процессов
Конвейер из 4 команд:
ps -ef— список всех процессов в полном форматеgrep bioset— оставить только строки с "bioset"grep -v grep— убрать строки содержащие слово "grep" (сам процесс поиска)wc -l— посчитать количество оставшихся строк
В JSLinux обычно выводит 0 — процесс bioset там не запущен, но команда работает корректно.
ls -la /etc/passwd | awk '{print $1}' — права файла
Конвейер из 2 команд:
ls -la /etc/passwd— подробный список файла: права, владелец, размер, дата, имяawk '{print $1}'— вывести только первый столбец (права) из строки
Пример строки ls -la /etc/passwd: -rw-r--r-- 1 root root 2345 Nov 22 12:00 /etc/passwd
После awk '{print $1}' остаётся только: -rw-r--r--
Связь с теорией урока
- Шебанг и chmod +x → Теория и Занятие 12: Права доступа
- Переменные в bash → Занятие 10: Переменные
- Конвейеры (pipe |) → Занятие 4: Каналы и перенаправление
- grep, wc, awk → Занятие 10: Справочник команд
- ps (процессы) → Занятие 10: Процессы