Урок курса

Написание первых скриптов

Bash Linux + Git: от новичка до уверенного пользователя

Если отдельные команды – это хорошо, то Bash-скрипты – это вообще праздник автоматизации. Скрипт позволяет сохранить последовательность команд в файле, чтобы потом выполнить их все разом, словно один большой рецепт. Ты можешь писать свои "программы" на Bash, не будучи программистом в классическом смысле, используя те же команды, что ты уже выучил.

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

  1. Открой любимый редактор (nano или vi) и набери в первой строке скрипта: #!/bin/bash . Сочетание символов #! называется shebang, и оно говорит системе, каким интерпретатором исполнять этот файл. В данном случае мы указываем путь к Bash.

  2. На следующих строках запиши нужные команды так, как ты бы вводил их в терминале, по одной на строку. Например:

    #!/bin/bash
    
    echo "Привет! Это мой первый скрипт."
    
    date
    

    Здесь мы вывели приветствие и текущую дату. Ты можешь записать в скрипте что угодно: вызвать ls, запустить другие программы — всё, что делаешь обычно вручную.

  3. Сохрани файл, назови его, скажем, myscript.sh. Теперь нужно сделать его исполняемым: в терминале выполни chmod +x myscript.sh. Это как дать скрипту разрешение быть запущенным.

  4. Запусти скрипт одним из двух способов:

    • Явно через интерпретатор: bash myscript.sh (в этом случае даже не обязательно давать права на исполнение).

    • Или как самостоятельную программу: ./myscript.sh (для этого важны и права +x, и правильный shebang). Если вдруг получишь ошибку "Permission denied" или "No such file or directory", проверь права и наличие shebang в первой строке.

При выполнении скрипта команды внутри него будут выполняться последовательно, как если бы ты их вручную вводил. Уже чувствуешь прилив силы? Первый скрипт – как первая самостоятельная готовка: пусть это пока и "яичница" из пары команд, но начало положено!

Разбор команды chmod

Что такое chmod?

chmod (от английского change mode) — это команда, которая изменяет права доступа (режимы) для файлов и каталогов. С её помощью можно задавать, кто и каким образом может читать, записывать или выполнять файл. Это важная часть управления безопасностью и организацией доступа в Unix-подобных системах.

Основной синтаксис

chmod [опции] режим файл_или_каталог
  • режим — описание новых прав доступа, которое может задаваться в символьной или восьмеричной (цифровой) форме.
  • файл_или_каталог — имя файла или каталога, для которого изменяются права доступа.

Способы задания прав доступа

1. Символьный способ

Символьное задание прав выглядит следующим образом:

chmod [кто][операция][права] файл
  • кто:

    • u — владелец (user)
    • g — группа (group)
    • o — остальные (others)
    • a — все (all; эквивалентно u+g+o)
  • операция:

    • + — добавить права
    • - — удалить права
    • = — установить права точно
  • права:

    • r — право на чтение
    • w — право на запись
    • x — право на выполнение
    • X — право на выполнение только если файл является каталогом или хотя бы один из уже имеющихся прав на выполнение установлен
    • Можно также использовать комбинации, например, rw.

Примеры:

  • Добавить право на выполнение владельцу:

    chmod u+x script.sh
  • Удалить права на запись для остальных:

    chmod o-w file.txt
  • Установить для всех права чтения и выполнения, а права записи убрать:

    chmod a=rx file.txt

2. Восьмеричный (цифровой) способ

В этом случае права задаются трёхзначным числом, каждая цифра соответствует владельцу, группе и остальным:

  • Числовые значения прав:
    • 4 — чтение (r)
    • 2 — запись (w)
    • 1 — выполнение (x)
    • Сумма чисел задаёт набор прав. Например, 7 (4+2+1) означает полный доступ (rwx).

Примеры:

  • Установить права rwx для владельца, rx для группы и rx для остальных:

    chmod 755 file.txt
  • Установить права rw- для владельца и только r-- для группы и остальных:

    chmod 644 file.txt

Примеры использования

Пример 1: Добавление права на выполнение для владельца

chmod u+x script.sh

Если у файла script.sh уже установлены права на чтение и запись для владельца, данная команда добавит право на выполнение, позволяя запускать скрипт.

Пример 2: Установка фиксированных прав с помощью цифровой записи

chmod 755 /usr/local/bin/myapp

Эта команда устанавливает следующие права:

  • Владелец: rwx (7)
  • Группа: rx (5)
  • Остальные: rx (5)

Пример 3: Удаление права на запись для группы и остальных

chmod go-w confidential.txt

Команда удаляет право на запись (w) для группы (g) и остальных (o).

Пример 4: Использование опции -R для рекурсивного изменения прав

chmod -R 700 /home/user/secure_dir

Эта команда устанавливает права rwx только для владельца для каталога secure_dir и всех его файлов и подкаталогов.

Полезные советы

  • Проверка текущих прав:
    Перед изменением прав полезно посмотреть текущие настройки с помощью команды:
    ls -l filename
  • Опция -R:
    Для изменения прав доступа в каталоге вместе с его содержимым используйте опцию -R (рекурсивно).
  • Символьный способ удобен для небольших изменений,
    а восьмеричный — для установки фиксированных наборов прав.

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку