Как создать shell файл и сделать его выполняемым

Обновлено: 06.07.2024

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

В этом уроке мы напишем скрипт, который упростит процесс использования тестовой среды Jasmine. На самом деле, я бы не использовал этот скрипт сегодня; Я бы использовал Grunt.js или что-то подобное. Тем не менее, я написал этот скрипт до того, как появился Grunt, и я обнаружил, что это оказалось отличным способом получить более удобный интерфейс с помощью сценариев оболочки, поэтому мы его используем.

Одно замечание: этот учебник немного связан с моим предстоящим курсом Tuts + Premium «Advanced Command Line Techniques». Чтобы узнать больше о чем-либо в этом уроке, следите за обновлениями этого курса. В дальнейшем в этом уроке он будет называться «курс».

Итак, наш сценарий, который я называю jazz , будет иметь четыре основные функции:

  • Он загрузит Jasmine из Интернета, распакует его и удалит код примера.
  • Он создаст файлы JavaScript и связанные с ними файлы спецификаций и предварительно заполнит их небольшим количеством кода шаблона.
  • Он откроет тесты в браузере.
  • Он отобразит текст справки, которая описана выше.

Начнем с файла сценария.

Шаг 1 - Создание файла

Написание сценария оболочки полезно, только если вы можете использовать его с терминала; Чтобы иметь возможность использовать свои собственные сценарии на терминале, вам нужно поместить их в папку, находящуюся в переменной PATH вашего терминала (вы можете увидеть свою переменную PATH , выполнив echo $ PATH ). Я создал папку

- домашний каталог) на моем компьютере, и именно там мне нравится сохранять собственные скрипты (если вы сделаете то же самое, вам придется добавить их в свой path). Итак, просто создайте файл с названием jazz , и поместите его в свою папку.

Конечно, мы также должны сделать этот файл исполняемым; В противном случае мы не сможем его запустить. Мы можем сделать это, выполнив следующую команду:

Теперь, когда мы можем фактически выполнить скрипт, добавим очень важную часть. Все сценарии оболочки должны начинаться с shebang). Как говорит Википедия, это должна быть первая строка сценария; Он указывает, какой интерпретатор или оболочка должен запускать этот сценарий. Мы просто собираемся использовать базовую стандартную оболочку:

Хорошо, теперь когда у нас все настроено, мы готовы начать писать фактический код.

Шаг 2 - Обозначение потока скрипта

Раньше я указывал, какими должны быть разные функции нашего сценария оболочки. Но как скрипт узнает, какую функцию запустить? Мы будем использовать комбинацию параметра оболочки и оператора case. При запуске скрипта из командной строки мы будем использовать подкоманду, например:

Это должно выглядеть знакомо, особенно если вы использовали Git:

Основываясь на этом первом параметре ( init , create , run , help ), наш оператор case решит, что нужно запускать. Однако нам нужен вариант по умолчанию: что произойдет, если первый параметр не задан, или мы получаем нераспознанный первый параметр? В этих случаях мы покажем текст справки. Итак, начнем!

Шаг 3 - Написание текста справки

Начнем с оператора if , который проверяет наш первый параметр:

Сначала вы можете быть немного смущены, потому что оператор shell if довольно отличается от инструкции if «обычного» языка программирования. Чтобы лучше понять это, просмотрите скринкаст на условных высказываниях в курсе. Этот код проверяет наличие первого параметра ( $1 ); Если он есть, мы выполним код then ; else мы покажем текст справки.

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

Шаг 4 - Пишем case выражения

Если есть первый параметр, нам нужно выяснить, что это такое. Для этого мы используем оператор case :

Мы передаем первый параметр в оператор case ; он должен соответствовать одному из четырех вариантов: «init», «create», «run» или «wildcard», default case. Обратите внимание, что у нас нет явного случая «help»: это просто наш случай по умолчанию. Это работает, потому что ничего, кроме «init», «create» и «run», не является командами, которые мы распознаем, поэтому он должен получить текст справки.

