Это статья об основах программирования на Go. На канале я рассказываю об опыте перехода в IT с нуля, структурирую информацию и делюсь мнением.
Хой, джедаи и амазонки!
Супер-краткое содержание, если лень читать всю публикацию:
- Скрипт - это программа на языке оболочки, например - bash;
- Скрипты нужны, чтобы одной простой командой запускать серию сложных команд в терминале - это полезно, когда постоянно выполняешь серию одинаковых команд;
- В начале файла скрипта пишется #!/bin/bash, а далее - сами команды;
- Файлу нужно назначить разрешение на выполнение через chmod;
- Для удобства, можно назначить алиас скрипту.
Работа backend-разработчика - это частично работа с терминалом. Я заметил тенденцию, что когда включаю компьютер, делаю в терминале одни и те же действия: запуск определённых программ, переход в определённый каталог, хочу получить вывод некоторой информации в терминал. Я трачу на это не больше минуты, но стало интересно автоматизировать процесс. Скажем, чтобы процесс занимал не 50 секунд, а 15.
"Что? С 50 секунд до 15? О чём вообще речь, вот если бы с получаса до 15 секунд - другое дело", - можете сказать вы. Всё так, и зачастую программист тратит время на отлов непонятных багов десятки часов. Но если есть возможность что-то автоматизировать, почему бы это не сделать?
И посчитаем выгоду, скажем, за год: (50-15 сек) х 5 дней/нед х 4 нед/мес х 11 мес/год = 7700 сек/год ≈ 128,3 мин ≈ 2 часа экономии в год. Уже интереснее.
А представьте, что вы миддл и научили этому трёх своих стажёров. Итого за год вы вчетвером экономите: 2 часа х 4 чел = 8 час/год. Полноценный рабочий день. Поехали разбираться, как это реализовать.
1. Что такое скрипт в IT?
Bash-скрипт - это программа, выполняемая командной оболочкой операционной системы; в данном случае - оболочкой bash.
Есть и другие оболочки; программы, написанные на языке этих оболочек - это сценарии командной строки или сценарии командной оболочки, по-английски shell script.
Во всех трёх Linux что я использовал, была bash. Поэтому разбираться будем с ней.
По сути, оболочки - это одновременно и программы, и языки; но не языки программирования как Go, или языки разметки как HTML, или языки запросов как SQL, а языки сценариев; т.е. языки скриптов.
Скрипт - это набор команд, таких же, которые мы вводим в терминал, - объединённых в один файл, выполняющий определённую задачу по автоматизации каких-либо действий. Как небольшая программа.
Кстати, о разнице терминала, оболочке и CLI можно почитать здесь в параграфе 2.2.1 статьи о конфигурировании приложения: *клик*.
Технически, в скрипте может быть только одна команда. Но обычно их больше.
Рассмотрим комбинацию команд без файла-скрипта, а просто в терминале:
Мы ввели три команды, используя разделитель точка с запятой. Фактически - это прообраз скрипта, когда мы запустили последовательность команд.
Поскольку bash - язык интерпретируемый, то работа этого прообраза скрипта строится на обработке каждой отдельной команды и её исполнении поэтапно:
- Выполняется команда cd go - переход в каталог go;
- Команда ls отображает содержимое каталога;
- Команда pwd показывает полный путь к текущему рабочему каталогу терминала.
Вот мы прописали три команды в строку. Но что если нам по какой-то причине нужно часто использовать эту комбинацию команд? Удобнее сделать из этой комбинации простой скрипт и запускать его.
2. Bash-скрипт
2.1. Пишем простой скрипт
Напишем эти команды в виде полноценного скрипта. Для этого создадим файл:
Строка #!/bin/bash - особая, она говорит интерпретатору bash, что данный файл - это скрипт и какую программу нужно использовать для его интерпретирования.
Последовательность решётка+восклицательный знак называется шебанг. Последовательность после шебанга - путь к файлу-интерпретатора скрипта, в данном случае - это оболочка bash.
Далее пишутся команды для исполнения. Когда будут сложные команды, их можно сопровождать комментариями через решётку:
Можно команды также через точку с запятой писать, а можно каждую команду с новой строки - это как удобнее будет.
Сохраняем файл:
Расширение .sh не обязательно ставить, можно вообще без расширения.
Далее нужно дать разрешение файлу скрипта для выполнения его содержимого ОС:
Далее можно запустить скрипт:
Скрипт запущен.
Однако интересная штука - рабочий каталог почему-то не изменился.
Когда скрипт запускается, он наследует текущий рабочий каталог от родительского процесса (оболочки, из которой он запущен). При исполнении скрипта запускается новый процесс, и команда cd go меняет рабочий каталог внутри оболочки этого дочернего процесса. А при передаче управления родительскому процессу, его оболочка ничего не знает что там было установлено в дочернем.
Чтобы изменения, выполненные в скрипте, влияли на рабочий каталог, можно запустить его через команду source:
Вот, теперь рабочий каталог в терминале изменился.
Для удобства запуска скрипта, можем создать алиас.
2.2. Алиас на скрипт
Алиас - это сокращение, которое обычно заменяет более длинную команду или последовательность команд для удобства использования.
Алиас прописываются в файлы конфигурации оболочки. Пример такого файла - это ~/.bashrc. В него можно добавить команду запуска скрипта:
alias smp="source ~/simple.sh"
Пишется всё без пробелов.
Технически, в алиас можно записать и весь скрипт, но тогда файл конфигурации постепенно может превратиться непонятно во что.
Теперь нужно чтобы оболочка заново считала конфигурацию из файла ./bashrc. Это делается двумя способами: запускается новая оболочка, либо вновь через команду source. Я воспользуюсь вторым способом. Результат:
С алиасом и скриптом разобрались. Какие ещё могут быть команды?
2.3. Запуск файлов
Также для меня было полезно научиться запускать текстовый файл в обычном текстовом редакторе, а не nano. В этом файле находятся некоторые специфичные данные, которые могут понадобиться в работе.
Я добавил это в баш-скрипт и у меня этот файл запускается автоматически вместе с остальными командами. Команда выглядит примерно так:
xdg-open /path_to_file/Памятка.txt
Удобно!
Подобных команд может быть не то чтобы очень много, но каждый раз когда ты вводишь с десяток команд каждый день при включении компьютера - думаешь, как это автоматизировать. А вот как - баш скриптом.
Также можно запускать не только текстовые файлы, но и любые другие файлы и сценарии.
3. Выводы
Мы познакомились с основами создания скриптов на языке bash. Это вспомогательный инструмент повышения собственной эффективности, а не то, что превратит вас в программистов.
Скажем так, это один из инструментов, который в комплексе превратит вас из среднего программиста в программиста хорошего. На мой взгляд так. Но чтобы стать средним программистом - нужно изучать сам язык Go, а уж затем - доп инструменты. Ну либо параллельно.
Если интересно узнать о других инструментах программиста, посмотрите мою подборку об этом: *клик*
На этом у меня всё, благодарю, что дочитали публикацию до конца. Успехов, и будем на связи.
Бро, ты уже здесь? 👉 Подпишись на канал для начинающих IT-специалистов «Войти в IT» в Telegram, будем изучать IT вместе 👨💻👩💻👨💻