
Shell script – это текстовый файл, содержащий последовательность команд, которые оболочка операционной системы выполняет автоматически. Он позволяет объединять стандартные утилиты Linux, macOS или Unix в единый процесс, ускоряя рутинные операции и сокращая количество ручных действий.
С помощью Shell script можно выполнять задачи, такие как массовое переименование файлов, резервное копирование данных, автоматизация установки программ или мониторинг системных ресурсов. Скрипты поддерживают переменные, условия, циклы и работу с аргументами командной строки, что делает их гибким инструментом для системных администраторов и разработчиков.
Для создания скрипта достаточно любого текстового редактора и базового понимания команд оболочки. Файл нужно сделать исполняемым через команду chmod +x имя_файла. После этого его можно запускать напрямую или через планировщик задач, например cron, для регулярного выполнения операций.
Практика показывает, что даже короткие скрипты на 10–20 строк способны заменить десятки ручных команд и снизить вероятность ошибок при повторяющихся операциях. При написании скриптов важно проверять корректность команд и использовать комментарии для удобства сопровождения.
Как создать первый Shell script и дать ему права на выполнение
Для создания Shell script откройте любой текстовый редактор и создайте файл с расширением .sh. Первый шаг – указать интерпретатор, добавив в начало файла строку #!/bin/bash. Она сообщает системе, какую оболочку использовать для выполнения команд.
#!/bin/bash echo "Текущее время: $(date)" echo "Пользователь: $USER"
После сохранения файла необходимо предоставить права на выполнение. Для этого выполните команду:
chmod +x имя_файла.sh
Запуск скрипта осуществляется через командную строку, указав путь к файлу:
./имя_файла.sh
Ниже приведена таблица базовых команд, полезных при создании первых скриптов:
| Команда | Описание |
|---|---|
| echo | |
| date | Отображение текущей даты и времени |
| chmod +x | Предоставление прав на выполнение файла |
| $USER | Переменная, содержащая имя текущего пользователя |
| ./имя_файла.sh | Запуск скрипта в текущей директории |
Использование этих команд позволяет быстро подготовить и протестировать первые скрипты, а также закрепить базовые навыки работы с Shell script.
Основные команды и синтаксис в Shell script для автоматизации задач

Shell script использует стандартные команды оболочки для выполнения операций с файлами, текстом и процессами. Основные элементы синтаксиса включают вызов команд, работу с переменными, использование условных конструкций и циклов.
Базовые команды для автоматизации:
- ls – отображение списка файлов и каталогов в текущей директории
- cp – копирование файлов и каталогов
- mv – перемещение или переименование файлов
- rm – удаление файлов или каталогов
- mkdir – создание новых каталогов
- touch – создание пустого файла или обновление времени модификации
- grep – поиск текста в файлах с поддержкой регулярных выражений
- read – получение пользовательского ввода
Пример использования переменных и команд:
#!/bin/bash DIR="/home/user/documents" FILE="example.txt" echo "Содержимое каталога $DIR:" ls $DIR echo "Создание файла $FILE" touch $DIR/$FILE
Для управления выполнением скрипта применяются условные конструкции и циклы:
- if…then…else – выполнение команд в зависимости от условий
- for – повторение блока команд для списка значений
- while – выполнение блока команд, пока условие истинно
- case – выбор действия в зависимости от значения переменной
Соблюдение синтаксиса, правильное использование переменных и операторов позволяет создавать скрипты, которые автоматически выполняют рутинные операции без вмешательства пользователя.
Использование переменных и параметров в Shell script
Переменные в Shell script хранят данные, которые могут использоваться многократно. Объявление переменной не требует ключевого слова, достаточно присвоить значение: имя_переменной=значение. Пробелы вокруг знака «=» недопустимы.
Для обращения к значению переменной используется знак $: echo $имя_переменной. Например:
#!/bin/bash USER_NAME="Alex" echo "Имя пользователя: $USER_NAME"
Shell script позволяет использовать параметры командной строки. Они доступны через специальные переменные:
- $1, $2, $3… – первый, второй, третий аргумент
- $# – количество переданных аргументов
- $@ – все аргументы в виде списка
- $? – код завершения последней команды
Пример скрипта с параметрами:
#!/bin/bash echo "Первый параметр: $1" echo "Второй параметр: $2" echo "Всего параметров: $#"
Использование переменных и параметров позволяет создавать гибкие скрипты, которые адаптируются к разным входным данным и упрощают повторное использование команд.
Условия и циклы: как управлять потоком выполнения скрипта