Теперь мы готовы написать функциональный код, и мы начнем с jazz init .

Шаг 5 - Подготовка Jasmine с jazz init

Весь код, который мы пишем здесь, будет идти в нашем case init ) из приведенного выше примера case. Первый шаг - фактически загрузить автономную версию Jasmine, которая входит в zip-файл:

Помните, что в этой строке нет пробелов вокруг знака равенства.

Теперь, когда у нас есть наш zip-файл, мы можем разархивировать его и подготовить содержимое:

В двух из этих строк мы используем basename $JASMINE_LINK ; Команда basename просто уменьшает путь до базового имени: так что path/to/file.zip становится просто file.zip . Это позволяет нам использовать переменную $JASMINE_LINK для ссылки на наш локальный zip-файл.

После того, как мы распакуем, мы удалим этот zip-файл, а также все файлы JavaScript в каталогах src и spec . Это образцы файлов, с которыми работает Jasmine, и они нам не нужны.

Затем у нас есть проблема только для Mac. По умолчанию, когда вы загружаете что-то из Интернета на Mac, когда вы пытаетесь запустить его в первый раз, вас попросят подтвердить, что вы хотите его запустить. Это связано с расширенным атрибутом c om.apple.quarantine , который Apple помещает в файл. Нам нужно удалить этот атрибут.

Начнем с проверки наличия команды xattr , поскольку она не существует в некоторых Unix-системах (я не уверен, но это может быть только программа Mac). Если вы наблюдали за просмотром курсора в условных выражениях, вы узнаете, что мы можем передать любую команду в if : Если она имеет статус выхода ничего, кроме 0 , то значение будет false. Если which найдет команду xattr , она выйдет с 0 ; В противном случае выйдет с 1 . В любом случае, which отобразит некоторый вывод; Мы можем не показывать его, перенаправив в /dev/null (это специальный файл, который отбрасывает все записанные на него данные).

Итак, если xattr найден и файл имеет атрибут, мы удалим его с флагом d (для удаления). Довольно просто, правда?

Последний шаг - отредактировать SpecRunner.html . В настоящее время он содержит теги скриптов для файлов примеров, которые мы удалили; Мы также должны удалить те теги скриптов. Я знаю, что те теги сценария охватывают строки от 12 до 18 в файлах. Таким образом, мы можем использовать редактор потока sed для удаления этих строк:

Флаг i сообщает sed об изменении файла на месте или для сохранения вывода из команды в тот же файл, который мы проходили; Пустая строка после флага означает, что мы не хотим, чтобы sed архивировал файл для нас; Если бы вы этого хотели, вы могли бы просто поместить расширение файла в эту строку (например, .bak, чтобы получить SpecRunner.html.bak ).

Наконец, мы сообщим пользователю, что Jasmine был инициализирован. И на этом наша команда jazz init готова.

Шаг 6 - Создание файлов с помощью jazz create

Затем мы позволим нашим пользователям создавать файлы JavaScript и связанные с ними файлы спецификаций. Эта часть кода войдет в раздел « create » в case, который мы писали ранее.

При использовании jazz create нам нужно включить имя файла в качестве второго параметра: jazz create View , например. Мы будем использовать его для создания src/View.js и spec/ViewSpec.js . Итак, если нет второго параметра, мы напомним пользователю добавить его.

Если есть имя файла, мы начнем с создания этих двух файлов (внутри then части):

Конечно, вы можете поместить все, что захотите, в свой файл src . Я делаю кое что основное здесь; Поэтому jazz create View создаст src/View.js с этим содержимым:

Вы можете заменить эту первую echo строку следующим:

И тогда jazz create View приведет к следующему:

Итак, ваше воображение - это предел. Конечно, вы захотите, чтобы spec-файл был стандартным кодом спецификации Jasmine, что я и выше; Но вы можете настроить это, как вам нравится.

