Глиф Учебники

Как создать скрипт bash

Справочник · Командная строка Linux · 2 минуты чтения

1. Создайте файл

Удобно держать свои скрипты в папке ~/bin:

Bash
mkdir -p ~/bin
nano ~/bin/sysinfo.sh

2. Напишите скрипт

Bash
#!/bin/bash
# Короткий отчёт о системе
echo "Дата: $(date '+%F %T')"
echo "Компьютер: $(hostname)"
echo "Место на системном диске:"
df -h /
echo "Память:"
free -h

Первая строка #!/bin/bash обязательна и должна стоять самой первой: она говорит системе, что файл выполняет bash. Строки с # дальше — комментарии. Сохраните файл в nano: Ctrl+O, Enter, выход — Ctrl+X.

3. Дайте право на выполнение и запустите

Bash
chmod +x ~/bin/sysinfo.sh
~/bin/sysinfo.sh

Из папки со скриптом его запускают как ./sysinfo.sh. Без пути оболочка ищет команды только в папках из PATH.

4. Запуск из любой папки

Если ~/bin есть в PATH, скрипт запускается просто по имени: sysinfo.sh. Проверьте:

Bash
echo $PATH

В Ubuntu, Debian и Mint стандартный ~/.profile добавляет ~/bin в PATH сам, если папка существует, — но только при входе в систему: после создания папки выйдите из системы и войдите снова. Если папки в списке нет, добавьте её вручную — справка Как добавить папку в PATH.

5. На расписание

Чтобы скрипт выполнялся сам, например каждую ночь в 3:00, добавьте строку в расписание cron:

Bash
crontab -e
Текст
0 3 * * * /home/ivan/bin/sysinfo.sh >> /home/ivan/sysinfo.log 2>&1

Пять полей — минута, час, день месяца, месяц, день недели; * — «любой». В cron пишите полные пути к скрипту, файлам и командам: у cron свой, очень короткий PATH, и ваши настройки из .bashrc там не действуют.

Советы

Скрипт выполняет команды без вопросов и без возможности отмены. Скрипт с rm сначала запустите на копии или замените rm на echo rm и посмотрите, что он собирается удалить.

Подробно о переменных, аргументах, условиях и циклах — в уроках Скрипты bash: первый скрипт, переменные и аргументы и Условия и циклы в скриптах bash.