Что такое «Баш»?

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

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

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

✅Добро пожаловать в «От новичка до ниндзя: путешествие по сценариям Bash!» Полное руководство для начинающих по написанию сценариев Bash, я считаю, что лучший способ научиться — это делать, поэтому давайте сразу же погрузимся и запачкаем руки. В этом руководстве я расскажу обо всем, что вам нужно знать, чтобы начать работу со сценариями Bash.

Вот краткий обзор того, что я буду освещать:

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

Я начну с создания простого сценария оболочки и запуска его в терминале. Это даст вам общее представление о том, как скрипты работают в Bash.

Преобразуйте свой сценарий оболочки в сценарий Bash

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

Добавление сценария оболочки в PATH

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

Общие сведения об использовании переменных в сценариях Bash

Переменные — неотъемлемая часть сценариев Bash, и я расскажу, как их использовать в наших сценариях.

Целые числа, строки или символы? Как создать различные типы переменных данных в Bash Shell?

Bash позволяет нам создавать различные типы переменных. Я расскажу, как создавать целые числа, строки и символы и как использовать их в наших сценариях.

Передача аргументов в сценарии Bash

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

Использование массивов в Bash

Массивы — мощная структура данных в Bash, и я расскажу, как использовать их в наших скриптах.

Использование арифметических операторов в сценариях Bash

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

Операции со строками в Bash

Манипуляции со строками — обычная задача в Bash-скриптах, и я научу вас использовать для этого различные строковые операции.

Принятие решений в сценариях Bash

Принятие решений в наших сценариях имеет решающее значение, и я расскажу, как использовать операторы if/else и операторы case, чтобы сделать именно это.

Циклы в Bash

Циклы — это фундаментальное понятие в программировании, и я научу вас использовать циклы for, while и until в скриптах Bash.

Использование функций в Bash

Наконец, я расскажу, как использовать функции в Bash для написания повторно используемого кода и сделать ваши сценарии более организованными.

Надеюсь, вам не терпится приступить к написанию сценариев Bash! Давайте погрузимся!!🤿

Глядя на структуру блога и название, я думаю, вы можете немного запутаться в Shell и Bash Script, поэтому вот простое объяснение:

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

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

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

Запустите свой терминал сейчас…

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

Создайте новый каталог с именем «scripts», в котором будут размещаться все наши сценарии bash.

mkdir scripts
cd scripts

Теперь внутри этого каталога scripts создайте новый файл с именем hello.sh с помощью команды cat. Примечание. Расширение .sh часто используется для обозначения того, что файл содержит сценарий оболочки.

cat > hello.sh

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

echo 'Hello, World!'

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

для этого можно использовать любой текстовый редактор на базе терминала

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

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

chmod u+x hello.sh

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

bash hello.sh

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

Преобразуйте свой сценарий оболочки в сценарий bash

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

Вот шаги для преобразования сценария оболочки в сценарий bash:

Откройте сценарий оболочки в текстовом редакторе.

Найдите строку shebang в верхней части скрипта, которая должна выглядеть примерно так:

#!/bin/sh

Эта строка сообщает системе, какую оболочку использовать для интерпретации скрипта.

Измените строку shebang, чтобы вместо этого использовать путь к оболочке bash:

#!/bin/bash

Это обеспечит интерпретацию сценария с использованием оболочки bash.

Сохраните изменения в файле.

После внесения этих изменений вы сможете запустить скрипт с помощью оболочки bash, набрав bash scriptname.sh или ./scriptname.sh (при условии, что у скрипта есть разрешения на выполнение, как мы только что дали скрипту разрешения на выполнение, поэтому попробуйте поискать, если застряли).

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

💡 Строка shebang — это первая строка файла скрипта, которая сообщает компьютеру, какую программу использовать для запуска скрипта. Он начинается с символов «#!» и следует путь к программе. Это важно, потому что гарантирует, что сценарий запускается правильной программой, и помогает компьютеру понять, к какому типу относится сценарий.

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

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

прямо сейчас мы работаем в «Каталоге скриптов», но что, если бы мы могли немного поколдовать здесь и заставить наши скрипты запускаться из любого каталога

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

это может показаться немного запутанным, но оставайтесь со мной еще 5 минут, и вы поймете

Откройте свой терминал и перейдите в каталог, где находится ваш скрипт, то есть в наш каталог «Scripts».

Введите команду «pwd», чтобы отобразить полный путь к вашему скрипту.

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

Введите команду «echo $PATH», чтобы отобразить текущую переменную PATH. Переменная PATH — это список каталогов, в которых система ищет, когда вы вводите команду в терминале.

Откройте файл профиля оболочки (например, ~/.bashrc или ~/.bash_profile) в текстовом редакторе. Этот файл считывается вашей оболочкой при входе в систему и используется для настройки вашей среды, включая переменную PATH.

поскольку «.bashrc» выполняется каждый раз при запуске новой оболочки Bash, а «.bash_profile» выполняется только при входе в систему. «.bashrc» используется для настройки конфигураций и переменных среды, которые применяются к каждой оболочке, а «.bash_profile» используется для более специфичных для системы конфигураций и задач запуска. Однако их конкретное использование может варьироваться в зависимости от ваших потребностей и предпочтений. но я буду использовать «.bashrc», который вы можете выбрать сами.

Чтобы открыть файл профиля оболочки в текстовом редакторе Vim (поскольку я знаю только vim 😶‍🌫️), введите «vim ~/.bashrc» или «vim ~/.bash_profile» (в зависимости от того, какой файл вы хотите отредактировать) и нажмите Входить. Это откроет файл в редакторе Vim, где вы можете внести изменения и сохранить файл, набрав «: wq» и нажав Enter.

Добавьте в файл следующую строку, заменив «/path/to/your/script» полным путем к вашему скрипту, который вы скопировали ранее: «export PATH=$PATH:/path/to/your/script». Эта строка указывает системе добавить каталог, содержащий ваш скрипт, в переменную PATH, чтобы система могла найти ваш скрипт, когда вы вводите его имя в терминале.

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

Чтобы изменения вступили в силу, вам нужно обновить переменную PATH, выполнив команду «source ~/.bashrc» (или имя файла профиля вашей оболочки). Эта команда перезагружает ваш профиль оболочки и применяет изменения, внесенные вами в переменную PATH.

или вы можете просто сделать

export PATH=$PATH:/path/to/your/script

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

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

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

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

  • Хранение пользовательского ввода
  • Хранение путей к файлам
  • Сохранение вывода команды
  • Хранение путей к файлам
  • Хранение значений конфигурации
  • Хранение счетчиков

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

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

#! /bin/bash
echo "What's your name, stranger?"
read name
echo "Hello, $name"

Запустив скрипт hello.sh, он попросит вас ввести свое имя, а затем поприветствует вас, используя указанное вами имя.

Целые числа, строки или символы? Как создать разные типы переменных данных в оболочке bash?

В Bash вы можете создавать переменные различных типов данных, включая целые числа, строки и символы.

Чтобы создать целочисленную переменную, используйте синтаксис имя_переменной=значение (например, число=10).

Чтобы создать строковую переменную, используйте синтаксис variable_name="value" (например, name="John Doe").

Чтобы создать символьную переменную, используйте синтаксис variable_name=’c’ (например, initial=’J’).

Создав свои переменные, вы можете использовать их в своих сценариях и программах Bash.

Передача аргументов в сценарии Bash

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

Вот пример того, как передать переменные в сценарий Bash:

# Sample script named "example.sh"
#!/bin/bash
# Access the first argument as a variable named "arg1"
arg1=$1
# Access the second argument as a variable named "arg2"
arg2=$2
# Use the variables in the script
echo "The first argument is: $arg1"
echo "The second argument is: $arg2"

Чтобы передать переменные этому сценарию из командной строки, вы можете использовать следующий синтаксис:

./example.sh value1 value2

В этом примере значение1 и значение2 — это переменные, которые передаются в качестве аргументов. Первый аргумент (значение1) будет присвоен переменной arg1 в скрипте, а второй аргумент (значение2) будет присвоен переменной arg2.

Когда скрипт запустится, он выведет:

The first argument is: value1
The second argument is: value2

Обратите внимание, что переменные, передаваемые в качестве аргументов, являются позиционными, поэтому их порядок имеет значение. В сценарии доступ к первому аргументу осуществляется с помощью $1, ко второму аргументу — с помощью $2 и так далее. Вы также можете использовать «$@» для доступа ко всем аргументам в виде массива.

Использование массивов в Bash

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

# Declare an array of names
names=("Alice" "Bob" "Charlie" "Dave")
# Loop through the array and print each name
for name in "${names[@]}"
do
  echo "Hello, $name!"
done

В этом примере мы объявляем массив с именем names из четырех элементов. Затем мы перебираем массив, используя цикл for и синтаксис "${names[@]}". Для каждого элемента массива печатаем приветствие с именем.

Когда мы запустим этот скрипт, он выведет:

Hello, Alice!
Hello, Bob!
Hello, Charlie!
Hello, Dave!

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

Использование арифметических операторов в сценариях Bash

#!/bin/bash
# Assign values to variables
a=5
b=10
# Addition
c=$((a + b))
echo "Addition: $a + $b = $c"
# Subtraction
c=$((b - a))
echo "Subtraction: $b - $a = $c"
# Multiplication
c=$((a * b))
echo "Multiplication: $a * $b = $c"
# Division
c=$((b / a))
echo "Division: $b / $a = $c"
# Modulus (remainder)
c=$((b % a))
echo "Modulus: $b % $a = $c"

В этом скрипте мы присваиваем значения 5 и 10 переменным a и b соответственно. Затем мы выполняем все арифметические операции с использованием синтаксиса $((...)) и сохраняем результаты в переменной c. Мы используем команду echo для печати результатов каждой операции.

Когда мы запустим этот скрипт, он выведет:

Addition: 5 + 10 = 15
Subtraction: 10 - 5 = 5
Multiplication: 5 * 10 = 50
Division: 10 / 5 = 2
Modulus: 10 % 5 = 0

Строковые операции в Bash

#!/bin/bash
# Concatenation
a="Hello"
b="World"
c="$a $b"
echo "Concatenation: $c"
# Length
a="Hello World"
length="${#a}"
echo "Length: $length"
# Substring
a="Hello World"
substring="${a:0:5}"
echo "Substring: $substring"
# Replace
a="Hello World"
new_a="${a/World/Universe}"
echo "Replace: $new_a"

В этом скрипте мы сначала используем оператор конкатенации + для соединения строк «Hello» и «World». Затем мы используем синтаксис ${#variable}, чтобы получить длину строки «Hello World». Затем мы используем синтаксис ${variable:start:length} для получения подстроки «Hello World», которая начинается с позиции 0 и имеет длину 5. Наконец, мы используем синтаксис ${variable/search/replace} для замены подстроки «World» в «Привет, мир» с «Вселенная».

Когда мы запустим этот скрипт, он выведет:

Concatenation: Hello World
Length: 11
Substring: Hello
Replace: Hello Universe

Принятие решений в сценариях Bash

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

В сценариях Bash принятие решения включает в себя оценку условия и выполнение действия на основе результата. Наиболее распространенный способ реализации принятия решений в Bash — это оператор if-else.

Основной синтаксис оператора if-else:

if [ condition ]; then
  # code to be executed if condition is true
else
  # code to be executed if condition is false
fi

Здесь condition — это вычисляемое выражение. Если результат оценки верен, будет выполнен блок кода, связанный с оператором if. В противном случае будет выполнен блок кода, связанный с оператором else.

Несколько условий можно комбинировать с помощью логических операторов, таких как && для И и || для ИЛИ. Вложенные операторы if также можно использовать для реализации более сложной логики принятия решений.

Циклы в Баше

В сценариях Bash циклы используются для многократного выполнения блока кода. В Bash используются три типа циклов: циклы for, циклы while и циклы until.

Циклы for перебирают последовательность значений, тогда как циклы while выполняют блок кода до тех пор, пока условие истинно, а циклы until выполняют блок кода до тех пор, пока условие не станет истинным.

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

вот пример программы, демонстрирующий использование циклов for, while и untilloops в Bash:

#!/bin/bash
# Example of a for loop
echo "Counting from 1 to 5 using a for loop:"
for i in 1 2 3 4 5; do
  echo $i
done
echo
# Example of a while loop
echo "Counting from 1 to 5 using a while loop:"
i=1
while [ $i -le 5 ]; do
  echo $i
  i=$((i+1))
done
echo
# Example of an until loop
echo "Counting from 1 to 5 using an until loop:"
i=1
until [ $i -gt 5 ]; do
  echo $i
  i=$((i+1))
done
echo

В этой программе мы используем цикл forдля подсчета от 1 до 5, цикл while для выполнения того же действия и цикл until для повторного выполнения. У каждого цикла есть условие, определяющее, сколько раз он будет выполняться, и блок кода, который выполняется на каждой итерации. При запуске программа будет выводить числа от 1 до 5 три раза, каждый раз используя другой тип цикла.

Использование функций в bash

Функции — важная часть сценариев Bash, поскольку они позволяют группировать команды и вызывать их несколько раз с разными входными данными.

#!/bin/bash
# Define a function that takes two arguments and returns their sum
add_numbers() {
  local result=$(($1 + $2))
  echo $result
}
# Call the function with two arguments
sum=$(add_numbers 3 5)
echo "The sum of 3 and 5 is: $sum"

В этой программе мы определяем функцию add_numbers, которая принимает два аргумента и возвращает их сумму. Мы используем ключевое слово local для создания переменной с именем result, в которой хранится результат сложения, а затем используем команду echo для вывода результата на консоль.

Затем мы вызываем функцию add_numbers с аргументами 3 и 5 и сохраняем результат в переменной с именем sum. Наконец, мы снова используем команду echo, чтобы вывести результат на консоль вместе с сообщением, объясняющим, что он представляет.

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

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

PS Не будь как он