Запуск скриптов
bash
Запустить скрипт через интерпретатор Bash напрямую, без необходимости устанавливать права исполнения.
bash script.sh
bash -x script.sh # отладочный режим: показывает каждую выполняемую строку
sh
POSIX-совместимый интерпретатор оболочки. Запускает скрипт в POSIX-режиме (менее функциональный, чем bash).
sh script.sh
chmod +x
Добавить права исполнения для скрипта. После этого можно запустить через ./script.sh.
chmod +x script.sh
chmod +x permission_checker.sh
Bash-конструкции (не команды — синтаксис языка)
Это не отдельные программы, а встроенные конструкции языка Bash:
if / elif / else / fi
Условная конструкция. Пробелы внутри [ ] обязательны.
if [ -d "$FILE" ]; then
echo "$FILE is a directory"
elif [ -f "$FILE" ]; then
echo "$FILE is a regular file"
else
echo "$FILE does not exist"
fi
for / done
Цикл перебора элементов или диапазона.
# Диапазон
for i in {1..5}; do
echo "Iteration $i"
done
# C-стиль
for ((i=1; i<=5; i++)); do
echo $i
done
# Перебор файлов
for FILE in /opt/GROUP/*; do
echo "$FILE"
done
while / done
Цикл с условием — выполняется пока условие истинно.
COUNT=1
while [ $COUNT -le 5 ]; do
echo "Count: $COUNT"
((COUNT++))
done
$1 / $# / $0 / $RANDOM
Специальные переменные скрипта.
$1 # первый аргумент командной строки
$2 # второй аргумент
$# # количество переданных аргументов
$0 # имя самого скрипта
$RANDOM # случайное целое число 0-32767
exit
Завершить скрипт с указанным кодом выхода.
exit 0 # успешное завершение (по умолчанию)
exit 1 # завершение с ошибкой
# Типичная проверка аргументов
if [ $# -eq 0 ]; then
echo "Usage: $0 <num_files>"
exit 1
fi
Ранее изученные команды (используются в скриптах урока)
echo— вывод текста и значений переменныхpwd— текущая директорияps— список процессов;ps -ef— все процессыdate— текущая дата и время;date '+%d-%m-%y'— форматированная датаgrep— поиск по шаблону;grep -rn "error" /var/log/cat— вывод содержимого файлаwc— подсчёт строк/слов/символов;wc -l— строкиtail— последние строки файла;tail -n 5— последние 5awk— обработка текста по полямmkdir— создать директорию;mkdir -p— создать с промежуточнымиcp— скопировать файл или директориюsleep— пауза на N секунд;sleep 5— пауза 5 секундls— список файлов;ls -l— подробный списокchmod— права доступа;chmod +x— добавить исполнение