Следующий шаг - добавить теги скриптов для этих файлов в SpecRunner.html . Сначала это может показаться сложным: как мы можем добавить строки в середину файла программно? Еще раз, это sed , который выполняет эту работу.

Мы начинаем так же, как и раньше: редактирование на месте без резервного копирования. Затем наша команда: в строке 11 мы хотим добавить две следующие строки. Важно избегать двух новых строк, чтобы они отображались в тексте. Как вы можете видеть, это просто вставляет те два скриптовых тега, именно то, что нам нужно для этого шага.

Мы можем закончить с небольшим выводом:

И это jazz create !

Шаг 7 - Выполнение спецификаций с jazz run

Последний шаг - фактически запустить тесты. Это означает открытие файла SpecRunner.html в браузере. Здесь будет небольшая оговорка. В Mac OS X мы можем использовать команду open , чтобы открыть файл в своей программе по умолчанию; Это не будет работать ни на одной другой ОС, но я так и делаю здесь. К сожалению, нет реального межплатформенного способа сделать это, о котором я знаю. Если вы используете этот скрипт под Cygwin в Windows, вы можете использовать cygstart вместо open ; В противном случае попробуйте googling «[ваш ОС] shell script open browser» и посмотрите, что можно придумать. К сожалению, некоторые версии Linux (по крайней мере, Ubuntu, по моему опыту) имеют open команду для чего-то совершенно другого.

Первоначально, if условие выглядело так:

Как мы это делали с xattr , оно просто проверяло наличие open ; Однако, поскольку я узнал, что в Linux существует другая команда open (даже на моем сервере Ubuntu, который даже не может открыть браузер!), Я решил, что лучше сравнить путь программы open , поскольку в Linux она находится в /bin/open (опять же, по крайней мере, на сервере Ubuntu).

Вся эта лишняя словесность об open может показаться оправданием для отсутствия у меня хорошего решения, на самом деле это указывает на что-то важное в командной строке. Не путайте понимания терминалов с пониманием конфигурации компьютера. Этот учебник и связанный с ним курс научили вас немного работе в оболочке Bash (и оболочке Z), но это не значит, что каждый компьютер, который вы используете, будет настроен одинаково; Существует множество способов установки новых команд (или разных версий команд), а также удаления команд. Предостережение разработчику.

Ну, это весь скрипт! Здесь снова, все вместе:

Ну, продолжайте, попробуйте!

Кстати, если вы хотите немного поучаствовать в этом проекте, вы можете найти его на Github.

Вывод

Итак, у вас теперь есть это! Мы только что написали сценарий оболочки промежуточного уровня; Это было не так уж плохо, не так ли? Не забудьте следить за моим предстоящим курсом Tuts + Premium; Вы узнаете гораздо больше о многих методах, используемых в этой статье, а также о многих других. Получайте удовольствие от работы в терминале!

.jpg

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

Скрипты командной строки

Написание скриптов командной строки (shell-скриптов) — самый простой способ начать программировать, т.к. они дают быстрые результаты и всё, что вам нужно уметь, перед тем как садиться писать такой скрипт — это открыть терминал и использовать текстовый редактор: Nano, Leafpad или Geany. Shell-скрипты в Linux способны на многое — загружать систему, делать резервные копии, осуществлять рутинные операции, выводить информацию о системе, создавать и изменять файлы и т.д. В таких скриптах можно использовать переменные, функции или вызовы для запуска того или иного файла. Скрипту можно давать любое удобное для вас имя, при этом широко используется расширение .sh.

Создание shell-скриптов

Перед тем как создавать shell-скрипт, необходимо выяснить, какой интерпретатор используется в системе. Большинство скриптов используют /bin/sh, поскольку он более портативен, но существуют также скрипты, опирающиеся на /bin/bash, поэтому он тоже должен быть установлен в системе. Чтобы скрипт можно было запустить, его нужно сделать исполняемым, изменив его права доступа в командной строке утилитой chmod. Чтобы создать скрипт script.sh и сделать его исполняемым, используйте команды

