BashMaster
8.22K subscribers
678 photos
14 videos
1 file
701 links
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
Все новости из мира программирования на этом канале @umnyiprogrammist

Подписывайтесь, чтобы не упустить ничего важного
⚙️ Скрипт для запуска нескольких серверов одновременно по ssh

✔️Если есть необходимость быстрого запуска нескольких серверов по ssh без ввода паролей, то этот скрипт вам поможет.

▶️Создаем ключи без sudo:

ssh-keygen -t rsa


▶️Копируем публичный ключ на сервера, которые хотим подключить:

ssh-copy-id вашsshакаунт@ваш_адрес_сервера


▶️Берем скрипт:

#!/bin/sh
gnome-terminal --tab --title="server1" --command="ssh вашsshакаунт@192.168.0.1" \

--tab --title="server2" --command="ssh вашsshакаунт@192.168.0.2" \
--tab --title="server3" --command="ssh вашsshакаунт@192.168.0.3" \
--tab --title="server4" --command="ssh вашsshакаунт@192.168.0.4"
exit 0


🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка популярных каналов по информационной безопасности и этичному хакингу:

🔐 infosec — ламповое сообщество, которое публикует редкую литературу, курсы и полезный контент для ИБ специалистов любого уровня и направления.

😈 Social Engineering — самый крупный ресурс в Telegram, посвященный этичному Хакингу, OSINT и социальной инженерии.

💬 Вакансии в ИБ — актуальные предложения от самых крупных работодателей и лидеров рынка в сфере информационной безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как проверить правильность URL-адреса из оболочки Linux

✔️При работе в среде оболочки бывают случаи, когда необходимо проверить, действителен ли URL-адрес, прежде чем использовать его для других операций.
Вы узнаете несколько простых и эффективных способов проверить, существует ли URL, прямо из нашей оболочки.

➡️ Основные методы проверки URL
▶️В оболочке в нашем распоряжении есть два основных инструмента для проверки существования URL. Это curl и wget.

➡️ Использование curl
curl – это инструмент командной строки, который мы можем использовать для передачи данных на серверы или с серверов по различным протоколам (включая HTTP и HTTPS).
Среди множества его возможностей, мы можем использовать curl для проверки того, указывает ли URL на реальный, доступный ресурс.

▶️Теперь давайте рассмотрим несколько различных способов использования curl.
Для начала давайте рассмотрим простой скрипт для проверки существования URL-адреса с помощью curl:
#!/bin/bash
if curl --head --silent http://www.baeldung.com/ > /dev/null 2>&1; then
echo «URL существует»
else
echo «URL не существует или недоступен»
fi

▶️Давайте разберем ключевые части этого скрипта:
curl: это инструмент командной строки, который мы используем для взаимодействия с веб-сайтом
-head: указывает curl использовать только забор «заголовочной» информации с веб-сайта, а не скачивать всю веб-страницу целиком
-silent: поддерживает порядок, скрывая обычный прогресс и статусный вывод curl
> /dev/null 2>&1: отправляет стандартный вывод (stdout) и стандартную ошибку (stderr) в /dev/null, эффективно отбрасывая любой вывод, который мог бы произвести curl

▶️Кроме того, оператор if проверяет код выхода команды curl. Если он равен 0 (успех), то URL существует и доступен.
Если же код выхода ненулевой (ошибка), то URL может не существовать или возникла проблема с соединением.

