Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
显示更多📈 Telegram 频道 Bash Days | Linux | DevOps 的分析概览
频道 Bash Days | Linux | DevOps (@bashdays) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 23 803 名订阅者,在 技术与应用 类别中位列第 5 708,并在 俄罗斯 地区排名第 28 124 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 23 803 名订阅者。
根据 16 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -201,过去 24 小时变化为 -10,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 20.40%。内容发布后 24 小时内通常能获得 11.53% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 4 855 次浏览,首日通常累积 2 744 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 17。
- 主题关注点: 内容集中在 bashdays, linux, bash, docker, скрипт 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
凭借高频更新(最新数据采集于 17 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
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
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
