
🔥 Заказ на 20+ каналов — шанс выиграть iPhone 16 Pro
Массовые размещения дают просмотры в 2-3 раза дешевле и участие в розыгрыше
Подробнее

РегистрацияВойтиВойти
Скидка 3,5% на первые три заказа
Получите скидку на первые три заказа!
Зарегистрируйтесь и получите скидку 3,5% на первые рекламные кампании — промокод активен 7 дней.
13.8

BashTex | Linux
5.0
2
Авторский канал про мир Linux и Bash. Основная аудитория: системные администраторы, DevOps, Python-разработчики и другие.
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
- 3/72
- 7 дней
- Репост
1 час в топе / 24 часа в ленте
Количество:
%keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
1 258.74₽1 258.74₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
Упаковка структуры каталогов с фильтрацией
Когда нужно архивировать не весь каталог, а только часть - с фильтрацией и даже переименованием путей внутри архива - на помощь приходят
find
, tar
и его флаг --transform
.
▪️ Базовый пример: фильтруем по маске и архивируем
find project/ -type f -name "*.conf" > list.txt
tar -czf config_backup.tar.gz -T list.txt{}
Тут мы архивируем только .conf-файлы.
▪️ Добавим переименование путей внутри архива. Архивируем все из src/, но хотим, чтобы внутри архива это лежало как app/.
tar -czf app.tar.gz \
--transform='s|^src|app|' \
-C ./ src{}
--transform
использует sed-подобные выражения. Тут s|^src|app| означает: заменить в начале пути src на app.
▪️ Упаковка через find + --transform + относительные пути. Предположим, хотим архивировать только .sh и .py-файлы, заменив scripts/ на bin/ внутри архива:
find scripts/ -type f \( -name "*.sh" -o -name "*.py" \) > filelist.txt
tar -czf bin_scripts.tar.gz \
--transform='s|^scripts|bin|' \
-T filelist.txt{}
▪️ Упрощенный однострочник:
find scripts/ -type f -name "*.sh" \
| tar -czf archive.tar.gz --transform='s|^scripts|bin|' -T -{}
▪️ Продвинутый пример: исключения + трансформация + директория
find ./src -type f ! -name "*.tmp" \
| tar -czf src_clean.tar.gz \
--transform='s|^./src|clean_src|' \
-T -{}
BashTex 📱 #bash #utils609
13:47
02.09.2025
Планировщик задач с временными окнами: только ночью, только по будням, только в выходные
Иногда cron не подходит:
📍 нужно запустить задачу в определенное время суток,
📍 но не строго по расписанию, а если есть что обрабатывать,
📍 и не запускать ее днем, когда сервер под нагрузкой.
Тут пригодится встроенная проверка временных окон в скрипте, а cron пусть просто каждые 10 минут запускает "умный планировщик".
🛠 Пример: выполнение задачи только с 02:00 до 05:00 по будням
#!/bin/bash
#настройки временного окна
start_hour=2
end_hour=5
# день недели (1..5 = пн-пт)
dow=$(date +%u)
#часы сейчас
hour=$(date +%H)
#проверка: будний день и нужное время
if (( dow >= 1 && dow <= 5 )) && (( hour >= start_hour && hour < end_hour )); then
echo "[$(date)] Временное окно открыто. Выполняем задачу."
#здесь реальная задача:
/opt/backup/backup-db.sh
else
echo "[$(date)] Вне временного окна. Пропуск."
fi{}
▪️ Расширение: исключение праздников (по файлу)
holiday_file="/etc/holidays.txt"
today=$(date +%Y-%m-%d)
if grep -q "$today" "$holiday_file"; then
echo "Сегодня праздник. Задача не выполняется."
exit 0
fi{}
▪️ Альтернатива: запуск только по выходным с 3 до 6 утра
(( dow == 6 || dow == 7 )) && (( hour >= 3 && hour < 6 )) && run_task{}
▪️ Запуск через cron
*/10 * * * * /usr/local/bin/task_scheduler.sh >> /var/log/task.log 2>&1{}
BashTex 📱 #bash #utils766
13:26
03.09.2025
Печать таблиц с автошириной и выравниванием
column, awk, printf - минимализм, читаемость и стиль без excel и pandas. Bash-скрипты часто выводят списки, но без форматирования:
echo "user1 1234 active"
echo "user10 99 disabled"{}
Вывод «прыгает» - неудобно читать. Решаем с помощью:
column - автоширина и выравнивание
awk - гибкая фильтрация и формат
printf - точный контроль длины столбцов
▪️ Быстрое решение: column -t
#!/bin/bash
echo -e "USER ID STATUS\nuser1 1234 active\nuser10 99 disabled" | column -t{}
Результат:
USER ID STATUS
user1 1234 active
user10 99 disabled{}
-t = "табличный режим", разбивает по пробелам, автоширина.
▪️ Альтернатива: awk с выравниванием
awk '{ printf "%-10s %-6s %-10s\n", $1, $2, $3 }' <<< "user1 1234 active
user10 99 disabled"{}
Результат:
user1 1234 active
user10 99 disabled {}
Плюсы:
Точное выравнивание;
Подходит для чисел, выравненных по правому краю (%6s, %6d).
▪️ Автоматизация с массивом и printf
header=("USER" "ID" "STATUS")
rows=(
"user1 1234 active"
"user10 99 disabled"
"admin 5678 maintenance"
)
{
printf "%-10s %-6s %-12s\n" "${header[@]}"
for row in "${rows[@]}"; do
printf "%-10s %-6s %-12s\n" $row
done
} | column -t{}
▪️ Таблица из файла CSV
column -s, -t < users.csv{}
-s, - задает разделитель (запятая), -t - табличный вид.
BashTex 📱 #bash805
11:44
04.09.2025
Авторазрешение зависимостей скрипта через dynamic sourcing
В больших bash-проектах часто есть несколько вспомогательных файлов (.sh или .bash), которые содержат функции и настройки. Проблема в том, что:
📍Скрипт может запуститься в другом каталоге - пути сломаются
📍Некоторые модули могут отсутствовать или лежать в нестандартных местах
📍При изменении структуры проекта придётся вручную переписывать source
Решение: динамическое подключение модулей
1️⃣ Автоматический source по списку зависимостей
#!/bin/bash
set -e
# Список модулей, которые нужны для работы
modules=("logger.sh" "utils.sh" "net.sh")
# Каталоги для поиска
search_paths=(
"$PWD/lib"
"$PWD/modules"
"/usr/local/share/myscript"
)
for mod in "${modules[@]}"; do
found=0
for path in "${search_paths[@]}"; do
if [[ -f "$path/$mod" ]]; then
source "$path/$mod"
echo "[OK] Loaded $mod from $path"
found=1
break
fi
done
if (( !found )); then
echo "[ERROR] Module $mod not found" >&2
exit 1
fi
done{}
Такой подход позволяет легко добавлять новые пути в поиск - модуль подтянется сам.
2️⃣ Dynamic sourcing по зависимостям из конфигурации. Можно вынести список зависимостей в отдельный файл deps.txt:
logger.sh
utils.sh
net.sh{}
А в скрипте:
while IFS= read -r dep; do
found=0
for path in "${search_paths[@]}"; do
if [[ -f "$path/$dep" ]]; then
source "$path/$dep"
found=1
break
fi
done
(( found )) || { echo "[MISSING] $dep" >&2; exit 1; }
done < deps.txt{}
3️⃣ Поиск относительно текущего скрипта. Чтобы скрипт работал из любого места:
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/lib/logger.sh"{}
▪️ Плюсы подхода:
✅Нет жестких путей;
✅Можно запускать в разных окружениях;
✅Удобно для open-source проектов и shared-библиотек;
✅Легко расширять - просто добавь файл в deps.txt.
BashTex 📱 #bash786
12:23
08.09.2025
Автонастройка нового сервера по шаблону
Один скрипт - и свежий VPS готов к работе.
Скрипт будет:
📍Создать нового пользователя с sudo;
📍Настраивать SSH-ключи и запрещать парольный вход;
📍Отключать root-доступ;
📍Настраивать базовый firewall (ufw);
📍Обновлять пакеты
🛠 Сам скрипт:
#!/bin/bash
set -e
# --- Конфиг ---
NEW_USER="deploy"
SSH_KEY_URL="https://bashtex.com/id_rsa.pub"
ALLOW_PORTS=(22 80 443)
TIMEZONE="Europe/Moscow"
# --- 1. Обновление системы ---
apt update && apt upgrade -y
# --- 2. Создание пользователя ---
if ! id "$NEW_USER" &>/dev/null; then
adduser --disabled-password --gecos "" "$NEW_USER"
usermod -aG sudo "$NEW_USER"
fi
# --- 3. Установка SSH-ключа ---
mkdir -p /home/$NEW_USER/.ssh
curl -fsSL "$SSH_KEY_URL" -o /home/$NEW_USER/.ssh/authorized_keys
chmod 700 /home/$NEW_USER/.ssh
chmod 600 /home/$NEW_USER/.ssh/authorized_keys
chown -R $NEW_USER:$NEW_USER /home/$NEW_USER/.ssh
# --- 4. Настройка SSH ---
sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
# --- 5. Настройка UFW ---
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
for port in "${ALLOW_PORTS[@]}"; do
ufw allow "$port"
done
ufw --force enable
# --- 6. Часовой пояс ---
timedatectl set-timezone "$TIMEZONE"
echo "[OK] Сервер настроен!"{}
▪️ Как использовать. Скопировать скрипт на новый сервер:
scp setup_server.sh root@IP:/root/{}
Запустить:
ssh root@IP 'bash /root/setup_server.sh'{}
Готово. Теперь можно заходить по SSH ключом под $NEW_USER.
BashTex 📱 #bash804
13:03
09.09.2025
imageИзображение не доступно для предпросмотра
⚡️ RECURA — один из лучших каналов для разработчиков и программистов.
Канал ведёт практикующий DevOps-инженер, который ежедневно публикует:
• код, повышающий эффективность разработки
• лайфхаки и полезные трюки для Bash и Linux
• готовые решения для Docker и Kubernetes
• инструменты и утилиты для автоматизации
• полезные материалы и советы по информационной безопасности
Подпишись, чтобы быть востребованным специалистом.
659
10:07
10.09.2025
imageИзображение не доступно для предпросмотра
Когда я установлю Linux, я никому не скажу, но знаки будут
BashTex 📱 #юмор
838
12:08
10.09.2025
Однострочники: меньше кода - быстрее результат
Bash прекрасен тем, что может решить массу задач буквально одной строкой. Подборка полезных шаблонов, которые легко адаптировать под себя.
1️⃣ Быстрый поиск файла по имени
find / -type f -name "*.log" 2>/dev/null{}
Ищет .log файлы в системе, игнорируя ошибки доступа.
2️⃣ Топ-10 самых больших файлов
du -ah /path | sort -rh | head -n 10{}
Показывает, что занимает место.
3️⃣ Проверка доступности сайта
curl -Is https://bashtex.com | head -n1{}
Отдаёт HTTP-статус (200 OK, 404 Not Found и т.д.).
4️⃣ Массовое переименование файлов
for f in *.txt; do mv "$f" "${f%.txt}.bak"; done{}
Меняет расширение .txt на .bak у всех файлов в папке.
5️⃣ Замер времени выполнения команды
time tar -czf backup.tar.gz /data{}
Показывает, сколько заняла команда.
6️⃣ Быстрый бэкап с датой
tar -czf backup-$(date +%F).tar.gz /path/to/dir{}
Файл будет называться backup-2025-09-11.tar.gz
.
7️⃣ Мониторинг нагрузки в реальном времени
watch -n 1 "df -h / && free -m"{}
Каждую секунду показывает дисковое и RAM-состояние.
8️⃣ Удаление файлов старше N дней
find /tmp -type f -mtime +7 -delete{}
Чистит /tmp
от старых файлов.
9️⃣ Загрузка и распаковка архива
curl -L https://site.ru/file.tar.gz | tar -xz{}
Скачивает и сразу распаковывает.
1️⃣0️⃣ Поиск текста в файлах
grep -R "ERROR" /var/log/{}
Находит все упоминания ERROR в логах.
BashTex 📱 #bash505
14:20
11.09.2025
imageИзображение не доступно для предпросмотра
Хочешь изучать DevOps? Но не знаешь где взять информацию и четкий план?
💪 Тогда лови бесплатный мета-курс Devops Roadmap - это расширенный чек-лист, который поможет вам сориентироваться в мире DevOps и стать крутым спецом.
👀 В мета-курсе перечислены все основные разделы и навыки, которыми должен обладать DevOps инженер: от Linux до программирования.
✔️А еще он будет полезен при подготовке к собеседованиям.
👽 Кстати, бонусом крутой канал о девопс. Там тоже самые свежие IT-новости, полезные советы от DevOps-инженера с 20-летним стажем, эксклюзивные материалы, релизы топовых инструментов, обзоры вакансий и личный взгляд на девопс-сферу.
1
12:15
13.09.2025
close
С этим каналом часто покупают
Отзывы канала
keyboard_arrow_down
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
5.0
5 отзыва за 6 мес.
Превосходно (100%) За последние 6 мес
g
**gadevops.mktg@*****.com
на сервисе с сентября 2024
25.06.202511:39
5
Оперативное размещение
Показать еще
Новинки в тематике
Лучшие в тематике
keyboard_double_arrow_left
shopping_cart
Каналов:
0
Подписчиков:
0
Просмотров:
lock_outline
Итого:
0.00₽
Перейти в корзину
Очистить корзину
Вы действительно хотите очистить корзину?
Вы снова сможете добавить каналы в корзину из каталога
Вы снова сможете добавить каналы в корзину из каталога
Очистить
Отменить
Комментарий