▶️Далее рассмотрим, как можно сохранить код ответа HTTP в переменной для дальнейшей обработки ошибок:
#!/bin/bash
result=$(curl --head --silent --write-out «%{http_code}» --output /dev/null https://www.google.com/)
if [[ $result -eq 200 ]]; then
echo «URL существует»
else
echo «URL не существует или недоступен»
fi

▶️В приведенном выше блоке кода ключевым дополнением является -write-out «%{http_code}».
Это указывает curl включить в вывод код состояния сайта по протоколу HTTP.
Затем мы фиксируем этот вывод в переменной result.
Кроме того, оператор if проверяет значение переменной result.
Если оно равно 200, это означает, что URL существует.
Однако если результат не равен 200, возможно, возникла проблема или URL не существует.

➡️ Использование wget
wget – это инструмент, который мы можем использовать для загрузки файлов из Интернета.
Он также предоставляет удобный способ проверки существования URL.

▶️Теперь давайте посмотрим, как работает wget:
#!/bin/bash
if wget --spider https://www.facebook.com/ > /dev/null 2>&1; then
echo «URL существует»
else
echo «URL не существует или недоступен»
fi


▶️В приведенном выше скрипте:
wget: пытается загрузить файлы с веб-сайта
-spider: указывает wget проверить, существует ли файл или ресурс, не скачивая его на самом деле
> /dev/null 2>&1: перенаправляет весь вывод в /dev/null, чтобы отбросить его.

▶️Как и в curl, wget использует коды выхода для передачи результатов операции.
Как правило, код выхода 0 означает успех (URL существует), в то время как другие коды указывают на ошибку или несуществование URL.
Кроме того, мы можем полностью изменить вывод wget, что приведет к более чистому выполнению скрипта.

▶️Давайте разберемся, как работает эта опция:
#!/bin/bash
if wget --spider -q https://www.google.com; then
echo «URL существует»
else
echo «URL не существует или недоступен»
fi

▶️В приведенном выше примере параметр -q указывает wget работать в тихом режиме, не выводя никаких данных на консоль.
Остальная часть скрипта работает так же, как и в предыдущем примере.
Таким образом, хотя wget в первую очередь предназначен для загрузки файлов, его режим -spider – это быстрый и простой способ проверить, существует ли веб-сайт или ресурс.

🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Service mesh: тренд, необходимость или хайп?

Приглашаем обсудить это на бесплатном вебинаре от учебного центра Слёрм.

Что будет на вебинаре:

➡️ посмотрим на service mesh с разных точек зрения: эксплуатации и разработки;
➡️ обсудим, какие преимущества дает service mesh и какие у него особенности;
➡️ определим основные понятия и посмотрим на примеры реализации service mesh.

И еще, кстати, разберём, бесплатен ли service mesh и какова его реальная цена.

Эксперты встречи — спикеры курсов Слёрма:
— Павел Лакосников, TeamLead SLA в Авито
— Георг Гаал, CTO, Aenix

Когда: 19 февраля в 19:00

👉 Занять место на вебинаре — через бота.

Реклама. ООО "СЛЁРМ". ИНН 3652901451.
⚙️ Сравнение Bash и Python при написании скриптов в Linux

✔️Sh (от англ. shell) является обязательным командным интерпретатором для UNIX-совместимых систем по стандарту POSIX. Однако по возможностям он ограничен, поэтому зачастую вместо него используются более богатые возможностями командные интепретаторы, такие как Bash или Ksh. Ksh обычно используется в операционных системах семейства BSD, в то время как Bash — в операционных системах семейства Linux. Командные интерпретаторы облегчают решение мелких задач, связанных с работой с процессами и файлами. В данной статье будут рассматриваться операционные системы Linux, поэтому речь пойдёт о Bash.

▶️Python, в свою очередь, является полноценным интерпретируемым языком программирования, также он нередко используется для написания скриптов или решения мелких прикладных задач. Современную UNIX-подобную систему сложно представить как без sh, так и без Python, если только это не устройство с минималистичной ОС вроде маршрутизатора. Например, в Ubuntu Oracular пакет python3 удалить не получится хотя бы потому, что от него зависит пакет grub-common, от которого, в свою очередь зависят пакеты grub2-common и, соответственно, grub-pc, то есть непосредственно загрузчик операционной системы. Таким образом, Python 3 можно смело использовать как замену Bash в случае необходимости.

▶️При решении различных задач на уровне ОС или файловой системы может возникнуть вопрос, а какой же из языков, Bash или Python выгодно использовать в том или ином случае? И тут всё будет зависеть от решаемой задачи. Bash выгоден, когда нужно быстро решить каку‑либо простую задачу, связанную с управлением процессами, поиском или изменением файлов. В случае же усложнения логики код на Bash становится слишком громоздким и трудночитаемым (хотя читабельность в первую очередь будет зависеть от самого программиста). Можно, конечно код разбивать на скрипты и функции, делать sh-библиотеки, подключаемые через команду source, но модульными тестами это уже сложно будет покрывать.

➡️ Содержание статьи:
▶️Предисловие
▶️Отладка скриптов
▶️▶️Отладка в Bash
▶️▶️Отладка в Python
▶️Сравнение семантики Bash и Python
▶️Работа с файловой системой и процессами
▶️Возможность компиляции
▶️Выбор языка в зависимости от задачи
▶️Рекомендуемая литература

🖼️ Дочитать статью на Habr'e

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Знаем, что многие тут хотят уйти в DevOps или серьезно в нем прокачаться. Но не знают, где взять информацию и четкий план.

💪 Советуем бесплатный мета-курс Devops Roadmap - это расширенный чек-лист, который поможет сориентироваться в мире DevOps и стать крутым спецом.

👀 В мета-курсе перечислены все основные разделы и навыки, которыми должен обладать DevOps инженер: от Linux до программирования в удобном формате.

✔️А еще он будет полезен при подготовке к собеседованиям.

👽 Кстати, бонусом крутой канал о девопс. Там тоже самые свежие IT-новости, полезные советы от DevOps-инженера с 20-летним стажем, эксклюзивные материалы, релизы топовых инструментов, обзоры вакансий и личный взгляд на девопс-сферу.
⚙️ LLM Functions

✔️Проект с открытым исходным кодом, предназначенный для упрощения создания инструментов и агентов на основе больших языковых моделей (LLM) с использованием языков программирования, таких как Bash, JavaScript и Python.

▶️Он позволяет разработчикам легко интегрировать LLM с пользовательским кодом, что открывает широкие возможности для выполнения системных команд, обработки данных, взаимодействия с API и многого другого.

➡️ Некоторые особенности проекта:
▶️Автогенерация JSON-объявлений для инструментов на основе комментариев. LLM Functions автоматически создаёт бинарные файлы и объявления функций на основе написанных комментариев.
▶️Необходимые инструменты: должны быть установлены argc (базовая структура командной строки для Bash) и jq (процессор JSON).

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ JDoodle

✔️Универсальный онлайн-компилятор, который поддерживает написание скриптов Bash.

▶️Он предлагает выполнение в реальном времени и простой, интуитивно понятный дизайн, что позволяет легко тестировать и делиться скриптами Bash.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Service mesh и зачем он нужен?

Service mesh автоматизирует маршрутизацию, отказоустойчивость, безопасность и мониторинг. Но нужен ли он именно вам или это просто лишний оверхед?

В бесплатном уроке эксперт учебного центра Слёрм разберёт:

✔️ Проблемы микросервисной архитектуры;
✔️ Что такое Service mesh и как он работает;
✔️ Какие задачи решает Service mesh;
✔️ Кому он нужен, а кому – только усложнит жизнь;
✔️ Когда можно обойтись без него.

👉 Получить урок — у бота-помощника 👈
Смотрите сами и делитесь с коллегами!

Реклама. ООО "СЛЁРМ". ИНН 3652901451. erid: 2W5zFJN7yZ2
⚙️ Countdown — обратный отсчет на Bash

✔️Есть возможность указывать сколько секунд отсчитывать и в каком формате осуществлять вывод:
💠в одну линию
💠каждую линию

#!/bin/bash
# Use argument for count down. Example: ./countdown.sh 10
# Author: Yevgeniy Goncharov aka xck, http://sys-admin.kz

# Help information
usage() {

echo -e "" "\nParameters:\n"
echo -e "-c - Count (in seconds)"
echo -e "-f - Format (1 - Every line, 2 - One Line)\n"
exit 1
}

countdown_by_line() {

if [[ ! $1 ]]; then
echo "Please set countdown. Exit."
exit 1
else
secs=$1
fi

# bash while loop
while [ "$secs" -gt 0 ]; do
echo "$secs"
(( secs=secs-1 )) || true
sleep 1
done
echo Finish!
}

countdown_one_line() {

# secs=$((5 * 60))
if [[ ! $1 ]]; then
echo "Please set countdown. Exit."
exit 1
else
secs=$1
fi

# bash while loop
while [ "$secs" -gt 0 ]; do
echo -ne "$secs\033[0K\r"
sleep 1
: $((secs--))
done
echo Finish!
}

if [[ -z "$1" ]]; then
usage
exit 1
fi

while [[ "$#" -gt 0 ]]; do
case $1 in
-c|--count) COUNT=$2; ;;
-f|--format) FORMAT="$2"; shift ;;
-h|--help) usage ;;
esac
shift
done

if [[ "$FORMAT" -eq "1" ]]; then
countdown_by_line "$COUNT"
elif [[ "$FORMAT" -eq "2" ]]; then
countdown_one_line "$COUNT"
else
echo "Unknown format. Exit. Bye!"
fi


🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Paiza.IO

✔️Предлагает онлайн-редактор и компилятор, где можно мгновенно писать и запускать код. В том числе для выполнения скриптов Bash.

➡️ Некоторые особенности платформы:

▶️Сохранение кода. Его можно сохранить для просмотра или редактирования позже.
▶️Автоматическая синхронизация с GitHub. Для этого требуется регистрация.
▶️Поддержка нескольких файлов. Для загрузки достаточно перетащить файлы.
▶️Возможность опубликовать код в блоге. Для этого нужно нажать на кнопку «Embed» на панели инструментов и получить HTML-сниппет, который можно разместить в блоге

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Ищешь надежный сервер для своих задач? 🔥

Будь то игровой сервер, бот или просто удаленный рабочий стол — тебе нужен быстрый и стабильный VDS!

💡 Почему выбирают High-speed VDS?

Процессоры Intel Xeon Gold 3-го поколения – высокая производительность для любых нагрузок
Безлимитный интернет до 10 Гбит/с – никаких ограничений на трафик
SSD – молниеносная скорость работы
Моментальная установка – сервер готов к работе за пару минут
Круглосуточная поддержка – помощь в любое время

Запусти свой проект без лишних забот! 🚀

🎁 Подготовили приятный бонус для тебя: +10% к пополнению баланса

👉 Начни прямо сейчас: hsvds.ru
⚙️ Fynd Academy's Bash Online Compiler

✔️Предлагает комплексную онлайн-среду для написания, тестирования и выполнения Bash-скриптов.

➡️ Некоторые особенности инструмента:
▶️Реальное время выполнения. Можно мгновенно запускать скрипты и смотреть вывод без необходимости настраивать локальную среду.
▶️Подсветка синтаксиса. Она делает код более читаемым, выделяя команды, переменные и функции.
▶️Диагностика ошибок. Пользователь получает детальные сообщения об ошибках и отладочную информацию, чтобы быстро выявлять и исправлять проблемы в сценариях.
▶️Возможность поделиться скриптом. Для этого генерируются shareable ссылки, что облегчает сотрудничество и получение обратной связи.
▶️Облачное хранилище. Сценарии можно сохранять в облаке, чтобы они были доступны с любого устройства и исключался риск потери данных.

➡️ Кроме того, компилятор поддерживает различные версии Bash и включает обширную библиотеку готовых примеров и шаблонов для обучения и экспериментов.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Как провести успешный пентест, взломать AD, скомпрометировать всё, что можно, и выйти из сети заказчика победителем?

Изучите техники и методики атак на инфраструктуру Active Directory на курсе от Академии Кодебай! 

Наша практическая лаборатория содержит более 30 виртуальных машин, которые вам предстоит сломать. Начинаем 3 марта, регистрация — здесь.

Содержание курса:
✦ Архитектура AD 
✦ Харденинг в AD, добыча критичной информации, развитие по инфраструктуре
✦ Захват и укрепление позиций внутри инфраструктуры
✦ Применение и анализ популярных эксплоитов

Авторы курса: HackerRalf (Михаил Порываев) и BlackRabbit (Павел Никитин), 5-кратные победители the Standoff

Узнайте полную программу курса @Codeby_Academy
⚙️ VPS Security Audit Script

✔️Лёгкий, не требующий зависимостей bash-скрипт для аудита безопасности и производительности VPS (виртуального частного сервера).

➡️ Скрипт выполняет различные проверки и предоставляет цветные результаты (Pass/Warn/Fail):
▶️Проверки безопасности: конфигурация SSH (логин root, аутентификация по паролю, порты не по умолчанию), статус брандмауэра, конфигурация Fail2ban, неудачные попытки логина, настройка автоматических обновлений и другое.
▶️Мониторинг производительности: использование диска (с общим, используемым и доступным пространством), использование памяти (с детальными метриками), использование CPU (со средними нагрузками и информацией о ядрах), время работы системы, ожидающие обновления, необходимость перезагрузки системы.

➡️ Некоторые особенности скрипта:
▶️цветной вывод для удобного чтения;
▶️генерация подробного отчёта (сохраняется в текстовый файл);
▶️действенные рекомендации по неудачным проверкам;
метрики системных ресурсов с абсолютными значениями и процентами;
▶️отсутствие внешних зависимостей (используются стандартные инструменты Linux).

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
infosec - это один из самых ламповых каналов по информационной безопасности, где говорят об истории ИТ, публикуют актуальные новости и пишут технический материал на разные темы:

- Что из себя представляет официально взломанный iPhone от Apple?
- К чему могла привести опечатка в инфраструктуре платёжной системы MasterCard?
- Авторский материал для ИБ специалистов с закрытого хакерского форума XSS;
- Бесплатный бот, который проверит файлы на предмет угроз более чем 70 антивирусами одновременно.

А еще у нас часто проходят розыгрыши самых актуальных и новых книг для ИБ специалистов. Так что присоединяйся, у нас интересно!
⚙️ Создание динамических переменных на Bash

✔️Конечно, можно использовать это для удаления кучи условий if, когда есть несколько наборов переменных env для разных окружений.

▶️Подход, который мы будем использовать, совместим с Bash 3.2+, что очень удобно, если вы хотите, чтобы он работал “из коробки” на macOS.
#!/usr/bin/env bash

set -o errexit
set -o pipefail
set -o nounset

# Представьте, что у вас есть несколько переменных окружения для нескольких сред, таких как.
# как TEST, STAGING и PROD. Обычно они существуют в файле .env и
# передаются с помощью `. .env", я оставил их здесь, чтобы они были самостоятельными.
export TEST_API_KEY="abc123"
export STAGING_API_KEY="def456"
export PROD_API_KEY="ghi789"

# Теперь представьте, что у вас есть shell-скрипт, где первым аргументом является env, с которым вы
# с которым вы хотите работать, например, `./demo TEST ...` или `./demo PROD ...`.
ENV="${1}"

# И теперь вы хотите использовать значение API_KEY конкретного окружения.
# переменной. На данный момент не имеет значения, из какого окружения она получена.
API_KEY="${ENV}_API_KEY"

# Здесь мы можем получить доступ как к имени переменной, так и к ее значению. Вы можете захотеть
# использовать любой из них в зависимости от вашего случая
echo "${API_KEY}=${!API_KEY}"

▶️Если бы вы запустили этот скрипт вот так ./demo TEST, то получили бы в ответ API_KEY=abc123.
Использование ${!API_KEY} называется косвенным расширением.
Это описано в официальной документации по Bash.

▶️Без использования динамических переменных вы можете решить ту же проблему, но вы можете написать код, который выглядит следующим образом:
if [ "${ENV}" == "TEST" ]; then
API_KEY="${TEST_API_KEY}"
elif [ "${ENV}" == "STAGING" ]; then
API_KEY="${STAGING_API_KEY}"
elif [ "${ENV}" == "PROD" ]; then
API_KEY="${PROD_API_KEY}"
else
echo "Invalid environment!" && exit 1
fi

▶️Теперь, если вы прочтете echo “${API_KEY}”, то получите abc123, если ENV=”TEST”.

▶️Не то чтобы приведенный выше код был ужасен.
Можно привести доводы в пользу того, что он более прост, но он может быстро стать менее удобным для обслуживания.

➡️ Если у вас есть куча переменных окружения, то использование динамических переменных является более чистым решением, оно уменьшает количество дублирований при объявлении одной и той же переменной для каждого окружения.

🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ OnlineGDB

✔️Предоставляет среду для написания скриптов Bash с функциями отладки и выполнения кода в удобном интерфейсе.

▶️Сервис позволяет писать, компилировать, запускать и отлаживать скрипты Bash онлайн. Для этого нужно написать код в редакторе и нажать кнопку «Выполнить».

➡️ Некоторые особенности OnlineGDB:
▶️не требуется предварительная настройка для кодирования или отладки;
▶️запуск и отладка одним нажатием кнопки;
▶️автоматическое сохранение исходного кода в браузере локально;
▶️удобный интерфейс.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Python — самый простой путь в IT! Проверено тысячами людей.
Думаете, почему язык Python так востребован? Он простой, интуитивно понятный и подходит для любого уровня подготовки. Если вы хоть раз задумывались о программировании, начните с бесплатного мини-курса по Python: https://epic.st/mAwkU5?erid=2VtzqvtuRTL

Сами «пощупаете», напишете сайт и пару Telegram-ботов, вот тогда и поговорим. Времени много не займёт: всего 4 занятия в записи — можно смотреть, когда удобно. После видео — практика и тесты.

А ещё подарки: подборка полезных материалов по Python-разработке, скидка 10 000 рублей на любой курс Skillbox и персональная карьерная консультация. Последняя очень кстати: не зайдёт Python — разберётесь с экспертом, что зайдёт, и получите тестовый доступ к профессии.

Переходите и регистрируйтесь 😉 https://epic.st/mAwkU5?erid=2VtzqvtuRTL


Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
⚙️ DevDocs.io

✔️Веб-платформа, предназначенная для разработчиков программного обеспечения, предоставляющая документацию по различным языкам программирования, фреймворкам и инструментам командной строки.

▶️Страница, посвящённая Bash, содержит исчерпывающую справочную информацию по этому популярному интерпретатору командной строки, который широко используется в Unix-подобных операционных системах.

➡️ Особенности страницы DevDocs по Bash
💠 Удобный интерфейс: Документация представлена в виде интерактивного справочника, где легко находить нужные команды и опции. Структура документа позволяет быстро перемещаться между различными разделами, такими как синтаксис, встроенные команды, переменные окружения и специальные символы.

💠 Поисковая система: Встроенный поиск помогает мгновенно найти нужную команду или параметр, экономя время разработчика. Это особенно полезно при работе с большим количеством команд и опций.

💠 Описание синтаксиса: Подробное руководство по использованию базовых конструкций Bash, включая условные операторы, циклы, функции и обработку сигналов. Это делает страницу ценным ресурсом для начинающих пользователей, желающих освоить основы работы с командной строкой.

💠 Примеры использования: В каждом разделе приводятся практические примеры, иллюстрирующие применение различных команд и функций. Это помогает лучше понять, как работают те или иные элементы Bash.

💠 Совместимость с разными платформами: Информация актуальна для всех основных дистрибутивов Linux, macOS и других Unix-подобных систем, поддерживающих Bash.

💠 Обновляемость: Платформа регулярно обновляется, чтобы соответствовать последним изменениям в документации Bash. Это гарантирует, что пользователи получают самую свежую и точную информацию.

💠 Поддержка оффлайн-доступа: Возможность скачивания локальной копии документации для использования без подключения к Интернету.

💠 Интеграция с IDE: Некоторые интегрированные среды разработки поддерживают интеграцию с DevDocs, позволяя разработчикам получать доступ к документации прямо из редактора кода.

▶️ Эта страница является незаменимым инструментом для любого IT-специалиста, работающего с командной строкой Bash, будь то администратор серверов, разработчик программного обеспечения или энтузиаст, стремящийся углубить свои знания в области автоматизации задач и скриптов.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM