🔖 Справочник команд урока 18

К оглавлению урока

⚡ Ядро урока — запуск скриптов

# Сделать исполняемым и запустить
chmod +x script.sh
./script.sh

# Запустить через bash (без chmod)
bash script.sh

# Bash-конструкции
if [ -d "$FILE" ]; then echo "dir"; else echo "file"; fi
for i in {1..5}; do echo $i; done
while [ $COUNT -le 5 ]; do echo $COUNT; ((COUNT++)); done

# Аргументы скрипта
$1     # первый аргумент
$#     # количество аргументов
$RANDOM  # случайное число 0-32767
exit 1   # выход с ошибкой

Запуск скриптов

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 — последние 5
  • awk — обработка текста по полям
  • mkdir — создать директорию; mkdir -p — создать с промежуточными
  • cp — скопировать файл или директорию
  • sleep — пауза на N секунд; sleep 5 — пауза 5 секунд
  • ls — список файлов; ls -l — подробный список
  • chmod — права доступа; chmod +x — добавить исполнение

→ Полный справочник Linux-команд