Для управления последовательностью выполнения команд в Shell script применяются условные конструкции и циклы. Конструкция if позволяет выполнять блок команд при выполнении определённого условия:
#!/bin/bash NUMBER=10 if [ $NUMBER -gt 5 ]; then echo "Число больше 5" else echo "Число меньше или равно 5" fi
Цикл for используется для перебора списка значений. Пример перебора файлов в каталоге:
#!/bin/bash for FILE in /home/user/*.txt; do echo "Обработка файла: $FILE" done
Цикл while выполняет команды, пока условие остаётся истинным. Пример счётчика:
#!/bin/bash COUNT=1 while [ $COUNT -le 5 ]; do echo "Итерация $COUNT" COUNT=$((COUNT + 1)) done
Конструкция case позволяет выбирать действия в зависимости от значения переменной, например для обработки аргументов командной строки:
#!/bin/bash ACTION=$1 case $ACTION in start) echo "Запуск процесса" ;; stop) echo "Остановка процесса" ;; *) echo "Неизвестное действие" ;; esac
Правильное использование условий и циклов упрощает автоматизацию, позволяет избегать повторения команд и адаптировать скрипт к различным сценариям выполнения.
Работа с файлами и каталогами через Shell script

Shell script позволяет управлять файлами и каталогами с помощью встроенных команд. Для создания новых каталогов используется mkdir, например: mkdir /home/user/new_folder. Команда touch создаёт пустые файлы или обновляет дату модификации существующих: touch file.txt.
Копирование и перемещение файлов выполняется через cp и mv:
- cp source.txt destination.txt – копирование файла
- mv old_name.txt new_name.txt – переименование или перемещение файла
Удаление файлов и каталогов осуществляется с помощью rm и rm -r для рекурсивного удаления каталогов:
- rm file.txt – удаление файла
- rm -r folder – удаление каталога с содержимым
Для перебора файлов в каталоге используют циклы. Пример обработки всех текстовых файлов:
#!/bin/bash for FILE in /home/user/*.txt; do echo "Файл: $FILE" done
Команды ls и find помогают выбирать файлы по критериям, например, искать все файлы старше 7 дней:
find /home/user -type f -mtime +7
Использование этих команд позволяет автоматизировать резервное копирование, очистку каталога и обработку больших объёмов файлов без ручного вмешательства.
Подключение внешних команд и утилит внутри скрипта
Shell script может использовать внешние команды и утилиты для выполнения сложных операций без написания всех функций вручную. Для этого достаточно вызвать команду как строку в скрипте. Пример использования утилиты grep для поиска текста:
#!/bin/bash grep "ошибка" /var/log/syslog
Часто применяются следующие команды:
- awk – обработка и форматирование текста
- sed – замена и редактирование текста в потоке
- tar – архивирование и распаковка файлов
- curl – работа с HTTP-запросами
- wget – загрузка файлов из сети
- df – проверка доступного места на дисках
- ps – отображение запущенных процессов
Для использования результата команды в скрипте применяется подстановка: VAR=$(команда). Пример подсчёта количества строк в файле:
#!/bin/bash LINES=$(wc -l < file.txt) echo "Количество строк: $LINES"
cat /var/log/syslog | grep "ERROR" | wc -l
Подключение внешних утилит расширяет возможности скрипта, позволяя автоматизировать анализ данных, управление файлами, работу с сетью и системный мониторинг без дополнительных программных библиотек.
Отладка и проверка ошибок в Shell script
Для выявления ошибок в Shell script используют встроенные опции оболочки. Ключ -x позволяет отображать каждую команду перед её выполнением: bash -x script.sh. Это помогает отследить последовательность выполнения и значения переменных.
Опция -e останавливает выполнение скрипта при любой ошибке, что полезно для критических операций: #!/bin/bash -e.
Для проверки синтаксиса без запуска команд используется bash -n: bash -n script.sh. Она выявляет пропущенные закрывающие скобки и другие синтаксические ошибки.
./script.sh > output.log 2> error.log
Для отслеживания значений переменных внутри скрипта применяют команды echo и printf. Пример:
#!/bin/bash COUNT=5 echo "Текущее значение COUNT: $COUNT"
Регулярное тестирование скриптов на небольших примерах, использование логирования и включение опций -x и -e позволяет быстро обнаруживать ошибки и предотвращать их влияние на критические операции.
Примеры практического применения Shell script в повседневных задачах

Shell script часто используют для автоматизации резервного копирования. Пример скрипта, создающего архив домашнего каталога и сохраняющего его с текущей датой:
#!/bin/bash BACKUP_DIR="/home/user/backup" DATE=$(date +%Y-%m-%d) tar -czf $BACKUP_DIR/home_backup_$DATE.tar.gz /home/user
Автоматическая очистка временных файлов помогает поддерживать свободное место на дисках. Пример удаления файлов старше 7 дней:
#!/bin/bash
find /tmp -type f -mtime +7 -exec rm {} \;
Мониторинг системных ресурсов можно организовать с помощью скрипта, который проверяет загрузку процессора и память:
#!/bin/bash
CPU=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}')
MEM=$(free -m | awk '/Mem:/ {print $3}')
echo "Загрузка CPU: $CPU%"
echo "Использование памяти: $MEM MB"
Shell script удобно использовать для пакетного переименования файлов. Например, добавление префикса к каждому файлу в каталоге:
#!/bin/bash PREFIX="old_" for FILE in *.txt; do mv "$FILE" "$PREFIX$FILE" done
Эти примеры показывают, как Shell script сокращает ручной труд при регулярных операциях с файлами, системным мониторингом и резервным копированием, повышая точность и скорость выполнения задач.
Вопрос-ответ:
Что такое Shell script и для чего он используется?
Shell script — это текстовый файл с последовательностью команд, которые выполняются оболочкой операционной системы. Он позволяет автоматизировать повторяющиеся операции, такие как обработка файлов, резервное копирование, запуск программ или системный мониторинг. Использование скриптов уменьшает количество ручной работы и снижает вероятность ошибок при регулярных действиях.
Как создать и запустить простой Shell script?
Для создания скрипта достаточно текстового редактора и строки #!/bin/bash в начале файла. После написания команд файл необходимо сделать исполняемым командой chmod +x имя_файла.sh. Скрипт запускается через терминал, например ./имя_файла.sh. Такой подход позволяет быстро тестировать команды и проверять их работу в автоматическом режиме.
Какие переменные и параметры можно использовать в Shell script?
В скриптах применяются пользовательские и системные переменные. Пользовательские объявляются просто: NAME="значение" и вызываются через $NAME. Параметры командной строки доступны как $1, $2, $3 для первого, второго и третьего аргумента, $# показывает количество аргументов, $@ возвращает все аргументы. Использование переменных и параметров делает скрипты гибкими и адаптируемыми к разным сценариям.
Какие конструкции позволяют управлять выполнением команд в скрипте?
Для контроля потока используются условия и циклы. Конструкция if…then…else проверяет условия, for перебирает список значений, while повторяет команды, пока условие истинно, а case позволяет выбирать действия в зависимости от значения переменной. Эти элементы помогают организовать выполнение операций в зависимости от условий и входных данных.
Какие примеры практического применения Shell script встречаются в повседневной работе?
Скрипты применяют для резервного копирования, автоматической очистки временных файлов, пакетного переименования файлов, мониторинга загрузки процессора и памяти, а также для обработки логов. Например, скрипт может создавать архив домашнего каталога с текущей датой или удалять файлы старше 7 дней. Использование таких скриптов экономит время и упрощает управление системой.
Как Shell script помогает автоматизировать повторяющиеся задачи и какие примеры его применения в реальной работе?
Shell script позволяет объединять команды оболочки в один файл, который выполняется автоматически. Это сокращает время на выполнение рутинных операций и снижает вероятность ошибок при повторении одних и тех же действий. Примеры использования включают создание резервных копий каталогов, пакетное переименование файлов, очистку временных директорий, обработку логов и мониторинг ресурсов системы. Например, скрипт может автоматически архивировать домашний каталог с текущей датой или удалять файлы старше определённого периода, освобождая место на диске без ручного вмешательства.
