Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
Show more📈 Analytical overview of Telegram channel Bash Days | Linux | DevOps
Channel Bash Days | Linux | DevOps (@bashdays) in the Russian language segment is an active participant. Currently, the community unites 23 803 subscribers, ranking 5 708 in the Technologies & Applications category and 28 124 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 23 803 subscribers.
According to the latest data from 16 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -201 over the last 30 days and by -10 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 20.40%. Within the first 24 hours after publication, content typically collects 11.53% reactions from the total number of subscribers.
- Post reach: On average, each post receives 4 855 views. Within the first day, a publication typically gains 2 744 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 17.
- Thematic interests: Content is focused on key topics such as bashdays, linux, bash, docker, скрипт.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Thanks to the high frequency of updates (latest data received on 17 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
echo $foo
Тут всё предельно ясно и понятно. Все в ажуре!
Но это вершина айсберга. Эта команда может отрабатывать не так, как ты ожидаешь. Потому что foo это переменная. И если ты её не возьмешь в кавычки, то Bash может сделать с её содержимым всякие хитрые штуки.
Что подразумевается по «хитрыми штуками»
— Разделить содержимое на отдельные слова (если там есть пробелы).
— Подставить имена файлов с таким шаблоном, если он выглядит как *.zip (это называется глоббинг).
И тут у новичков возникает многочасовой проёб, когда переменная выводит неправильные значения.
Смотри:
msg="Пожалуйста, введите имя файла в формате *.zip"
echo $msg
Выглядит опять всё красиво. А по факту получаешь:
Пожалуйста, введите имя файла в формате awscliv2.zip
Да блядь! А я просто хотел вывести строкой *.zip а не получить список файлов в текущей папке.
var="*.zip"
echo "$var"
echo $var
Первое echo напечатает *.zip, а второе выведет список всех файлов, которые заканчиваются на .zip.
Поэтому, если ты хочешь наверняка вывести переменную как есть, лучше используй `printf`
printf "%s\n" "$foo"
Для маленьких:
Представь, что ты говоришь падшей женщине: «покажи что у тебя в трусах», она снимает трусы, а там — большой сочный хуй.
А чтобы в трусах был ожидаемый результат, нужно изначально это учесть в моменте знакомства (до просьбы) и расставить все кавычки.
Хотя у каждого свой ожидаемый результат… возможно кавычки вовсе и не потребуются.
Такие дела. Изучай!
🛠 #bash #badpractices #bestpractices
—
✅ @bashdays / @linuxfactory / @blogecho -e "foo\nbar\nfoo again" > bashdays.txt
Внутри получаем:
foo
bar
foo again
И применяем бэд-практику:
cat bashdays.txt | sed 's/foo/baz/g' > bashdays.txt
Эта команда читает файл bashdays.txt и одновременно пишет в него.
Что тут не так?
А всё! В лучшем случае получишь хуем по лбу и примеришь золотой пизды колпак. Эта команда испортит файл. Низя так делать! Всё проебёшь!
После этой команды файл bashdays.txt обнулится. Хотя визуально команда выглядит абсолютно безопасной.
А теперь делаем правильно!
sed 's/foo/baz/g' bashdays.txt > tmpfile && mv tmpfile bashdays.txt
Смотрим содержимое файла bashdays.txt и видим ожидаемый результат:
baz
bar
baz again
Здесь мы всё сделали через временный файл, громоздко, но по крайней мере безопасно. Веселый колпак тебе теперь точно не светит.
Можно извратиться и провернуть всё это дело на основе дескрипторов, но опять же этот способ не безопасен.
Можно правда хакнуть таким методом:
printf '%s\n' ',s/foo/baz/g' w q | ed -s bashdays.txt
Это работает без временного файла на уровне Bash, потому что ed сделаем всё сам. Но опять же конструкция нихуя непонятная.
Резюмируем: Не ссы использовать временные файлы, пусть твои bash скрипты будут безопасны и читаемы.
🛠 #bash #badpractices #bestpractices
—
✅ @bashdays / @linuxfactory / @blogЕсли работает, это еще ничего не значит. Ну ты это и сам знаешь.Ладно… Оставляю на ночь это ебучую головную боль с родным блоком питания, proxmox шуршит, всё ништяк. На утро — вентилятор хуярит как дичь перепуганная. Ебаться рылом в ламинат! Пингую, хуй там плавал! Выключаю, включаю — ничего! Перекидываю блоки питания — ничего! Я даж и не знаю теперь, что сука происходит, нагрев 40-50, чипы не должны отваливаться. Включается какая-то защита? Такое ощущение что этот мини-пиздюк конкретно решил мне выкрутить яйца.
Еще кстати подумал — а мож это proxmox? Ради интереса надо попробовать какой нить SelectOS накатить…Какие мысли господа и дамы? Выкинуть эту поеботу или есть какой-то быстро фикс типа прошивки или пиздюлин 20 таблеток? 🛠 #hardware #fails — ✅ @bashdays / @linuxfactory / @blog
date для работы с датами/временем.
🔤🔤🔥🔤🔤🔤🔤
Очень удобная команда, имеет очень много форматов и позволяет складывать/вычитать даты, например:
date -d"-1 day" # Чт 02 янв 2025 21:52:15 MSK - текущая дата минус один день.
date -d"+2 week" # Пт 17 янв 2025 21:53:48 MSK - текущая дата плюс две недели.
"day", "week" "month", "year", "hour", "min", "sec"
Но в bash есть еще средства для работы со временем:
ㅤ
Переменная SECONDS показывает, сколько секунд прошло с начала запуска скрипта или момента задания значения переменной. Обычно используется для хронометража блока кода скрипта. Например:
SECONDS=0
# здесь блок длительного кода
echo $SECONDS
Переменная EPOCHSECONDS - показывает число секунд, прошедших с начала эпохи UNIX (01.01.1970 00:00:00 UTC).
Обратите внимание, число секунд не зависит от часового пояса.
EPOCHREALTIME - аналогична предыдущей, но секунды с точностью до микросекунды. С помощью этой переменной можно точно отслеживать время небольших кусков кода. Даже если просто вывести переменную дважды - будет разное время:
echo $EPOCHREALTIME $EPOCHREALTIME
# 1744652451,166523 1744652451,166539
Обратите внимание, разделитель дробной части может быть различным, в зависимости от языковых настроек.
Переменные EPOCHSECONDS и EPOCHREALTIME обнулить не получится.
И еще есть специальный формат оператора printf для преобразования секунд UNIX в формат дат:
printf '%(DT_FORMAT)T' $EPOCHSECONDS
DT_FORMAT - практически полностью совпадает с форматом команды date.
Например:
printf '%(%Y%m%d-%H%M%S)T' $EPOCHSECONDS
# 20250414-203214
Если не указать переменную или указать -1 - будет использовано текущая дата/время. Если указать -2 - будет использовано время начала работы этого экземпляра bash.
printf удобен тем, что выполняется гораздо быстрее чем date (хотя говорить о скорости bash немного смешно) и позволяет результат операции записать сразу в переменную (Например DT).
printf -v DT '%(%Y%m%d-%H%M%S)T'
И date и printf работают в локальной временно́й зоне, чтобы это изменить можно задать "врéменную переменную" TZ.
Например:
TZ='UTC' date
# Пн 14 апр 2025 16:15:57 UTC
TZ='Asia/Irkutsk' printf '%(%Y%m%d-%H%M%S)T\n'
# 20250415-001621
Полный список временны́х зон на системах с systemd можно получить с помощью команды timedatectl list-timezones.
🛠 #bash
—
✅ @bashdays / @linuxfactory / @blogfoo, то не нужно писать доллар ($) перед именем переменной.
ㅤ
Напиши так:
read foo
А если хочешь прикрыть своё очко от спецсимволов, делай так:
IFS= read -r foo
Вот так делать хуёва:
read $foo
В этом случае $foo — уже не имя переменной, а значение переменной foo.
Как говорил мой техдир:
Рома, золотые у тебя руки. Оторвать бы их да пропить.Делай правильно и твои руки никто не оторвёт и не пропьёт. Для маленьких: Представь, ты говоришь: «Дай хуй» — и тебе сразу дают хуй. Всёж просто. 😲 А теперь представь, что ты говоришь: «Дай $хуй». Тут сначала дополнительно нужно спросить «А кто такой хуй?» — может, это Олег? И тогда тебе дадут Хуй Олега. То есть, сначала нужно узнать, кто прячется под «хуем», а потом уже брать, чтобы не взять чужой «хуй». Надеюсь ты понял. Изучай! 🛠 #bash #badpractices #bestpractices — ✅ @bashdays / @linuxfactory / @blog
[ — это не просто скобка, а отдельная команда. Она проверяет, пиздеж ли что-то или нет.
Хуёвая практика:
if [ a = b ] && [ c = d ]; then
...
fi
В этом примере сначала проверяется a = b, если это пиздёж — дальше ничего не выполняется.
Если же a = b НЕ пиздёж — тогда проверяется c = d. И если c = d НЕ пиздёж, то выполняется, то что внутри then.
Проще по моему объяснить уже нереально. Сложно перепутать пизду с розеткой. Хотя… вечно путают.Бест-практика! Зырь!
if [[ a = b && c = d ]]; then
...
fi
Делаем двойные скобки. Двойные скобки умеют работать с && внутри.
[[ ... ]] — это специальная команда Bash, которая используется для проверки условий. Она умнее и безопаснее, чем обычная [ ... ].
Внутри неё можно использовать логические операторы && (и) и || (или) без дополнительных скобок или дополнительных [.
Рассмотрим пример:
a="hello"
b="hello"
c="bashdays"
d="bashdays"
if [[ $a = $b && $c = $d ]]; then
echo "Условия совпали!"
fi
1. Проверяет $a = $b → "hello" = "hello"? → Да. 2. Дальше && говорит: Если первое условие — НЕ пиздёж, идём ко второму. 3. Проверяет $c = $d → "bashdays" = "bashdays"? → Да. 4. Оба условия верны → выполняется команда echo.
[ — работает с одним условием за раз
[[ — может работать с комбинированными условиями прямо внутри себя.
[[ ... ]] — это бабушка, которая за всю свою жизнь повидала много дерьма и вполне может понять твою сложную фразу: убрал И сделал уроки.
[ ... ] — это твой младший брат, пиздюк еще не в состоянии воспринимать такие большие выпады и ему нужно говорить частями.
«Сначала убрал?» — (ДА) Не пиздёж. «Сделал уроки?» — (ДА) Не пиздеж. «Ок, теперь я могу поиграть в девопс-инженера»Вот и вся наука. Изучай! 🛠 #bash #badpractices #bestpractices — ✅ @bashdays / @linuxfactory / @blog
Всё еще мечтаешь о ЗП > 200к? Тогда ты по адресу!Над курсом была проведена масштабная работа, все уроки я перенес на свои сервера. Под капотом движок mkdocs + material. Учел твою обратную связь, дополнил и отредактировал первые два сезона. Добавил темную тему и поиск + отрефачена куча мелочей.
Через LF за год прошло более 900 человек, 32 дали фидбек по офферу, то есть нашли работу мечты и получают 100500 мильонов в секунду. Что интересно в этом списке есть люди, которые вообще были далеки от айти и девопса.Ладно. Больше в уши не лью. Захочешь, сам почитаешь. В любом случае до конца апреля действует скидка
Осталось проверить блок питания, но подходящего не нашел. Заказал, чтобы исключить этот момент. Но очень сомневаюсь что это поможет. Надеюсь хоть винт на террабайт из строя не вышел, куданить потом его прикручу.Вот такие дела. В общем не рекомендую. По крайней мере для режима 24/7 эта хуйня явно не подходит, ну либо мне так повезло. По итогу достал свою старую добрую (пятую) малину, быстренько все на ней поднял и выдохнул. Четвертая малина у меня лет 8 отработала нонстопом без такой вот хуйни. Как придет блок питания, напишу по результатам. 🛠 #hardware #fails — ✅ @bashdays / @linuxfactory / @blog
Available now! Telegram Research 2025 — the year's key insights 
