Как да пишете Bash скриптове в Linux

Как да пишете Bash скриптове в Linux

В света на операционните системи Linux, познаването на Bash езика за скриптове може да бъде нещо, което разширява възможностите ви значително. Bash, съкращение от Bourne Again Shell, е стандартният интерпретатор за команден ред в много дистрибуции на Linux и Unix системи.

Създаването на Bash скриптове ви позволява да автоматизирате задачи, да управлявате файлове и процеси, както и да използвате множество други функции на вашата система.

В това ръководство ще ви представим основните понятия и техники за писане на Bash скриптове, които да ви помогнат да започнете.

1. Запознаване с Bash

Bash е програмен език за скриптове, който ви позволява да пишете последователности от команди, които да се изпълняват последователно.

Предимства на Bash скриптовете:

  • Автоматизация: Повтарящи се задачи могат да се автоматизират, спестявайки време и усилия.
  • Ефективност: Скриптовете могат да изпълняват множество задачи едновременно.
  • Повторяемост: Скриптовете гарантират, че задачите се изпълняват последователно и по един и същ начин.
  • Гъвкавост: Скриптовете могат да бъдат модифицирани и адаптирани за различни нужди.

2. Създаване на Bash скрипт

  1. Създайте текстов файл: Отворете текстов редактор (например nano, vim) и създайте нов файл.
  2. Въведете shell команди: В текстовия файл въведете shell командите, които искате да се изпълнят.
  3. Запазете файла: Запазете файла с разширение .sh (например script.sh).
  4. Направете файла изпълним: Използвайте командата chmod +x script.sh, за да направите файла изпълним.

Структура на Bash скрипт:

  • Shebang: Първият ред е shebang, започващ с #!, последван от пътя до интерпретатора (например #!/bin/bash).
  • Коментари: Коментарите започват с # и се игнорират от интерпретатора.
  • Променливи: Променливите се декларират с име и стойност, разделени от знак за равенство (например var=value).
  • Условни оператори: Условните оператори (if, else, elif) позволяват изпълнение на код в зависимост от условие.
  • Цикли: Циклите (for, while, until) позволяват многократно изпълнение на код.
  • Функции: Функциите групират код за многократна употреба.

Примерен Bash скрипт:

#!/bin/bash
# Това е коментар. Първият ред указва пътя до интерпретатора на Bash.

echo "Здравейте, приятели!"

След като сте написали скрипта, запазете го и го направете изпълним:

chmod +x my_script.sh

Сега можете да изпълните вашия скрипт:

./my_script.sh


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

1. Shebang:

Първият ред на bash скрипта е shebang, който започва с #! и е последван от пътя до интерпретатора. Пример:

#!/bin/bash

2. Коментари:

Коментарите започват с # и се игнорират от интерпретатора. Пример:

# Този ред е коментар

3. Променливи:

Променливите се декларират с име и стойност, разделени от знак за равенство. Пример:

var="value"

4. Условни оператори:

Условните оператори (if, else, elif) позволяват изпълнение на код в зависимост от условие. Пример:

if condition; then
  # Изпълнява се код, ако условието е истина
else
  # Изпълнява се код, ако условието е невярно
fi

5. Цикли:

Циклите (for, while, until) позволяват многократно изпълнение на код. Пример:

for i in $(seq 1 10); do
  # Изпълнява се код за всяко число от 1 до 10
done

6. Функции:

Функциите групират код за многократна употреба. Пример:

function my_function() {
  # Код, който се изпълнява, когато се извика функцията
}

7. Извиквате на функции:

Функциите се извикват с името им. Пример:

my_function

8. Запазване на скриптове:

Bash скриптовете се запазват с разширение .sh.

9. Права за изпълнение:

За да може скриптът да се изпълни, трябва да му се дадат права за изпълнение.

10. Изпълнение на скриптове:

Скриптовете се изпълняват с командата bash. Пример:

bash script.sh

Забележка:

  • Този списък не е изчерпателен.
  • За по-сложни задачи е необходимо да се запознаете с по-усъвършенствани функции на bash езика.

Още един примерен Bash скрипт:

Ето един примерен скрипт на Bash, който използва инструментите speedtest-cli за измерване на интернет скоростта и командата ping за измерване на пинга

#!/bin/bash

echo -e "\e[32mПроверката тече...\e[37m"

# Функция за проверка на интернет скоростта
check_speed() {
  speedtest-cli --simple > speedtest_results.txt
  download_speed=$(grep "Download" speedtest_results.txt | awk '{print $2}')
  upload_speed=$(grep "Upload" speedtest_results.txt | awk '{print $2}')

  # Оцветяване на изхода
  echo -e "\e[32mChecking Internet Speed...\e[37m"
  echo -e "Download Speed: \e[32m$download_speed Mbps\e[37m"
  echo -e "Upload Speed: \e[32m$upload_speed Mbps\e[37m"
}

# Функция за проверка на пинг
check_ping() {
  ping_result=$(ping -c 3 8.8.8.8)
  ping_time=$(echo "$ping_result" | tail -n 1 | awk '{print $4}' | cut -d '/' -f 2)

  # Оцветяване на изхода
  echo -e "\e[32mChecking Ping...\e[37m"
  echo -e "Ping: \e[32m$ping_time ms\e[37m"
}

# Извикване на функциите за проверка
check_speed
echo ""
check_ping

# ASCII Art разделител
echo -e "\e[32m---------------------------------------\e[37m"

speedtest

Този скрипт извиква speedtest-cli за измерване на интернет скоростта и използва ping за измерване на пинга към хоста 8.8.8.8 (DNS сървър на Google). Можете да промените хоста, към който да измервате пинга, като промените IP адреса в командата ping.

Ако speedtest-cli липсва във вашата среда , можете да го инсталирате с:

За Debian/Ubuntu базирани системи:

sudo apt-get update
sudo apt-get install speedtest-cli

Заключение

Това ръководство представи основните концепции и техники за писане на Bash скриптове в Linux. След като сте запознати с тези основи, можете да продължите да изучавате по-сложни теми като функции, обработка на стрингове и управление на процеси. Практика и експериментиране с различни комбинации от команди ще ви помогнат да станете по-удобни с писането на скриптове и да използвате пълния потенциал на Bash за автоматизация на вашите задачи в Linux.

Надяваме се, че това ръководство ще ви бъде полезно и ви пожелаваме успех във вашите първи стъпки в света на Bash скриптовете!

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: