Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
نمایش بیشتر📈 تحلیل کانال تلگرام Bash Days | Linux | DevOps
کانال Bash Days | Linux | DevOps (@bashdays) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 23 794 مشترک است و جایگاه 5 701 را در دسته فناوری و برنامهها و رتبه 28 128 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 23 794 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 17 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -202 و در ۲۴ ساعت گذشته برابر -5 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 21.91% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 12.48% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 5 213 بازدید دریافت میکند. در اولین روز معمولاً 2 971 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 21 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند bashdays, linux, bash, docker, скрипт تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 18 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
Эта музыка будет вечной, если я заменю батарейки
#!/bin/bash
declare -i a=9223372036854775803
for i in {1..10};do
echo $((a++))
done
Нука бармалеи, чо будет?
+ прикол
#!/bin/bash
declare -i a=1
for i in {1..64};do
a=a*2
[[ $i -gt 60 ]] && echo $i,$a
donecurl https://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 !#:3
ack — инструмент для поиска текста в файлах, который часто используется разработчиками как более удобная и современная альтернатива `grep`. Он написан на Perl и ориентирован на работу с кодом.В строке, в конце есть непонятности:
!#:3
ㅤ
Опять какая-то магия, а магию мы с тобой любим.
Давай разберемся.
В данном случае !#:3 — это конструкция, связанная с историей команд в оболочке Bash/Zsh.
! = Используется для доступа к истории команд.
Например, !! повторит последнюю команду, а !123 выполнит команду с номером 123 в истории.
# = Ссылается на текущую команду, которая в данный момент пишется.
Вместо доступа к уже выполненной команде из истории, мы ссылаемся на текст текущей строки.
:3 = Указывает, что нужно взять третий аргумент в текущей строке.
Соответственно:
:1 — первый аргумент :2 — второй аргумент :3 — третий аргументКак это работает? Сначала выполняется команда curl, которая скачает файл ack-2.28-single-file и сохранит его в
~/bin/ack.
После этого, команда chmod изменяет права доступа для файла.
А !#:3 подставляет третий аргумент текущей команды, то есть ~/bin/ack.
И по итогу команда превращается в chmod 0755 ~/bin/ack
curl http://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
Вот и вся магия. Упорото? Аще!
А зачем это нужно?
- удобно для автоматизации и избежания дублирования ввода
- снижает вероятность ошибок, если накосячил в путях
Короче эта хреновина делает команду более динамичной и минимизирует рукоблудие.
Штука прикольная, как говорится — век живи, век учись.
🔥 Ну и с пятницей друзья! Еще пару недель и каникулы.
tags: #bash
—
🔔 @bashdays➡️ @gitgatewhile [ $(pgrep process_name)>'0' ]
do
sleep 5
done
Смотрю я в неё и понять не могу, а нахуя?
ㅤ
Давай разберемся что тут не так.
«[» = это аналог или синоним встроенной команды «test». Если не задавать оператор, то на пустой строке вернется FALSE. Ну и логично что вернется TRUE если срока не пустая.
«while» — ежу понятно, условный цикл. Будем вертеть на хуй, пока команда заданная в условие возвращаешь истину. В нашем случае эта команда «test».
«pgrep» — ищем процесс с именем process_name. Эта штука выводит на стандартный вывод PID процесса. Если процесс не найден, код возврата отличный от нуля и нуль в противном случае.
«$(command)» — Command запускается в подоболочке. Результат выполнения, подставляется в текущую позицию.
«>» — Перенаправляет результат работы команды в файл (в нашем случае файл 0). Существующий файл, перезаписывается. Несуществующий, будет создан.
Понял в чем дело? Нет? Давай дальше…
Вопрос — нахуя здесь «test»? Цикл и так является условным и сам проверяет что вернула команда. Получается избыточность.
Команда test — Предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными.Такое обычно херачат, либо по привычке, либо когда нужно быстрое решение, а времени на ресерч нет. Работает да и хрен с ним. Вся эта конструкция могла бы выглядеть так:
while pgrep process_name &> /dev/null
do
sleep 5
done
Цикл будет шуршать, пока команда pgrep отрабатывает без ошибок и находит процесс.
Вот такая вот романтика, на хую два бантика… Изучай!
tags: #bash
—
🔔 @bashdays➡️ @gitgate1. Открываю терминал 2. Запускаю к примеру sleep 10 3. Курсор перескакивает на новую строкуНо команда sleep еще не завершилась, а курсор уже выпрыгнул из штанов. ㅤ Хочу, чтобы курсор после запуска команды не перескакивал на новую строку, а ждал завершения команды. Люблю я себе головняк создать на ровном месте. Поехали решать чо!
cursor_killer() {
echo -ne '\e[?25h'
trap 'echo -ne "\e[?25l"; trap DEBUG' DEBUG
}
PROMPT_COMMAND='cursor_killer'
Получилась такая упоротая и непонятная функция.
Что происходит?
Инициализируем переменную PROMPT_COMMAND. Это команда выполняется перед выводом строки приглашения (prompt).
Дальше делаем курсор видимым с помощью echo. А следом скрываем курсор перед выполнением каждой команды с помощью trap.
В trap мы установили обработчик для псевдо-сигнала DEBUG.
➡️ help trap
If a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.
\e[?25h = включает отображение курсора (h = "show")
\e[?25l = отключает отображение курсора (l = "low visibility" или "hide")
Получилось так:
1. Первая команда делает курсор видимым.
2. Вторая команда установит обработчик на сигнал DEBUG.
3. Обработчик скрывает курсор и сбрасывается обработчик для сигнала DEBUG в дефолт.
Сохраняем эту поделку в cur_killer.sh и запускаем когда нам это нужно. Либо делаем source cur_killer.sh.
Ну а чтобы эта штука оказалась тебе полезной, можешь написать свой отладчик bash скриптов.
К примеру будем выводить команду, перед её выполнением:
trap 'echo "RUN: $BASH_COMMAND"' DEBUG
Теперь позапускай sleep, ls или что-то еще, перед выполнением команды, на экран будет выводиться команда. К примеру так:
trap 'echo "RUN: $BASH_COMMAND"' DEBUG
ls
RUN: ls --color=auto -la
Вот такой фигнёй я порой занимаюсь, а не сериальчики смотрю.
Покеда! Вечером еще увидимся, декабрь прям шепчет на контент и интеграции. В январе уж отдохнем.
tags: #bash
—
🔔 @bashdays➡️ @gitgateError in file "script.py" on line 42: NameError: name 'variable' is not defined
Хуяк и открыл script.py сразу на 42 строке.
Короче давай посмотрим как это сделать.
Создаем файл для теста:
( printf '%s\n' {A..Z}-$[++I] > /tmp/bashdays.txt )
Получаем такое содержимое:
A-1
B-2
C-3
D-4
E-5
F-6
G-7
H-8
I-9
...
Ну и теперь давай открывать это:
➡️ mcedit
mcedit +7 /tmp/bashdays.txt
➡️ less
less -w +11 /tmp/bashdays.txt
➡️ nano
nano +14 /tmp/bashdays.txt
➡️ vim
vim +4 /tmp/bashdays.txt
Вот такие пироги. А какие еще редакторы ты знаешь в которых можно открыть файл на определенной строке? Камон в комменты!
tags: #linux #tricks #bash
—
🔔 @bashdays➡️ @gitgateЯ тут как-то пост в стол написал, показываю, выж просили ничего от вас не скрывать, ловите! Такие посты буду помечать тэгом #memories.❄️ Насчет годовой премии. Когда только я пришел в компанию и в конце года получил премию (или тринадцатую зарплату) в размере оклада, я конечно прихуел. ㅤ Мол, ебать, вот это подгон, вот это я понимаю, чуваки заботятся о своих подчиненных. И для себя понял, что следующий год буду прям со всей силы ебашить и никого не подведу. Так и было. А еще у меня родился ребенок, ну и там плюшек тоже подогнали + 2 недели отпуска + еще каждый год можно на недельку в отгулы сходить за счет компании. Короче этакая компания мечты. Во второй год, дали премию в размере половины ЗП. Я такой — ммм, ну ладно, хотя план очень даже перевыполнили. Ну бизнесу виднее. Моя мотивация хуячить в прежнем режиме немного поугасла. Потом почему-то пропала неделя с отгулами (в году можно было 7 дней прогулять без последсвий), перестали поздравлять с днюхами и вообще все стали каким-то обособленными и злыми. Мир менялся. И на фоне этого я тоже начал становится обособленным, а самое главное злым. В дальнейшем эта злость помогла мне неплохо попрыгать по карьерной лестнице. Ну и сейчас кожа помогает не делать хуиту, которую я делать не хочу. Меня можно заставить, но результатом никто доволен не останется. Прошел еще один год и годовую премию вообще не дали. План снова был перевыполнен. Не, ну чо за херня. Да еще и за дежурства не заплатили (хотя ссали в уши что будет x2). Мотивация работать хорошо, вообще пропала. И вот в этом году, дошли слухи, что премия будет, но не всем. И ты сидишь такой и думаешь — бляяяяяяя.... сууууккккаааа.... и последнюю неделю просто уже не можешь работать, потому что не знаешь, дадут тебе премию или нет. А если не дадут? Получается я зря поработал неделю? А если дадут? Что будет? Ну деньги будут. И чо? Но не всем? А как все? Они же будут знать, что тебе дали, а им не дали? Они посчитают, что бизнес повел себя не объективно и будут хуёва работать. Короче. Вся эта хуита с премиями создает разбалансировку в коллективе. Если ты собрался платить премию, плати ее каждый год и каждый год фиксированной суммой либо больше. Нахуй голову людям морочить? Один раз дал, потом не дал — всё, человек отреагировал на эту ситуацию и в большинстве случаев негативно. Это условный рефлекс, как у собаки. Собака получила кость и рада, в другой раз не получила и насрала на стену. Хочешь сделать хорошо? Не давай вообще никому премий, а если хочешь дать, дай ее никак не привязывая к какой-то дате. Вот дали мне премию в апреле, ну заебись, но я точно знаю что в апреле 2025 мне хуй чо дадут. Тут у меня есть прозрачность и понимание. А вот в прозрачности тринадцатой разплаты у меня нет. Может быть, может не быть, может половина, а может 0.58 процента. ЭТО ЕБАЛА! Еще работал в компании, дак там директор был жадный до мозга костей, покупал себе особняки и ламборджини. Но премий никому не давал. Люди по этому поводу даже и не парились, потому, что знали что премий нет. Прозрачность. Хуль тут еще скажешь, с предстоящим вас Новым Годом, господа и дамы! Чо там у тебя с премией-то? tags: #рабочиебудни #memories — 🔔 @bashdays➡️ @gitgate
chmod -R +X ./ установит возможность поиска во всех подкаталогах текущего, но не сделает все файлы исполняемыми!
Ну, ладно, я отвлекся. 330.
Тут в чате Alex (генератор идей) правильно назвал права «черной комнатой». Клаcсная аналогия.
Короче, я баню зловредов, которые ломятся ко мне на ssh. Баню в разных филиалах. И филиалы сваливают ежедневные отчеты мне, в головной по sftp.
По-хорошему, нужно, чтоб для каждого филиала, отдельная учетка, все загружают, каждый в свой каталог... Но данные не особо ценные.
Но и паранойю никто не отменял. А если ломанут один филиал, и как начнут данные отравлять... :-)
В общем принял решение, что все работают под одной учеткой. Поставил права на папку 330 (-wx-wx---).
Эти права разрешают файл открыть, записать, удалить. Только нужно точно указать какой конкретно файл. Потому что список получить нельзя.
Файлы сваливаются с суффиксом, например filXXX_Ohd1Ul.txt Имя файла для каждого филиала всегда одно и то же, префикс - название филиала, суффикс набор букв (защита от перебора).
То есть на сервере в головном от root я вижу все файлы, а филиалы не видят не то что соседние файлы, но даже свой.
Эти права раньше часто ставили на папку upload на анонимных ftp серверах. Но и сейчас можно использовать, для заливки, бэкапов, например.
Да, знаю, сейчас опытные админы набегут и начнут рассказывать про rsync. Я архивы шифрую. А при работе с шифрованными архивами rsync работает хуже, чем sftp. (Ну, сначала контрольные суммы, потом сравнение, потом синхронизация).
А что там сравнивать... они всегда разные. Блин, опять скатился на больное... В общем, при одной учетке, формально можно считать sftp сервер анонимным, но с кругом пользователей, ограниченным ключами :-).
Применение прав 330 позволяет упростить заливку файлов с обеспечением некоторой секьюрности.
Для освежения памяти очень рекомендую статью chmod в википедии.
tags: #security #linux
—
🔔 @bashdays➡️ @gitgatevi это стероидные штуки, со своими свистоперделками, обвесами и т.п. А vi давно уже в деприкейтед.
VIM = VI iMproved, то есть — «VI Улучшенный»
Прям готовое погоняло для викинга.Сейчас в современных дистрибутивах предустановлен именно
vim. Даже в CentOS 7 был предустановлен vim вместо vi (без симлинков).
Так что ничего тут такого нет. Отличия — в функциональности.
Банально открой какой-нибудь index.py в vi и потом в vim, сразу увидишь что в vi отсутствует подсветка синтаксиса + в vi если память не изменяет — не было визуального режима.
Но если будешь проверять, убедись что открывается именно vi, потому что в 99999% у тебя отроется vim.
Такие дела. Вечерком залетит пост попизже от Tagd про права.
Хорошей всем рабочий недели!
tags: #linux
—
🔔 @bashdays➡️ @gitgate
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