Получив исполняемый файл, можно приступать к его редактированию. Вы можете оставаться в терминале и использовать редактор Nano (для сохранения и выхода нажмите Ctrl+X) или Leafpad:

Ниже приведен скрипт, содержащий переменную NAME и выводящий ее значение командой echo:

После создания или редактирования скрипта его можно запустить для проверки:

Это было краткое введение в shell-скрипты. В Интернете очень много информации по этой теме, если она вас заинтересует.

Dialog

Приложение dialog может создавать консольные программы с графическим интерфейсом, как, например, инсталлятор SliTaz. Файлы настроек программы находятся в папках /etc/dialogrc и/или

/dialogrc для каждого пользователя. Вот простой пример использования dialog через командную строку:

Geany IDE

Geany относится к интерактивным средам разработки (Interactive Development Environment, IDE). Geany — простая и быстрая программа, она имеет подсветку синтаксиса, вкладки и функцию автозавершения. Geany использовался при создании большей части документации на этом сайте (и еще немного Nano).

Для установки Geany выполните команду

При первом запуске программы вы можете изменить ее настройки в меню ПравкаНастройки. Также Geany можно запустить из терминала командой

Интересно, что при компиляции исходного кода в скрипте ./configure будет указана опция -enable-the-force… (задействовать Силу). Она понадобится вам, если вы захотите почувствовать себя Люком Скайуокером!

Perl (Microperl) — создание и использование Perl-скриптов

В SliTaz вы можете использовать мощный скриптовый язык Perl, запустив его как perl или microperl. Microperl — это модернизированная версия Perl, собранная из официальных исходников. Perl-скрипты, использующие Microperl, совместимы с полной версией Perl. Одна из сильных сторон Perl — его портативность: его можно использовать на любой системе и он является интерпретируемым языком, что означает отсутствие необходимости в компилировании кода и возможность его запуска напрямую. В SliTaz Perl и Microperl по умолчанию не входят в состав Live CD, поэтому вам понадобится либо перепаковать Live CD, либо установить Perl через менеджер пакетов. К сведению: Microperl имеет размер всего 1 Мб и не предоставляет модулей. Установку Perl (или Microperl) можно произвести командой

Скрипт «Hello World!»

Для примера можно создать простейший скрипт, выводящий надпись «Hello World!». Вначале создайте файл и сделайте его исполняемым, а затем отредактируйте в Geany. Скрипт в нашем примере имеет название hello.pl, но вы можете дать ему любое другое имя, как с расширением .pl, так и без.

Первая строка скрипта определяет путь к интерпретатору Perl, обычно это /usr/bin/perl. Для вывода на экран текста используется команда print. Нужно отметить, что Perl чувствителен к регистру и что каждая строка кода должна заканчиваться точкой с запятой. Вот сам код (вы можете его скопировать и вставить в редактор):

Чтобы выполнить скрипт, в командной строке наберите

CGI-скрипты и Perl

Когда сервер настроен должным образом, можно поместить скрипты в папку $HOME/Public/cgi-bin, задав им расширение .pl или .cgi, и просматривать их на локальном или удаленном компьютере. Пример использования скрипта Perl CGI:

Python

Официальный репозиторий SliTaz под названием Mercurial базируется на веб-интерфейсе CGI/Python; такое сочетание подходит для создания надежного и мощного продукта.

Для установки Python выполните команду

Язык программирования Ruby также доступен в виде установочного пакета. Ruby можно охарактеризовать как «динамический язык программирования с открытыми исходными кодами, цель которого — простота и продуктивность, имеющий элегантный синтаксис, легкий для чтения и написания программ» (цитата с официального сайта Ruby). Ruby управляет исключениями, поддерживает объектно-ориентированное программирование (ООП), автоматическое управление памятью и обладает очень хорошей портабельностью.

Чтобы установить Ruby, наберите

Toolchain — библиотеки, компилятор С и различные утилиты

Чтобы компилировать программное обеспечение из сторонних или ваших собственных исходников, вам понадобится по крайней мере минимальный набор утилит, куда войдут Binutils, Glibc, компилятор С, заголовочные файлы ядра Linux и утилита Make. Toolchain также используется разработчиками SliTaz для сборки системы из исходников. Для установки toolchain со всеми зависимостями введите

Текущая версия toolchain может без проблем компилировать простые программы в режиме командной строки, используя Ash из состава Busybox, но некоторые программы посложнее потребуют наличия Bash для компиляции. GNU Bash доступен в качестве пакета вместе с другими средствами разработки, например, Flex, M4, Bison или Pkg-config. Если вам нужно найти pkg-config, то используйте команду

Если вы хотите компилировать программы, использующие библиотеку Ncurses, потребуется установить пакет ncurses-dev. Этот пакет также имеет в своем составе несколько маленьких программ, к примеру, tic и tac.

bash (сокр. от «Bourne-Again shell») — это командная оболочка (или «интерпретатор командной строки»), используемая по умолчанию в операционных системах на базе Unix и Linux, созданная в 1989 году Брайаном Фоксом с целью усовершенствования командной оболочки sh.

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

Что такое терминал?

Терминал — это программа, которая используется для взаимодействия с шеллом. Это просто интерфейс к нему и другим программам командной строки, которые работают внутри нее. Вот как выглядит типичный терминал (Konsole) в Debian 11 (окружение рабочего стола — KDE Plasma):


Типичный терминал в Linux

Всякий раз, когда мы открываем окно терминала, мы видим приглашение шелла — имя_пользователя@имя_машины:

$ . Символ $ означает, что мы работаем под учетной записью обычного пользователя, а символ

(тильда) означает, что в данный момент мы находимся в домашнем каталоге /home/<имя_пользователя>.

Команды в bash

Команда в bash — это наименьшая единица кода, которую bash может выполнить. С помощью команд мы сообщаем шеллу, что нам нужно, чтобы он сделал. bash обычно принимает от пользователя одну команду и возвращается к нему после того, как команда будет выполнена. Чтобы немного освоиться в bash, давайте попробуем выполнить несколько простых команд.

Команда echo — возвращает всё, что вы вводите в командной строке:


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

Команда date — отображает текущее время и дату:

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

Команда pwd (сокр. от «print working directory») — указывает на текущий рабочий каталог, в котором команды шелла будут искать файлы.

Файловая иерархия в Linux имеет древовидную структуру, поэтому, чтобы добраться до указанного каталога или файла, нам нужно пройти определенный путь, каждый узел которого отделен от других узлов символом / .


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

Команда ls (сокр. от «list») — отображает содержимое каталога. Обычно, команда ls начинает с просмотра нашего домашнего каталога. Это означает, что если мы просто напечатаем ls , то данная команда выведет содержимое текущего каталога, которым в нашем примере является домашний каталог /home/diego:


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

Команда cd (сокр. от «change directory») — изменяет текущую директорию на заданную пользователем. Рассмотрим некоторые примеры использования данной команды:

cd <директория> — меняет текущую директорию на заданную. Давайте попробуем с помощью команды ls перейти к корневому каталогу / и ознакомимся с его содержимым. Обратите внимание, что мы также можем использовать точку с запятой ; для записи двух команд в одной строке.


Пример объединения двух команд в одной строке

cd .. — вернуться в родительский каталог.

cd — вернуться в домашний каталог.

Команда mkdir (сокр. от «make directory») создает новый каталог.

Команда mv (сокр. от «move») — перемещает один или несколько файлов/каталогов из одного места в другое (заданное пользователем). Для этого нужно указать, что мы хотим переместить (т.е. источник), и куда мы хотим переместить (т.е. пункт назначения).


Перемещение файлов с помощью команды mv

Команда touch — создает новые пустые файлы (а также изменяет временные метки в существующих файлах и каталогах). Вот как мы можем создать пустой файл под названием foo.txt в папке Ravesli из домашнего каталога:


Создание файла с помощью команды touch

Команда rm (сокр. от «remove») — удаляет файлы/каталоги. По умолчанию, команда rm НЕ удаляет каталоги, но если используется как rm -r * внутри заданного каталога, то каждый подкаталог и файл внутри заданного каталога — удаляются.

Давайте удалим ранее созданный файл foo.txt:


Удаление файла с помощью команды rm

Команда rmdir (сокр. от «remove directory») — удаляет каталоги.

Давайте удалим созданный ранее каталог /home/diego/Ravesli:


Удаление каталогов с помощью команды rmdir

Команда cat (сокр. от «concatenate») — считывает файл и выводит его содержимое. Она может работать с несколькими файлами, объединяя их вывод в единый поток (отсюда и происходит её название). У меня в домашнем каталоге есть папка untitled с файлами С++/Qt-проекта, и ниже я использую команду cat для просмотра содержимого файла main.cpp из untitled:


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

Чтобы просмотреть несколько файлов, укажите друг за другом (через пробел) имена требуемых файлов после команды cat , например:


Просмотр нескольких файлов с помощью команды cat


Отображение справочной информации с помощью команды man

Редактор nano

nano — это маленький, простой, консольный текстовый редактор *nix-подобных операционных систем, впервые увидевший свет в далеком 1999 году. Для запуска редактора достаточно ввести в терминале всего одну команду — nano . Если же нужно отредактировать какой-то конкретный файл, то применяется команда nanо /<путь_к_файлу/<имя_файла> . Отличительной чертой данного редактора является то, что он управляется сочетаниями клавиш. Например, для сохранения текущего документа применяется сочетание Ctrl+O, для вызова меню поиска — Ctrl+W, для выхода из редактора — Ctrl+X, а для получения всего списка доступных сочетаний клавиш — Ctrl+G.



Гайд по созданию bash-скриптов

Наш шелл, это не только промежуточное звено между пользователем и системой, но еще и мощный язык программирования. Программы, написанные на языке шелла, называются shell-скриптами (или shell-сценариями) и имеют соответствующее расширение файлов — .sh. Сам язык содержит полный набор утилит и команд, доступных в *nix-системах, а также циклы, условные операторы, объявление переменных и пр. Такие скрипты будут очень полезными там, где не требуется использование полноценных языков программирования, например, в задачах администрирования операционной системы.

Создание bash-скрипта

Чтобы создать новый файл bash-скрипта, откройте в любом редакторе текстовый файл и сохраните его с расширением .sh. Все дальнейшие эксперименты я будут проводить в Debian Linux, с применением текстового редактора nano.

Давайте создадим новый файл ravesli.sh:

$ touch ravesli.sh
diego@debian:

$ ls -l
-rw-r--r-- 1 diego diego 0 мар 9 14:59 ravesli.sh
diego@debian:

Чтобы выполнить файл bash-скрипта, нужно изменить права доступа к файлу и сделать его исполняемым. Разрешение, как вы наверняка помните из предыдущих уроков, изменяется командой chmod +x <имя_файла> :

$ chmod +x ravesli.sh
diego@debian:

$ ls -l
итого 40
drwxr-xr-x 2 diego diego 4096 фев 27 00:23 build-untitled-Desktop-Debug
-rw x r- x r- x 1 diego diego 0 мар 9 14:59 ravesli.sh

Выполнение bash-скрипта

Файл bash-скрипта может быть запущен двумя способами:

Способ №1: bash <имя_файла> . Чтобы выполнить скрипт, просто напишите в терминале команду bash , а затем (через пробел) имя файла и нажмите Enter.

Способ №2: ./<имя_файла> . Чтобы выполнить скрипт введите команду ./<имя_файла> и нажмите Enter.

Favorite

Добавить в избранное

Главное меню » Linux » Команды Linux и команды Shell » Создайте и запустите свой первый скрипт Bash Shell

(2 оценок, среднее: 5,00 из 5)

Bash Heredoc

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

Если вам нужно сделать это более одного раза, автоматизируйте это!

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

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

Создайте и запустите свой первый скрипт оболочки

Давайте сначала создадим новый каталог с именем scripts, который будет содержать все наши скрипты bash.

Теперь внутри этого «каталога скриптов» создайте новый файл с именем hello.sh с помощью команды cat:

Вставьте в него следующую строку, набрав ее в терминале:

Нажмите Ctrl + D, чтобы сохранить текст в файл и выйти из команды cat.

Вы также можете использовать текстовый редактор на основе терминала, такой как Vim, Emacs или Nano. Если вы используете настольный Linux, вы также можете использовать графический текстовый редактор, такой как Gedit, чтобы добавить текст в этот файл.

Итак, в основном вы используете команду echo для вывода «Hello World». Вы можете использовать эту команду непосредственно в терминале, но в этом тесте вы запустите эту команду через скрипт оболочки.

Теперь сделайте файл hello.sh исполняемым с помощью команды chmod следующим образом:

И наконец, запустите ваш первый скрипт оболочки, добавив hello.sh желаемую оболочку «bash»:

Вы увидите Hello, World!, напечатанные на экране. Возможно, это была самая легкая программа Hello World, которую вы когда-либо писали, верно?

Конвертируйте ваш скрипт в bash

Читать 5 практических примеров команды read в Linux

Bash часто является оболочкой по умолчанию в большинстве дистрибутивов Linux. Вот почему bash часто является синонимом оболочки.

Сценарии оболочки часто имеют почти одинаковые синтаксисы, но иногда они также различаются. Например, индекс массива начинается с 1 в Zsh вместо 0 в bash. Скрипт, написанный для оболочки Zsh , не будет работать так же в bash, если у него есть массивы.

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

Строка SheBang в начале сценария оболочки

Добавление сценария оболочки в PATH (чтобы его можно было запустить из любого каталога)

Возможно, вы заметили, что мы использовали ./hello.sh для запуска скрипта; вы получите ошибку, если пропустите ведущий ./

Bash подумал, что вы пытаетесь запустить команду с именем hello.sh. Когда вы запускаете любую команду на вашем терминале; он ищет эту команду в наборе каталогов, которые хранятся в переменной PATH.

Вы можете использовать echo для просмотра содержимого этой переменной PATH:

Символ двоеточия (:) разделяет путь каждого из каталогов, которые сканирует ваша оболочка при каждом запуске команды.

Команды Linux, такие как echo, cat и т. д., можно запускать откуда угодно, потому что их исполняемые файлы хранятся в каталогах bin. Каталоги bin включены в PATH. Когда вы запускаете команду, ваша система проверяет PATH на все возможные места, которые она должна искать, чтобы найти исполняемый файл для этой команды.

Читать Как одновременно переименовать несколько файлов в Linux

Если вы хотите запустить свой bash-скрипт из любой точки мира, как если бы это была обычная команда Linux, добавьте местоположение вашего сценария оболочки в переменную PATH.

Во-первых, найдите местоположение каталога вашего скрипта (если вы находитесь в том же каталоге), используйте команду PWD:

Используйте команду export, чтобы добавить каталог скриптов в переменную PATH.

Обратите внимание, что мы добавили «каталог скриптов» в самый конец нашей переменной PATH. Так что пользовательский путь ищется после стандартных каталогов.

Момент истины здесь, запустите hello.sh:

Он работает! Это подводит нас к концу этой статьи. Мы надеемся, что теперь у вас есть некоторое представление о сценариях оболочки.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: