ru
Feedback
LinuxSkill - Сводки с прода и Шпаргалки

LinuxSkill - Сводки с прода и Шпаргалки

Открыть в Telegram

Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Больше

📈 Аналитический обзор Telegram-канала LinuxSkill - Сводки с прода и Шпаргалки

Канал LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 739 подписчиков, занимая 11 148 место в категории Технологии и приложения и 59 588 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 739 подписчиков.

Согласно последним данным от 02 сентября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -53, а за последние 24 часа — -3, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 11.96%. В первые 24 часа после публикации контент обычно набирает 4.94% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 285 просмотров. В течение первых суток публикация набирает 531 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как docker, linux, bash, devops, скрипт.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Благодаря высокой частоте обновлений (последние данные получены 03 сентября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

10 739
Подписчики
-324 часа
-177 дней
-5330 дней
Архив постов
🔧 Укрощаем bash: 15 железобетонных функций для профи Самописные функции в конфигурации оболочки экономят часы рутины, но часто пишутся "на коленке" и падают с синтаксическими ошибками, если забыть передать им аргумент. Я собрал 15 убойных функций для твоего конфига и добавил в них жесткие проверки и значения по умолчанию. Забирай в продакшен. Навигация и управление файлами

# 1. Создать директорию и сразу в нее перейти
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# 2. Подняться на N уровней вверх. Если аргумент не передан, поднимаемся на 1 (защита от syntax error)
up() {
  local d=""
  local limit="${1:-1}"
  for ((i=1; i<=limit; i++)); do d+="../"; done
  cd "$d"
}

# 3. Быстрый поиск файла по имени в текущей директории
ff() {
  find . -type f -iname "*$1*"
}

# 4. Быстрый поиск директории по имени
fd() {
  find . -type d -iname "*$1*"
}

# 5. Узнать размер директории. Если путь не передан, считаем текущую (.)
dirsize() {
  du -sh "${1:-.}"
}
Работа с процессами и историей

# 6. Найти процесс, отсекая из вывода сам grep
psg() {
  ps aux | grep -i "$1" | grep -v grep
}

# 7. Посмотреть N последних введенных команд (по умолчанию 10)
h() {
  history | tail -n "${1:-10}"
}

# 8. Быстрый поиск по истории команд
hg() {
  history | grep "$1"
}
Сеть и порты

# 9. Поднять HTTP-сервер в текущей папке (по умолчанию порт 8000)
serve() {
  python3 -m http.server "${1:-8000}"
}

# 10. Узнать свой внешний IP-адрес
myip() {
  curl -s ifconfig.me
}

# 11. Узнать IP-адрес нужного домена
ipinfo() {
  dig +short "$1"
}

# 12. Показать все открытые слушающие порты
ports() {
  ss -tuln
}
Система и безопасность

# 13. Полная очистка терминала вместе с буфером прокрутки
cls() {
  clear && printf '\e[3J'
}

# 14. Универсальная распаковка архива с проверкой существования файла
extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.bz2|*.tbz2) tar xjf "$1" ;;
      *.tar.gz|*.tgz)   tar xzf "$1" ;;
      *.bz2)            bunzip2 "$1" ;;
      *.rar)            unrar x "$1" ;;
      *.gz)             gunzip "$1" ;;
      *.tar)            tar xf "$1" ;;
      *.zip)            unzip "$1" ;;
      *.7z)             7z x "$1" ;;
      *)                echo "Неизвестный архив" ;;
    esac
  else
    echo "Файл '$1' не найден"
  fi
}

# 15. Безопасный rm: защита от пустого вызова и регистронезависимое подтверждение (Y/y)
rm() {
  if [ -z "$1" ]; then
    command rm
    return
  fi
  ls -FCsd -- "$@"
  read -p 'Удалить безвозвратно? [y/N] ' ans
  if [[ "$ans" =~ ^[Yy]$ ]]; then
    command rm -rf -- "$@"
  fi
}
Все конструкции используют конструкцию ${1:-значение}, которая спасает bash от падения при пустых переменных. Добавь нужные блоки в свой файл конфигурации и выполни команду source ~/.bashrc для применения изменений. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #CLI #DevOps #Bashrc

💀 Твой демон падает из-за изоляции? Учим AppArmor работать правильно Использование aa-disable или teardown для неработающего демона полностью снимает MAC-изоляцию на продакшене. Вместо выгрузки защиты мы переведем профиль в режим обучения, соберем реальные пути и вернем жесткий контроль. Помни: AppArmor привязывает правила к абсолютному пути бинарника, а не к меткам типов, как это делает SELinux. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #AppArmor #Security #Ubuntu #DevOps

🎯 Инкрементные бэкапы без костылей: хардкорная шпаргалка по tar -g Ежедневное создание полных архивов убивает дисковое пространство и перегружает подсистему ввода-вывода. Показываю, как собирать только измененные файлы и правильно отслеживать удаления, не копируя терабайты лишних данных. Настрой инкрементное копирование, чтобы радикально снизить нагрузку на дисковую подсистему серверов. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #Backup #Tar #DevOps #SysAdmin

Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса. Бесплатный урок курса «Вайб-кодинг: создание цифров
Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса. Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ» Lovable может за минуты собрать экран, который выглядит как почти готовый интерфейс. Но результат зависит не от «магии нейросети», а от того, насколько точно вы ставите задачу. Один расплывчатый запрос даст случайный макет, а правильно собранный системный промпт — понятную структуру, единый стиль и экран, который уже можно показывать команде, заказчику или использовать для проверки идеи. На открытом уроке 2 июля в 20:00 разберём, как формулировать задачи для Lovable, чтобы получать предсказуемый результат с первой попытки. Поговорим о структуре системного промпта, ключевых словах, которые помогают превратить текст в качественный интерфейс, и способах доработки результата через встроенный редактор и повторные запросы. Отдельно обсудим, как управлять компонентами, просить нейросеть переиспользовать элементы и сохранять единый визуальный стиль. Урок не для тех, кто ждёт, что Lovable «сам всё поймёт», не готов уточнять задачу и хочет получать качественный интерфейс без структуры, контекста и итераций. 👉 Записаться: https://otus.pw/Aoqd/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🎯 Твой DROP пропускает пакеты? Исправляем фатальную ошибку лимитов nftables Stateless-фаерволы сверяют каждый пакет со всем списком правил, сжигая ресурсы. Stateful-фаервол с conntrack помнит сессии и пропускает 99% трафика первым же правилом. Показываю, как написать эталонный конфиг и не попасть в ловушку лимитирования, из-за которой часть мусорного трафика пробивает твою защиту. Перед применением policy drop без разрешающего правила SSH ты заблокируешь сам себя — сначала всегда прописывай свой доступ. Всегда держи второй открытый сеанс для отката и не забудь сделать systemctl enable nftables, чтобы защита пережила перезагрузку. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Security #nftables #Firewall #DevOps

❓Администрируете Linux «по наитию» и гасите инциденты по ночам, вместо того чтобы управлять инфраструктурой системно? 🧠 На повышении квалификации «Администратор Linux. Продвинутый уровень» вы разложите Linux по полочкам: от установки, загрузки и работы с файловыми системами до сетей, сервисов, мониторинга, резервного копирования и безопасности. Будете разбирать реальные кейсы, а не учебные примеры уровня «домашнего сервера». 💪 После обучения вы сможете уверенно подбирать конфигурации под нагрузки, оптимизировать производительность, строить отказоустойчивые схемы, настраивать Zabbix/Prometheus, Nginx, базы данных, файрволы и бэкапы. Эти навыки — прямое усиление вашей позиции как системного администратора, DevOps-инженера или backend-разработчика. 🎁 Пройди вступительный тест и получи в подарок запись урока «Простой роутер на Linux». Десятки других записей будут разблокированы на странице курса. 👉 Пройти вступительный тест: https://otus.pw/QabsT/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

📦 Ломаются зависимости при unshare? Настраиваем изоляцию как профи Ошибки libc.so возникают, когда ты меняешь корень через chroot в пустую файловую систему без библиотек. Оставим ФС хоста на месте и изолируем только namespaces: все бинарники останутся доступны, а процессы и сеть будут в глухой песочнице. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Namespaces #Containers #DevOps #SysAdmin

🕰 Твои скрипты падают в systemd? Идеальный конфиг .timer Демоны systemd работают с сильно урезанным окружением $PATH. Из-за этого вызовы обычных утилит внутри сервисов часто падают без видимых причин. Показываю, как написать железобетонный конфиг таймера, защититься от шторма нагрузки и отловить синтаксические ошибки еще до деплоя. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #DevOps #Timers #SysAdmin

🚫 Хватит "тыкать" мышкой! Переходи на тёмную сторону консоли. 2 курса, чтобы понять Linux с нуля до senior-уровня. 🧠 Курс «Администратор Linux. Базовый уровень» Курс OTUS создан для тех, кто хочет перейти от случайного опыта к уверенной работе с сервером. Вы освоите основы операционной системы, научитесь работать в Bash, поймёте, как устроены сети, а также научитесь запускать веб-сервисы, работать с MySQL, Docker, Git, Prometheus и Grafana. Это фундамент, без которого невозможен дальнейший рост. 🎁 Пройди вступительный квиз и получи в подарок записи двух уроков: «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами» и «Вся правда о рынке труда, или как быть востребованным в современных реалиях». 👉 Пройти квиз: https://otus.pw/jYa7/ 🧠 Курс «Администратор Linux. Продвинутый уровень» После обучения вы сможете уверенно подбирать конфигурации под нагрузки, оптимизировать производительность, строить отказоустойчивые схемы, настраивать Zabbix/Prometheus, Nginx, базы данных, файрволы и бэкапы. Эти навыки — прямое усиление вашей позиции как системного администратора, DevOps-инженера или backend-разработчика. 🎁 Пройди вступительный тест и получи в подарок запись урока «Простой роутер на Linux». Десятки других записей будут разблокированы на странице курса. 👉 Пройти вступительный тест: https://otus.pw/XcmG/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🔧 Забудь про сотни пайпов: хардкорная фильтрация логов через grep -E Базовый синтаксис grep (BRE) заставляет экранировать каждый спецсимвол, превращая сложные фильтры в нечитаемую кашу из слешей. Расширенные регулярные выражения (ERE) через параметр -E позволяют использовать группировки и квантификаторы напрямую. Классическая утилита egrep устарела (deprecated), поэтому на современных серверах всегда используй grep -E. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #Grep #DevOps #SysAdmin

💀 Забудь про тормоза strace: мониторим процессы через eBPF Привычный strace безжалостно тормозит приложения, прерывая их на каждом системном вызове. Сейчас покажу, как фильтровать события прямо в ядре через bcc-tools, ловить короткоживущие процессы и отлаживать I/O с нулевым оверхедом. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #eBPF #BCC #DevOps #Security

🔪 Забудь про grep: ультимативная шпаргалка по journalctl Обычные текстовые логи отнимают время. Переходи на journalctl, чтобы находить причины сбоев мгновенно по бинарным метаданным, без лишнего мусора. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #Journalctl #DevOps #SysAdmin

💣 find -delete сносит всё? Исправляем фатальные ошибки зачистки Наивный конвейер с xargs rm легко ломается о пробелы и кавычки в именах файлов, удаляя нужные данные. Показываю, как безопасно зачищать систему и работать со списками файлов, не боясь кривых имен. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #xargs #rm #find

⏱ Таймеры systemd: продвинутая альтернатива cron Они требуют чуть больше строчек, чем crontab, но из коробки дают защиту от наслаивания процессов, контроль зависимостей и мощное логирование в journald. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #DevOps #Timers #SysAdmin

🛡 Железобетонный SSH: харденинг без ошибок Внедряй эти параметры в свои пайплайны, и твой сервер станет неприступной крепостью. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #SSH #Security #Hardening #SysAdmin #DevOps

⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код. 🎥 Пригла
⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код. 🎥 Приглашаем на вебинар - Продвинутый Bash На вебинаре вы узнаете: - Связка set -euo pipefail навсегда исключит тихое проглатывание ошибок и потерю данных в конвейерах. - Нативные подстановки Bash заменят тысячи ресурсоемких вызовов sed и сэкономят CPU. - Регулярный мониторинг системных профилей защитит продакшен от перехвата команд троянами. - Грамотный перехват сигналов через trap обеспечит безопасное сворачивание процессов при сбоях. В результате вебинара вы: - Замените многоуровневые костыли лаконичной логикой на базе ассоциативных массивов. - Исключите утечки глобальных переменных через жесткую изоляцию областей видимости в функциях. - Внедрите нативную построчную трассировку скриптов вместо примитивного дебага echo-принтами. - Начнете напрямую пробрасывать переменные окружения в SystemD-юниты для надежного старта сервисов. 🧠 Открытый урок проходит в преддверии старта курса «Администратор Linux. Продвинутый уровень» 👉 Для участи зарегистрируйтесь: https://otus.pw/7CHT/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

💣 Cron для сеньоров: защита от дублей и правильные логи Держи концентрат боевых примеров для crontab, которые нужны на реальном продакшене. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Cron #DevOps #Bash #SysAdmin

🎥 Вебинар: Введение в Docker: контейнеризация приложений в Linux На вебинаре вы узнаете: - Как контейнеры делят одно ядро хо
🎥 Вебинар: Введение в Docker: контейнеризация приложений в Linux На вебинаре вы узнаете: - Как контейнеры делят одно ядро хоста без тормозов гипервизора и навсегда избавляют от конфликта зависимостей. - Правду о неидеальной изоляции Docker и рисках взлома сервера из-за скачивания левых образов от "Васи Пупкина". - Почему сеть bridge режет скорость под нагрузкой и зачем базам данных нужны только проверенные файловые системы вроде ext4. - Как правильно дробить монолит на микросервисы, соблюдая жесткое правило: один сервис — один контейнер. В результате вебинара вы: - Усвоите принцип эфемерности (stateless) и навсегда отучитесь лезть внутрь работающего контейнера для установки пакетов или правки конфигов. - Научитесь железобетонно сохранять данные при перезапусках, отвязав их от жизненного цикла контейнера через docker volume и bind mount. - Освоите реальную сетевую механику: от проброса портов через Docker Proxy до полного снятия изоляции в режиме host. - Избавитесь от синдрома «на моей машине всё работало», научившись собирать неизменяемые слои образа через Dockerfile для развертывания инфраструктуры за секунды. 🧠 Открытый урок проходит в преддверии старта курса «Администратор Linux. Базовый уровень» 👉 Для участи зарегистрируйтесь: https://otus.pw/SpeOL/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🛡️ SSH-туннель отваливается? Вечные соединения за секунду
Обычный SSH-туннель или прокси падает при малейшем сбое сети, оставляя тебя без связи. Утилита autossh решает эту проблему: она оборачивает SSH-соединение, мониторит его состояние и автоматически перезапускает при обрыве. Ниже подробная шпаргалка, как поднять вечные туннели для любых задач. 1. Поднимаем постоянный локальный SSH-туннель (Local port forward) Пробрасываем удаленный порт 80 на локальный 8080 с портом мониторинга 20000 autossh -M 20000 -N -L 8080:localhost:80 user@remote 2. Туннель без отдельного порта мониторинга Полезно, если порты мониторинга закрыты (полагается на ServerAliveInterval) autossh -M 0 -N -L 8080:localhost:80 user@remote 3. Поднимаем вечный обратный туннель (Reverse port forward) Пробрасываем наш локальный порт 80 на удаленный порт 8080 autossh -M 20000 -N -R 8080:localhost:80 user@remote 4. Запуск в фоновом режиме Ключ -f уводит процесс в фон сразу после аутентификации autossh -f -M 20000 -N -L 8080:localhost:80 user@remote 5. Создаем неразрывный SOCKS-прокси autossh -M 20000 -N -D 8080 user@remote 6. Управление через переменные окружения Включаем отладку и задаем задержку перед первой проверкой (по умолчанию 30 сек) AUTOSSH_DEBUG=1 AUTOSSH_GATETIME=10 autossh -M 20000 -N -D 8080 user@remote Настрой это один раз, и твои пробросы портов больше никогда не умрут от смены IP или перезагрузки роутера. Проверь свои туннели прямо сейчас.
❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #SSH #Autossh #Linux #DevOps #SysAdmin

🧨 Твои скрипты падают на проде? 43 команды Bash, которые спасут твою репутацию
Скрипт отработал с ошибкой, но не остановился и удалил половину нужных файлов? Или CI/CD пайплайн споткнулся о пустую переменную? Я отжал воду из огромных справочников и оставил ровно 50 самых хардкорных и важных конструкций Bash, которые жизненно необходимы. 1. Безопасность и запуск (Strict Mode) Эти настройки — стандарт де-факто для любых production-скриптов. Они отлавливают ошибки на раннем этапе. # Указать интерпретатор (лучшая практика переносимости) #!/usr/bin/env bash # Сделать скрипт исполняемым chmod +x script.sh # "Strict Mode" (выход при ошибке, ошибке переменной или в пайплайне) set -euo pipefail # Выйти немедленно при ошибке set -e # Режим отладки (выводить команды перед выполнением) set -x 2. Продвинутая работа с переменными Защита от пустых значений, которые могут сломать автоматизацию. # Присвоить значение (строго без пробелов вокруг =) VAR=value # Безопасное чтение с кавычками (предотвращает word splitting) "$VAR" # Использовать по умолчанию, если переменная не задана (важно для Docker) ${VAR:-default} # Назначить значение по умолчанию, если VAR не задана ${VAR:=default} # Выйти с ошибкой, если переменная не задана (failsafe для деплоя) ${VAR:?error msg} # Сделать переменную доступной только для чтения (константа) readonly VAR # Экспортировать переменную для дочерних процессов export VAR 3. Системные переменные Идентификаторы процессов и аргументы функций. # Имя скрипта $0 # Позиционные параметры (аргументы 1-9) $1..$9 # Количество переданных аргументов $# # Все аргументы безопасно как отдельные слова $@ # Статус выхода последней команды (0 - успех, иное - ошибка) $? # PID текущего процесса shell $$ 4. Парсинг строк (без вызова awk/sed) Молниеносные встроенные манипуляции с путями и текстом. # Удалить самое короткое совпадение паттерна с начала ${VAR#pattern} # Удалить самое короткое совпадение с конца (удобно для расширений файлов) ${VAR%pattern} # Заменить все вхождения подстроки ${VAR//old/new} # Перевести все символы в нижний регистр ${VAR,,} 5. Условия и мощные проверки Используй `[[ ]]` вместо старого `[ ]` — это безопаснее и поддерживает регулярные выражения. # Проверить существование файла и вывести результат if [[ -f "file.txt" ]]; then echo "exists"; fi # Проверка по регулярному выражению =~ # Конструкция case (идеально для стартовых скриптов systemd) case "$1" in start) echo "Starting";; stop) echo "Stopping";; *) echo "Usage: $0 {start|stop}";; esac # Файл существует и является обычным -f file # Файл существует и является директорией -d file # Строка пустая -z string # Строка не пустая -n string # Строковое равенство и неравенство == != # Числовое равенство и неравенство -eq -ne 6. Массивы и словари Незаменимо для перебора IP-адресов, списков серверов и портов. # Объявить индексированный массив arr=(a b c) # Получить все элементы массива ${arr[@]} # Узнать количество элементов в массиве ${#arr[@]} # Объявить ассоциативный массив (словарь) declare -A map # Добавить значение по ключу map[key]="value" 7. Математика, Ввод/Вывод и Сигналы Форматирование вывода для дашбордов и правильная очистка мусора за скриптом. # Арифметика: сложение $((a + b)) # Арифметическое присваивание let "a += 5" # Прочитать строку в массив read -r -a items <<< "a b c" # Форматированный вывод (надежнее чем echo) printf "Name: %s, Age: %d\n" "$name" "$age" # Многострочный ввод (Here document) для генерации конфигов cat <<EOF Lines of text go here. Variables like $HOME are expanded. $ EOF # Завершить скрипт с кодом успеха exit 0 # Завершить скрипт с кодом ошибки exit 1 # Выполнить очистку (например, удалить лок-файл) при любом выходе trap ' rm -f /tmp/mylock' EXIT Теперь твой код готов к нагрузкам. Сохраняй шпаргалку, чтобы не плодить костыли, и применяй правильный синтаксис!
❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill ⭐️ Зеркало в MAX #Linux #Bash #DevOps #Sysadmin #ShellScripting #CLI