Skip to content
IRC-CodingIRC-Coding
LinuxBashShell ScriptingОбучениеАвтоматизацияCommand Line

Bash Scripting для Linux: Быстрый старт

Основы Bash-программирования за 5 минут. Научитесь писать скрипты на Shell для Linux с нуля.

S

schutzgeist

3 min read
Bash Scripting для Linux: Быстрый старт

Быстрый старт за 5 минут

Если ты хочешь изучать Bash, рекомендуем эту книгу на Amazon: https://amzn.to/3WQnERX (это внешняя партнёрская ссылка на Amazon)

Linux BASH: самоучитель по программированию

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

Как обычно, всё “в двух словах”.

1. Переменные

Переменные хранят данные, которые ты используешь в своём скрипте.

server=“irc.IRC-Mania.com” port=6667

2. Echo

Выводи текст с помощью echo.

echo “Verbindung zu $server auf Port $port herstellen…“

3. Выполнение команд

Используй обратные кавычки или $() для запуска команд.

> hostname=$(hostname) > echo "Мой хостнейм: $hostname"

4. If-Else

Проверяй условия с помощью if.

if [ "$port" -eq 6667 ]; then echo "Обнаружен стандартный порт IRC." else echo "Нестандартный порт." fi

5. Циклы

For-цикл

Проходи по списку серверов.

> for server in "irc.example.com" "irc.freenode.net"; do > echo "Подключаюсь к $server..." > done

While-цикл

Повторяй, пока условие не выполнится.

connected=0 while [ $connected -eq 0 ]; do nc -z $server $port && connected=1 sleep 5 done echo "Подключение установлено!"

6. Функции

Определи переиспользуемые блоки кода.

> connect_to_server() { > echo "Пытаюсь подключиться к $1..." > nc -z $1 $port && echo "Успешное подключение к $1!" > }

connect_to_server “irc.irc-mania.com”

7. Case

Ветвись в зависимости от входных данных.

> command="PRIVMSG" > > case $command in > "JOIN") echo "Пользователь присоединился." ;; > "PART") echo "Пользователь покинул канал." ;; > "PRIVMSG") echo "Получено сообщение." ;; > *) echo "Неизвестная команда." ;; > esac

8. Массивы

Храни несколько значений в массиве.

channels=("general" "help" "random")
echo "Присоединяюсь к ${channels[0]}."

9. Чтение и запись файлов

Чтение

Читай файл строку за строкой.

> while IFS= read -r line; do > echo "Получено: $line" > done < irc_messages.log > Запись > Пиши в файл.
> echo "Сообщение отправлено на $server" >> irc_log.txt

10. Ввод и вывод

Перенаправление вывода

Сохраняй результат команды.

nc -z $server $port > /dev/null 2>&1

Pipes

Соединяй команды через pipe.

echo "Hello IRCWorld" | tr 'a-z' 'A-Z'

11. Управление процессами

Фоновые процессы

Запусти команду в фоне.

> ping $server **&**

Завершение процесса

Останови процесс.

kill %1

12. Отладка

Используй set -x для отладки.

set -x
connect_to_server "irc.example.com"
set +x

13. Аргументы командной строки

Используй входные аргументы в своём скрипте.

if [ "$1" = "start" ]; then echo "Запускаю IRC-клиент..." fi

14. Cron Jobs

Автоматизируй скрипты через Cron.

0 0 * * * /path/to/irc_script.sh

Теперь ты знаешь основные инструменты Bash-программирования. Давай перейдём к практическим примерам, чтобы сразу начать работать.

Практические примеры с Linux и IRC

1. Автоматический вход и отправка сообщения в IRC-канал

Этот скрипт автоматически подключается к IRC-серверу, входит в канал и отправляет сообщение.

#!/bin/bash

server="irc.example.com"
port=6667
nickname="MeinNick"
channel="#meinchannel"
message="Hallo, dies ist eine automatische Nachricht!"

exec 3<>/dev/tcp/$server/$port

echo "NICK $nickname" >&3
echo "User $nickname 0 * :$nickname" >&3
sleep 5
echo "JOIN $channel" >&3
sleep 2
echo "PRIVMSG $channel :$message" >&3

2. Мониторинг IRC-канала с автоматическим ответом

Этот скрипт следит за сообщениями в IRC-канале и автоматически отвечает на определённые ключевые слова.

#!/bin/bash

server="irc.example.com"
port=6667
nickname="BotNick"
channel="#meinchannel"

exec 3<>/dev/tcp/$server/$port

echo "NICK $nickname" >&3
echo "User $nickname 0 * :$nickname" >&3
sleep 5
echo "JOIN $channel" >&3

while IFS= read -r line <&3; do
    echo "$line"
    if [[ "$line" == *"hello"* ]]; then
        echo "PRIVMSG $channel :Hallo! Wie kann ich helfen?" >&3
    fi
done

3. Сбор статистики IRC-канала

Собирай информацию об активности в IRC-канале (например, количество сообщений от каждого пользователя) и сохраняй в файл.

#!/bin/bash

server="irc.example.com"
port=6667
nickname="StatBot"
channel="#meinchannel"
statsfile="channel_stats.txt"

exec 3<>/dev/tcp/$server/$port

echo "NICK $nickname" >&3
echo "User $nickname 0 * :$nickname" >&3
sleep 5
echo "JOIN $channel" >&3

declare -A user_stats

while IFS= read -r line <&3; do
    if [[ "$line" =~ ^:([^!]+)! ]]; then
        user="${BASH_REMATCH[1]}"
        ((user_stats["$user"]++))
    fi
done

Если ты хочешь изучать Bash, рекомендуем эту книгу на Amazon:

https://amzn.to/3WQnERX (это внешняя партнёрская ссылка на Amazon)

Назад к блогу
Share:

Nächster Artikel in Учебные материалы

Weiterlesen
Bash Scripting Tutorial для Linux

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