Как просто научиться писать скрипты в Linux

Использование скрипта для команд Linux – это как умный помощник. Он экономит ваше время, потому что вам не нужно набирать длинные команды снова и снова. Вы просто запускаете скрипт, и он делает всю работу за вас.

Таким образом, вы совершаете меньше ошибок и быстрее справляетесь с поставленными задачами. Кроме того, вы можете поделиться этим скриптом с другими, чтобы они могли легко сделать то же самое.

Создание скрипта для команды Linux

Создать скрипт в Linux для сложных команд довольно просто! Вот пошаговая инструкция по созданию скрипта для ваших команд:

1. Выберите текстовый редактор

Вы можете использовать любой текстовый редактор, например nano, vim или gedit. Для новичков обычно проще nano.

2. Создайте новый файл сценария

Откройте терминал Введите nano myscript.sh (или замените nano на предпочитаемый редактор и myscript.sh на желаемое имя файла).

3. Напишите строку Shebang

В верхней части файла напишите #!/bin/bash. Эта строка указывает системе, что скрипт должен быть запущен в оболочке Bash.

4. Добавьте свою команду

После строки shebang введите свои команды точно так же, как в терминале. Например, я собираюсь добавить следующую команду:

cat ostechnix.txt | tr '|' '\n' | sort | tr '\n' '|' | sed "s/.$/\\n/g"

Как видите, приведенная выше команда немного длиннее и сложнее для запоминания. Для тех, кому интересно, эта команда берет файл, в котором элементы разделены символом |*, сортирует эти элементы, а затем выводит их в виде одной строки, разделенной символом *|, но удаляет последний такой символ и завершает строку символом новой строки. Например, если файл ostechnix.txt содержит c|a|b, то после выполнения этой команды на выходе будет a|b|c.

Если у вас несколько команд, вы можете поместить их на отдельные строки или использовать точки с запятой ; для разделения их на одной строке.

Вы также можете добавить комментарии, начав строку с #. Они не будут выполняться и пригодятся для заметок или пояснений.

5. Сделайте скрипт исполняемым

Сохраните файл и выйдите из текстового редактора.

Выполните следующую команду, чтобы сделать ваш скрипт исполняемым:

chmod +x myscript.sh

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

Чтобы запустить скрипт, используйте ./myscript.sh из его каталога.

./myscript.sh

Если он находится в каталоге, включенном в ваш PATH (например, /usr/bin/ или любой другой каталог из вашего PATH), вы можете просто набрать myscript.sh.

Этот метод, как правило, эффективен для большинства задач. Однако существуют и другие способы управления сложными командами:

  • Псевдонимы: Для более коротких или часто используемых команд вы можете создать псевдонимы в файле ~/.bashrc или ~/.bash_aliases.
  • Функции Bash: Функции Bash в вашем ~/.bashrc могут быть более гибкими, чем псевдонимы, и полезны для немного более сложных задач.
  • Внешние инструменты: Для очень сложных задач, особенно связанных с автоматизацией различных систем, вы можете рассмотреть такие инструменты, как Ansible, Chef или Puppet.

Выбор между этими вариантами зависит от сложности ваших задач и ваших личных или организационных потребностей. Для большинства индивидуальных случаев использования более чем достаточно простого сценария Bash, как описано выше.

Быстрое создание сценария с последней выполненной командой

Как создать сценарий с последней выполненной командой? Очень просто! Помните, что мы используем !! для повторения последней команды? Следовательно, вы можете использовать команду echo, чтобы добавить последнюю выполненную команду в ваш скрипт, как показано ниже.

echo "!!" > script-name-here.sh

Пожалуйста, будьте осторожны при использовании !!. Дважды проверьте свою последнюю команду перед запуском этой.

Следующим образом откройте файл скрипта и добавьте соответствующий shebang (например, /bin/bash или /bin/sh ) в начало скрипта. Сохраните файл и закройте его.

Установите разрешение на выполнение скрипта:

chmod +x script-name-here.sh

Запустите скрипт с помощью команды:

./script-name-here.sh

Почему Shebang важен в сценариях?

Добавление shebang в начало сценария обычно рекомендуется по разным причинам. Давайте обсудим несколько важных моментов.

Шебанг ( #! ), за которым следует путь к интерпретатору (например, /bin/bash или /bin/sh ), является важнейшей частью хорошо написанного скрипта. Он гарантирует, что сценарий будет выполнен в правильном окружении, независимо от того, в какой оболочке находится пользователь.

Зачем включать Shebang?

Строка shebang указывает системе, какой интерпретатор использовать для выполнения сценария. Без нее система может использовать не ту оболочку или интерпретатор, который вы задумали, что может привести к неожиданному поведению или ошибкам.

Выбор между #!/bin/bash и #!/bin/sh

  • #!/bin/bash: Используйте этот вариант, если ваш скрипт использует специфические для Bash возможности или синтаксис. Bash имеет больше возможностей, чем стандартная оболочка ( sh ), например некоторые операции с массивами или методы работы со строками.
  • #!/bin/sh: Это для скриптов, использующих только стандартный синтаксис оболочки, который лучше переносится на различные Unix-подобные системы. Однако во многих системах (например, в Ubuntu) /bin/sh фактически связан с /bin/dash, который представляет собой оболочку, разработанную для более быстрой и эффективной работы, чем Bash, но с меньшим количеством функций.

Что выбрать?

Если вы пишете скрипт для личного использования на системе, где вы знаете, что Bash доступен (например, в большинстве дистрибутивов Linux), то использование #!/bin/bash в целом подходит.

Если вы стремитесь к переносимости или пишете скрипты, которые должны работать на широком спектре Unix-подобных систем, включая те, где Bash может быть не установлен по умолчанию (например, в некоторых минимальных образах Docker), то #!/bin/sh – более безопасный выбор.

Включение строки shebang считается лучшей практикой в написании скриптов и особенно важно для обеспечения последовательного поведения вашего скрипта в различных средах.

Для новичков хорошим выбором будет придерживаться #!/bin/bash для ваших личных скриптов в Linux, особенно если вы собираетесь использовать специфичные для Bash функции.

Что делать, если интерпретатор не установлен по умолчанию?

Если интерпретатор, который вы хотите использовать для вашего скрипта, не установлен по умолчанию (например, /bin/bash или /bin/sh), есть несколько подходов:

Использовать µµ39µµ для поиска интерпретатора

Более гибкий подход – использовать env в строке shebang. Это полезно, поскольку позволяет сделать сценарий более переносимым, так как env определяет местоположение интерпретатора в системном PATH.

Например, если вы пишете сценарий Bash и хотите использовать любую версию Bash, установленную по умолчанию для пользователя, вы можете использовать #!/usr/bin/env bash.

Такой подход особенно распространен в средах, где интерпретатор может находиться в разных местах на разных системах.

Указывать полный путь к интерпретатору

Если вы знаете точный путь к интерпретатору, вы можете указать его в строке shebang. Например, если ваш интерпретатор Python находится по адресу /usr/local/bin/python3, вы начнете свой скрипт с #!/usr/local/bin/python3.

Изменение переменной окружения µµ14µµ

Если интерпретатор находится в месте, которое не входит в текущий PATH, и вы не хотите (или не можете) указывать полный путь в каждом скрипте, вы можете изменить переменную окружения PATH, чтобы она включала каталог, в котором находится интерпретатор.

Это можно сделать, добавив строку типа export PATH=$PATH:/path/to/interpreter-directory в файл .bashrc, .bash_profile или .profile, в зависимости от настроек вашей системы.

Таким образом, вы сможете просто использовать #!/bin/bash, #!/usr/bin/env python3 и т. д., в своих сценариях.

Установите интерпретатор в путь по умолчанию

Другое решение, особенно если у вас есть права администратора и вы настраиваете систему на постоянное использование, – установить интерпретатор в одно из стандартных мест (например, /usr/bin/ или /usr/local/bin/ ).

Для этого нужно либо использовать менеджер пакетов для установки интерпретатора (который обычно помещает его в стандартное место), либо создать символическую ссылку с фактического места на каталог в вашем PATH.

Обработка ошибок в сценариях

В некоторых случаях вы можете захотеть добавить в сценарий обработку ошибок, чтобы проверить, доступен ли требуемый интерпретатор или команда. Это можно сделать с помощью простых проверок внутри сценария, чтобы увидеть, выходят ли команды с ошибкой, и затем вывести информационное сообщение.

Помните, что выбранный подход должен соответствовать вашим конкретным потребностям и ограничениям вашего окружения. Для личного использования или разработки часто достаточно модифицировать PATH или использовать env. Для более контролируемых или производственных сред обычно предпочтительнее обеспечить установку интерпретатора в стандартном месте.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен ostechnix.com

Похожие статьи

Комментарии (0)