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 794 subscribers, ranking 5 701 in the Technologies & Applications category and 28 128 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 23 794 subscribers.
According to the latest data from 17 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -202 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 21.91%. Within the first 24 hours after publication, content typically collects 12.48% reactions from the total number of subscribers.
- Post reach: On average, each post receives 5 213 views. Within the first day, a publication typically gains 2 971 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 21.
- 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 18 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.
Эта музыка будет вечной, если я заменю батарейки
#!/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
Available now! Telegram Research 2025 — the year's key insights 
