es
Feedback
Bash Советы

Bash Советы

Ir al canal en Telegram

🚀 Секреты и советы по Bash 🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале. 🔹 Автоматизация, скрипты и оптимизация работы в Linux. 🔹 Стать мастером Bash легко – просто подпишись! По всем вопросам @evgenycarter

Mostrar más
2 748
Suscriptores
Sin datos24 horas
+27 días
-1130 días
Archivo de publicaciones
🔍 Обработка содержимого файла в Bash Часто при работе с файлами в Bash применяют вложенные циклы. Внешний цикл перебирает строки файла, а внутренний — обрабатывает каждую строку по отдельности. Этот метод особенно полезен для работы с CSV-файлами или другими текстовыми файлами с разделителями. Для правильной обработки данных можно использовать переменную окружения IFS (Internal Field Separator), задавая нужный символ-разделитель. 📌 Пример кода:

IFS=$'\n'  # Устанавливаем разделитель строк
for entry in $(cat /etc/passwd)  # Читаем файл построчно
do
    echo "Значения в строке: $entry"
    IFS=:  # Меняем разделитель для обработки полей
    for value in $entry  # Разбираем строку по полям
    do
        echo "  -> $value"
    done
done
📌 Что делает этот скрипт? - Читает файл /etc/passwd построчно - Для каждой строки разбивает данные по ":" (разделителю в файле) - Выводит каждое поле строки отдельно ⚠️ Важно! При обработке больших файлов такой способ может быть неэффективным из-за использования подстановки команд $(cat file). Лучше применять while read, например:

while IFS=: read -r user pass uid gid info home shell
do
    echo "Пользователь: $user, UID: $uid, Домашняя папка: $home"
done < /etc/passwd
Такой вариант работает быстрее и не создает проблем с пробелами в строках! 🚀 👉 @bash_srv

📌 Сравнение строк в Bash В Bash можно сравнивать строки разными способами. 🔹 Операторы сравнения строк | Оператор| Описание
📌 Сравнение строк в Bash В Bash можно сравнивать строки разными способами. 🔹 Операторы сравнения строк | Оператор| Описание |-----------|---------------------------------| | == | Строки равны | != | Строки не равны | < | Меньше по ASCII (нужен [[ ) | > | Больше по ASCII (нужен [[ ) | -z | Строка пустая | -n | Строка не пустая 🔹 Примеры использования 1️⃣ Проверка равенства строк:

str1="hello"
str2="world"

if [[ "$str1" == "$str2" ]]; then
    echo "Строки равны"
else
    echo "Строки разные"
fi
2️⃣ Проверка, что строка непустая:

if [[ -n "$str1" ]]; then
    echo "Переменная str1 содержит: $str1"
fi
3️⃣ Проверка, что строка пустая:

if [[ -z "$str1" ]]; then
    echo "Переменная str1 пустая"
fi
4️⃣ Сравнение строк по алфавиту (ASCII-кодам):

if [[ "apple" < "banana" ]]; then
    echo "apple идёт раньше banana"
fi
5️⃣ Сравнение строк с case:

case "$str1" in
    "hello") echo "Привет!";;
    "bye") echo "Пока!";;
    *) echo "Неизвестная команда";;
esac
6️⃣ Игнорируем регистр при сравнении:

str1="Hello"
str2="hello"

if [[ "${str1,,}" == "${str2,,}" ]]; then
    echo "Строки равны (без учёта регистра)"
fi
🔹 ${str,,} — приводит строку к нижнему регистру (работает в Bash 4+). 👉@bash_srv

🔍 Проверки файлов в Bash Работая с файлами и директориями в Bash, часто необходимо проверять их существование, права доступа и другие атрибуты. Для этого используются встроенные проверки: 📂 Проверка существования и типа файла: - -d file — файл существует и является директорией - -e file — файл существует (не важно, что это) - -f file — файл существует и является обычным файлом 🔑 Проверка прав доступа: - -r file — файл существует и доступен для чтения - -w file — файл существует и доступен для записи - -x file — файл существует и является исполняемым 📏 Проверка размера и времени модификации: - -s file — файл существует и не пуст - file1 -nt file2file1 новее file2 - file1 -ot file2file1 старше file2 👤 Проверка владельца и группы: - -O file — файл существует и принадлежит текущему пользователю - -G file — файл существует и принадлежит группе текущего пользователя 📝 Пример использования:

mydir="/path/to/directory"

if [ -d "$mydir" ]; then
    echo "Директория $mydir существует"
    cd "$mydir"
    ls
else
    echo "Директория $mydir не существует"
fi
Эти проверки помогут вам создавать надежные скрипты для автоматизации задач в Linux! 🚀 👉 @bash_srv

🔥 Nohup — создаём "бессмертные" процессы в Linux Когда запускаешь команду в терминале, она обычно завершается при его закрытии. Но если нужно, чтобы процесс жил дальше, даже после выхода из сеанса, на помощь приходит nohup! 💡 Как это работает? Просто добавляем nohup перед командой и & в конце:

nohup your_command &
Теперь процесс не будет зависеть от терминала и продолжит работу даже после выхода. 📌 Пример: Запускаем браузер Firefox, который не закроется при выходе из терминала:

nohup firefox https://freecodecamp.org &
📂 Куда попадает вывод? По умолчанию весь вывод команды записывается в файл nohup.out в текущей директории. Если нужно изменить путь, можно сделать так:

nohup myscript.sh > mylog.log 2>&1 &
🚀 Используйте nohup, чтобы запускать долгие процессы без привязки к терминалу! 👉 @bash_srv

📌 Калькулятор в консоли Bash В Bash можно выполнять простые математические вычисления с помощью встроенной конструкции $(( )). Это позволяет быстро выполнять арифметические операции прямо в терминале. Давайте разберёмся подробнее. 🔹 Основные операции + Сложение, - Вычитание, * Умножение, / Деление (целочисленное), % Остаток от деления, ** Возведение в степень 🔹 Примеры использования 📍 Простые вычисления Просто вводим выражение в echo:

echo $((2 + 3))
💡 Вывод: 5 Умножение:

echo $((6 * 7))
💡 Вывод: 42 Деление (целочисленное!):

echo $((10 / 3))
💡 Вывод: 3 (без дробной части) Остаток от деления:

echo $((10 % 3))
💡 Вывод: 1 📍 Сохранение результата в переменную

result=$((15 - 7))
echo "Результат: $result"
💡 Вывод: Результат: 8 📍 Использование с переменными

a=5  
b=10  
sum=$((a + b))  
echo "Сумма: $sum"
💡 Вывод: Сумма: 15 📍 Возведение в степень

echo $((2 ** 3))
💡 Вывод: 8 🔹 Учитываем важные моменты ✅ Целочисленное деление В bash при делении берётся только целая часть. Для получения дробного результата используйте bc:

echo "10 / 3" | bc -l
💡 Вывод: 3.3333333333Отрицательные числа Нужно ставить пробел перед минусом:

echo $((-5 + 3))
💡 Вывод: -2 🔹 Комплексные выражения Можно вычислять сложные выражения с приоритетом операций:

echo $(((10 + 5) * 2 - 3))
💡 Вывод: 27 🔹 Инкремент и декремент Можно увеличивать или уменьшать переменные:

x=5  
((x++))  # Увеличить на 1  
echo $x  # 6  

((x--))  # Уменьшить на 1  
echo $x  # 5
🔹 Альтернативный способ: expr Можно использовать команду expr:

expr 5 + 3
💡 Вывод: 8 Но тут важно ставить пробелы между числами и операциями. 🏁 Итог Использование $(( )) — это удобный и быстрый способ выполнять математические операции прямо в терминале. Если нужны дробные числа или более сложные вычисления, можно использовать bc. Попробуйте сами! 🚀 👉 @bash_srv

Автоочистка памяти RAM в Linux 🧹 Если сервер начинает тормозить из-за перегруженной оперативной памяти, можно использовать скрипт для её очистки. 🛠️ Скрипт:

#!/bin/bash

echo "Освобождение памяти..."
sync && echo 3 > /proc/sys/vm/drop_caches
echo "Готово! Свободная память увеличена."
📌 Как использовать: 1. Сохраните скрипт в файл, например clear_ram.sh 2. Дайте права на выполнение:

   chmod +x clear_ram.sh
   
3. Запустите от root:

   sudo ./clear_ram.sh
   
🕒 Автоматизация через cron Можно настроить автоматический запуск, например, раз в час:

sudo crontab -e
Добавьте строку:

0 * * * * /path/to/clear_ram.sh
Теперь сервер будет поддерживать оперативную память в чистоте без вашего участия! 🚀 👉@bash_srv

Как увидеть команды, которые выполняются внутри bash скрипта В Bash есть несколько способов увидеть команды, которые выполняются внутри скрипта. Это может быть полезно для отладки и понимания логики выполнения. 1️⃣ Включение режима отладки с set Добавьте в начало скрипта строку:

set -x
Это включает режим трассировки, и Bash будет выводить команды перед их выполнением. Чтобы отключить трассировку, используйте:

set +x
Пример:

#!/bin/bash
set -x  # Включаем отладку

echo "Начало скрипта"
ls /etc
pwd

set +x  # Отключаем отладку
echo "Конец скрипта"
2️⃣ Запуск скрипта с параметром -x Можно включить отладку при запуске скрипта:

bash -x script.sh
Это аналогично set -x, но без необходимости изменять сам скрипт. 3️⃣ Использование PS4 Можно изменить переменную PS4, чтобы видеть, например, время выполнения команд:

export PS4='+ $(date "+%T") '
set -x
Теперь трассировка будет включать метки времени. 4️⃣ Логирование вывода в файл Если хотите записать трассировку в файл:

bash -x script.sh &> debug.log
Так весь вывод (и команды, и их результат) запишется в debug.log. Эти методы помогут вам анализировать выполнение скриптов и находить ошибки! 🚀 👉@bash_srv

🔐 Шифруем файлы в Linux с GPG! Данный Bash-скрипт 🔒 шифрует файл и предлагает удалить оригинал после успешного шифрования. 📌 Как работает скрипт: ✅ Проверяет, существует ли файл ✅ Шифрует его с помощью gpg -c ✅ Просит подтверждение перед удалением оригинала ✅ Выводит понятные сообщения 📜 Код скрипта:

#!/usr/bin/env bash

echo "🔐 GPG File Encryption Script"
echo "📂 Make sure this script is in the same directory as the file you want to encrypt."

read -rp "Enter the exact file name (with extension): " file

# Проверяем, существует ли файл
if [[ ! -f "$file" ]]; then
    echo "❌ Error: File '$file' not found!"
    exit 1
fi

# Шифруем файл
gpg -c "$file"

# Проверяем, успешно ли создан зашифрованный файл
if [[ -f "$file.gpg" ]]; then
    echo "✅ File successfully encrypted: $file.gpg"
    read -rp "Do you want to delete the original file? (y/N): " confirm
    if [[ "$confirm" =~ ^[Yy]$ ]]; then
        rm -f "$file"
        echo "🗑 Original file removed."
    else
        echo "🔄 Original file kept."
    fi
else
    echo "❌ Encryption failed!"
fi
🚀 Как использовать? 1️⃣ Запустите скрипт в той же папке, где находится файл 2️⃣ Введите имя файла 3️⃣ Укажите пароль для шифрования 4️⃣ Выберите, удалять ли оригинал 💡 Дешифровать файл можно командой:

gpg -d файл.gpg > файл
🔥 Теперь ваши файлы под защитой! 🔐 👉@bash_srv

📌 Работа с FTP 🌐📂 Работа с FTP в Bash-скриптах упрощает автоматизированную передачу файлов. Разберём основные команды! 🔹 1. Загрузка файла на FTP

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
FILE="localfile.txt"

ftp -inv $HOST <<EOF
user $USER $PASS
put $FILE
bye
EOF
📌 Как это работает? 🔹 ftp -inv $HOST — Открываем FTP-соединение (без интерактивного режима) 🔹 user $USER $PASS — Логинимся 🔹 put $FILE — Загружаем файл 🔹 bye — Завершаем сеанс 🔹 2. Загрузка всех файлов из папки

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
LOCAL_DIR="/path/to/local/files"

ftp -inv $HOST <<EOF
user $USER $PASS
lcd $LOCAL_DIR
mput *
bye
EOF
📌 Команда mput * загружает все файлы из указанной локальной директории. 🔹 3. Скачивание файла с FTP

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
FILE="remotefile.txt"

ftp -inv $HOST <<EOF
user $USER $PASS
get $FILE
bye
EOF
📌 Команда get загружает файл с FTP на локальную машину. 🔹 4. Удаление файлов на FTP

ftp -inv $HOST <<EOF
user $USER $PASS
delete oldfile.txt
bye
EOF
📌 Удаляет файл oldfile.txt на сервере. 🚀 Автоматизируйте работу с FTP, добавляя скрипты в cron! 👉@bash_srv

📌 Типовые операции в Bash: Ввод-вывод и перенаправление 🎯 В Bash-скриптах важно уметь работать с вводом-выводом и перенаправлением потоков. Давайте разберём основные конструкции. 📥 Ввод Читаем данные от пользователя:

read -p "Введите имя: " name
echo "Привет, $name!"
Читаем несколько переменных:

read -p "Введите имя и возраст: " name age
echo "$name, вам $age лет."
Читаем из файла построчно:

while read line; do
  echo "Строка: $line"
done < файл.txt
📤 Вывод Вывод в стандартный поток (stdout):

echo "Это сообщение отобразится в консоли"
Вывод без новой строки:

echo -n "Введите пароль: "
Форматированный вывод:

printf "Имя: %s\nВозраст: %d\n" "Алиса" 25
🔄 Перенаправление ✅ Вывод в файл (перезапись)

echo "Привет, мир!" > output.txt
Вывод в файл (добавление)

echo "Новая строка" >> output.txt
Перенаправление ошибок

команда 2> error.log
Перенаправление вывода и ошибок

команда > output.log 2>&1
или

команда &> output.log
Передача данных через конвейер (pipeline)

ls -l | grep ".sh"
Использование /dev/null (отбрасывание вывода)

команда > /dev/null 2>&1
🎯 Эти операции помогут вам лучше управлять вводом-выводом в скриптах! 🚀 👉 @bash_srv

📌 Сортировка данных в консоли 🔹Основные команды сортировки 1️⃣ sort – основная утилита для сортировки строк в файле или потоке вывода.

sort файл.txt
🔹Сортирует строки в алфавитном порядке. 2️⃣ sort -r – сортировка в обратном порядке.

sort -r файл.txt
3️⃣ sort -n – сортировка чисел.

sort -n числа.txt
🔹Работает корректно с числами, учитывает их величину. 4️⃣ sort -h – сортировка с учётом суффиксов (K, M, G).

sort -h размер.txt
🔹Полезно для файловых размеров: 10K, 2M, 5G. 5️⃣ sort -k – сортировка по колонке.

sort -k2,2 -n данные.txt
🔹Здесь сортировка идёт по 2-й колонке (числовая). 6️⃣ sort | uniq – удаление дубликатов после сортировки.

sort файл.txt | uniq
🔹Показывает только уникальные строки. 🔥 Полезный трюк: сортировка процессов по использованию памяти

ps aux --sort=-%mem | head -10
🔹 Выводит топ-10 процессов по потреблению памяти. Используйте эти команды для эффективной работы в консоли! 🚀 👉@bash_srv

📌 Автоматическое удаление старых логов в Linux При администрировании серверов со временем накапливается много лог-файлов, которые занимают место. Этот простой скрипт автоматически удаляет файлы старше 30 дней в указанной директории.

#!/bin/bash

LOG_DIR="/var/log/myapp"  # Укажите путь к логам
DAYS=30  # Количество дней, после которых логи удаляются

find "$LOG_DIR" -type f -mtime +$DAYS -exec rm -f {} \;

echo "Удаление логов старше $DAYS дней завершено."
🔹 Как использовать? 1️⃣ Сохраните скрипт в файл, например, clean_logs.sh 2️⃣ Дайте ему права на выполнение:

   chmod +x clean_logs.sh
   
3️⃣ Добавьте в cron для автоматического выполнения раз в день:

   crontab -e
   
Добавьте строку:

   0 3 * * * /path/to/clean_logs.sh
   
Это запустит скрипт каждый день в 3 утра. 🎯 Теперь ваши логи не будут засорять дисковое пространство! 👉@bash_srv

📌 Очистка кэша памяти в Linux 🧹 Если сервер начинает тормозить из-за большого количества кешированной памяти, можно её сбросить без перезагрузки. Вот простой скрипт:

#!/bin/bash

# Освобождаем PageCache, dentries и inodes
sync; echo 3 > /proc/sys/vm/drop_caches

# Очищаем swap (необязательно)
swapoff -a && swapon -a

echo "Кэш памяти очищен!"
🔹 Как использовать? Сохраните скрипт, например, как clear_cache.sh, сделайте его исполняемым:

chmod +x clear_cache.sh
И запустите:

sudo ./clear_cache.sh
Можно добавить его в cron, чтобы очищать кэш автоматически, например, раз в день:

0 4 * * * /path/to/clear_cache.sh
🚀 Используй, если сервер начинает работать медленнее после долгой работы! 👉@bash_srv

🔥 Bash-скрипт для мониторинга дискового пространства 🔥 Системные администраторы часто сталкиваются с проблемой нехватки места на диске. Этот скрипт поможет отслеживать свободное пространство и отправлять уведомления, если оно падает ниже заданного порога. 📉💾 🖥 Скрипт для мониторинга:

#!/bin/bash

THRESHOLD=20  # Порог в % (измените по необходимости)
EMAIL="admin@example.com"  # Укажите свой email

df -h | awk 'NR>1 {print $5 " " $6}' | while read output; do
    usep=$(echo $output | awk '{print $1}' | sed 's/%//')
    partition=$(echo $output | awk '{print $2}')
    
    if [ "$usep" -ge "$THRESHOLD" ]; then
        echo "Внимание! Диск $partition заполнен на $usep%!" | mail -s "Предупреждение: мало места на $partition" $EMAIL
    fi
done
🔹 Как использовать: 1️⃣ Сохраните скрипт в файл, например disk_monitor.sh 2️⃣ Дайте ему права на выполнение:

   chmod +x disk_monitor.sh
   
3️⃣ Добавьте в crontab для автоматического запуска:

   crontab -e
   
Добавьте строку, чтобы скрипт запускался каждый час:

   0 * * * * /path/to/disk_monitor.sh
   
Теперь вы всегда будете в курсе, если место на сервере заканчивается! 🚀 👉@bash_srv

🛠 Мониторинг использования диска с автоматическим уведомлением 🛠 Если у вас есть сервер, важно следить за свободным местом
🛠 Мониторинг использования диска с автоматическим уведомлением 🛠 Если у вас есть сервер, важно следить за свободным местом на диске, чтобы избежать неожиданного отказа. Нижн скрипт, который проверяет использование диска и отправляет уведомление, если свободное место падает ниже заданного порога. 📜 Скрипт:

#!/bin/bash

THRESHOLD=20  # Установите порог (в процентах)
EMAIL="admin@example.com"  # Замените на свой email

# Получаем процент использования корневого раздела
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# Проверяем, превышает ли использование порог
if [ "$USAGE" -ge "$THRESHOLD" ]; then
    echo "⚠ Внимание! Свободное место на диске заканчивается. Использование: ${USAGE}%" | mail -s "Диск почти заполнен" "$EMAIL"
fi
🛠 Как использовать: 1️⃣ Сохраните скрипт, например, в файл disk_check.sh. 2️⃣ Сделайте его исполняемым:

   chmod +x disk_check.sh
   
3️⃣ Добавьте в cron для автоматического выполнения, например, каждые 10 минут:

   */10 * * * * /path/to/disk_check.sh
   
Теперь сервер будет сам следить за местом на диске и предупреждать вас! 🚀 👉@bash_srv

🎯 Мониторинг загрузки процессора и уведомление в Telegram 🎯 Сервер начал тормозить, а вы не знаете почему? 🤔 Напишите скрипт, который мониторит загрузку CPU и при превышении порога отправляет уведомление в Telegram! 📌 Скрипт для мониторинга CPU и отправки уведомлений

#!/bin/bash

# Порог загрузки CPU в процентах
THRESHOLD=80

# Токен бота и ID чата в Telegram
TELEGRAM_BOT_TOKEN="your_bot_token"
CHAT_ID="your_chat_id"

# Получаем среднюю загрузку CPU за 1 минуту
CPU_LOAD=$(awk '{print $1}' /proc/loadavg | awk '{print int($1)}')

# Проверяем, превышен ли порог
if [ "$CPU_LOAD" -ge "$THRESHOLD" ]; then
    MESSAGE="⚠️ Внимание! Высокая загрузка CPU: ${CPU_LOAD}%"
    curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
         -d chat_id="$CHAT_ID" \
         -d text="$MESSAGE"
fi
🔹 Как использовать? 1️⃣ Сохраните скрипт в файл, например, cpu_monitor.sh. 2️⃣ Дайте права на выполнение:

   chmod +x cpu_monitor.sh
   
3️⃣ Добавьте в cron для проверки каждые 5 минут:

   crontab -e
   
Добавьте строку:

   */5 * * * * /path/to/cpu_monitor.sh
   
Теперь при высокой нагрузке процессора вы получите уведомление в Telegram и сможете быстро принять меры! 🚀 👉@bash_srv

🔹 Автоматическое удаление старых файлов в директории 🔹 Если на сервере накопилось много временных файлов, их можно автоматически удалять по времени. Вот скрипт, который удаляет файлы старше 7 дней из указанной директории:

#!/bin/bash

DIR="/var/log/tmp"  # Укажите свою директорию
DAYS=7  # Количество дней

# Удаление файлов старше $DAYS дней
find "$DIR" -type f -mtime +$DAYS -exec rm -f {} \;

echo "Старые файлы в $DIR удалены!"
📌 Разбор кода: 🔹 find "$DIR" -type f -mtime +$DAYS — ищет файлы старше $DAYS дней. 🔹 -exec rm -f {} \; — удаляет найденные файлы. 🔹 Запускать можно по cron, например, раз в день:

0 3 * * * /path/to/script.sh
(Выполнится в 3 часа ночи) Используйте с умом, чтобы случайно не удалить важные файлы! 🚀 👉@bash_srv

🔥 Оптимизация логов с помощью logrotate в Linux 🔥 Если у вас сервер генерирует тонны логов, важно правильно их управлять, чтобы они не раздували диск до отказа. 🛑 Используем logrotate – мощный инструмент для автоматического управления логами! 📌 Пример конфигурации /etc/logrotate.d/custom_logs:

/var/log/myapp/*.log {
    daily                 # Ротация каждый день
    rotate 7              # Хранить 7 старых логов
    compress              # Сжимать старые логи
    delaycompress         # Откладывать сжатие на один цикл ротации
    missingok             # Игнорировать ошибку, если лог отсутствует
    notifempty            # Не ротировать, если лог пуст
    create 0640 root root # Создавать новые файлы с нужными правами
    postrotate
        systemctl reload myapp.service > /dev/null 2>&1 || true
    endscript
}
Как применить изменения? Проверяем конфиг перед запуском:

logrotate -d /etc/logrotate.d/custom_logs
Применяем вручную (если нужно):

logrotate -f /etc/logrotate.d/custom_logs
Так логи не будут разрастаться, а сервер останется в порядке! 🚀 👉@bash_srv

🔍 Мониторинг загрузки процессора в реальном времени ⏳ Хотите быстро проверить загрузку процессора без установки сторонних утилит? Вот удобный Bash-скрипт, который показывает загрузку CPU в реальном времени! 🚀 📜 Скрипт: #!/bin/bash while true; do clear echo "🖥 CPU Load Monitor" echo "----------------------" mpstat 1 1 | awk '/Average/ {print "Загрузка CPU: " 100 - $NF "%"}' sleep 1 done 📌 Как использовать? 1️⃣ Установите sysstat, если ещё не установлено: sudo apt install sysstat # Для Debian/Ubuntu sudo yum install sysstat # Для CentOS/RHEL 2️⃣ Сохраните скрипт в файл cpu_monitor.sh. 3️⃣ Дайте ему права на выполнение: chmod +x cpu_monitor.sh 4️⃣ Запустите: ./cpu_monitor.sh 💡 Скрипт каждую секунду обновляет нагрузку процессора, показывая процент использования. Отличный вариант для быстрого мониторинга без лишних инструментов! 🔥 👉@bash_srv

Добро пожаловать в наш Telegram-канал о Bash и Linux! Здесь вы найдете полезные советы, лайфхаки и мощные команды, которые помогут вам автоматизировать задачи, ускорить работу в терминале и глубже понять возможности Bash. Подписывайтесь, задавайте вопросы и делитесь своим опытом! 🚀 #Bash #Linux #Скрипты #Автоматизация