linux.exex [GFYB]
158 subscribers
746 photos
87 videos
9 files
524 links
GFYB - go fuck yourself bitch. This Is team GFYB. goida
Download Telegram
Единственный тред по СИ clang

Тред для всех кто хочет погрузиться в низкоуровневое и системное программирование дедушки си

Обсуждаем чужие гитхабы, коды, программирование микроконтроллеров.

сам учился на степике, всем советую прочитать книгу Брайана Кернигана и Денниса Ритчи «Язык программирования Си»

ЗАДАВАЙТЕ ВОПРОСЫ И ПОЛУЧАЙТЕ ОТВЕТЫ!

Источник (2ch /pr/): https://2ch.org/pr/res/3619616.html

Подпишись на создателей: https://t.me/linuxexex
Совет по безопасности для линуксоида, который не хочет однажды обнаружить, что его сервер майнит крипту для дяди из интернета.

Первое и самое банальное, которое всё равно игнорируют — не сиди под рутом. Никогда. Вообще. Создай обычного пользователя и работай через него. sudo придумали не просто так, а чтобы ты хотя бы осознанно делал что-то деструктивное, а не случайно.

Второе — SSH. Если у тебя на сервере открыт 22 порт с парольной аутентификацией, можешь считать, что повесил объявление "взломайте меня, пожалуйста". Переходи на ключи, меняй порт на нестандартный, ставь fail2ban. В /etc/ssh/sshd_config пропиши PasswordAuthentication no и PermitRootLogin no. Это пять минут работы, но спасёт от тонны брутфорса.

Третье — firewall. ufw или iptables, не важно. Главное закрой всё что не используешь. Базовая схема: запрети всё входящее по умолчанию, разреши только то, что реально нужно. ufw default deny incoming, ufw allow ssh, ufw enable. Готово. Не надо быть параноиком, достаточно не быть идиотом.

Четвёртое — обновления. "Обновлю потом" — это путь в ад. В репозиториях регулярно закрывают дыры, а если ты сидишь на пакетах годичной давности, ты открытый склад уязвимостей. Поставь unattended-upgrades или хотя бы раз в неделю запускай apt upgrade вручную. На RPM-системах — dnf upgrade. Это не сложно.

Пятое — аудит того, что вообще слушает сеть. ss -tulnp или netstat -tulnp. Посмотри список. Часто обнаруживается, что какой-то сервис висит на 0.0.0.0 и светит наружу без всякой необходимости. Если не знаешь зачем оно там — отключи.

Шестое — логи читать не западло. /var/log/auth.log или journalctl -u ssh покажут, кто и как пытается к тебе лезть. Это полезная информация, а не мусор.

Бонус для параноиков: поставь auditd, настрой SELinux или AppArmor, используй rkhunter для проверки на руткиты. Это уже уровень выше, но если у тебя на сервере что-то важное — оно того стоит.

Безопасность это не разовая акция, это привычка. Потрать час сейчас или потрать неделю потом, восстанавливая систему и объясняя клиентам, куда делись их данные.

Подпишись на создателей: https://t.me/linuxexex
CTRL+R все знают. А вот что мало кто юзает — это параметр HISTTIMEFORMAT и связка с fc.

Начнём с простого. Если ты хочешь видеть дату и время каждой команды в истории, добавь в ~/.bashrc одну строку:

HISTTIMEFORMAT="%d.%m.%Y %H:%M:%S "

После этого history покажет не просто список команд, а когда именно ты их запускал. Удобно, когда надо выяснить, в какой момент ты всё сломал.

Теперь про fc. Это встроенная команда bash и zsh, которую игнорирует большинство людей, а зря.

fc без аргументов открывает последнюю команду в редакторе (vim, nano, что там у тебя в EDITOR). Исправил — сохранил — она сразу выполнилась. Не надо лезть в стрелку вверх и ковыряться в конце длинной строки.

fc -l выводит последние 16 команд с номерами.
fc -l 50 80 покажет команды с 50 по 80.
fc 42 откроет команду номер 42 в редакторе.
fc -s old=new перезапустит последнюю команду, заменив подстроку. Например, fc -s foo=bar запустит предыдущую команду, но вместо foo подставит bar. Быстрее, чем руками лезть в историю.

Ещё один трюк, который реально экономит время — HISTIGNORE. Добавь в.bashrc:

HISTIGNORE="ls:ll:cd:pwd:clear:exit"

Теперь эти команды вообще не пишутся в историю. История перестаёт быть помойкой из тысяч ls и cd.

В zsh всё это работает похоже, но там ещё есть setopt HIST_IGNORE_ALL_DUPS — убирает дубликаты не только подряд идущие, а вообще все. И setopt SHARE_HISTORY — история синхронизируется между всеми открытыми терминалами в реальном времени, а не только при закрытии сессии.

Итого: fc, HISTTIMEFORMAT, HISTIGNORE и пара setopt в zsh — и твоя история перестаёт быть бесполезным мусором и начинает реально работать.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Команда watch

Большинство людей не знают про неё вообще, хотя она встроена почти в каждый дистрибутив и реально экономит время.

watch запускает любую другую команду с заданным интервалом и показывает её вывод в терминале, обновляя его на месте. Никаких скриптов, никакого while true с sleep — просто одна строка.

Базовое использование:

watch df -h

Теперь у тебя мониторинг диска в реальном времени прямо в терминале. По умолчанию обновление каждые 2 секунды.

Хочешь раз в секунду:

watch -n 1 free -m

Смотришь за памятью и не дёргаешь руками Enter снова и снова.

Полезная опция -d (differences) — подсвечивает то, что изменилось с прошлого обновления. Очень удобно, когда следишь за логами, очередями, нагрузкой:

watch -d -n 2 cat /proc/loadavg

Можно комбинировать с grep, pipe и чем угодно, просто берёшь команду в кавычки:

watch -n 5 'ps aux | grep python | grep -v grep'

Отслеживаешь, живёт ли твой процесс, без лишних телодвижений.

Или классика — смотришь как растёт лог-файл:

watch -n 1 'wc -l /var/log/syslog'

Полезные флаги:

-n секунды — интервал обновления
-d — подсветка изменений
-t — убрать шапку с временем и названием команды (чисто для скриптов или красивого вывода)
-e — остановить при ненулевом коде возврата команды

Выйти из watch — просто Ctrl+C.

Кажется мелочью, но когда ты в третий раз за минуту жмёшь стрелку вверх и Enter чтобы посмотреть на тот же вывод — вспомни про watch. Одна команда и больше не надо.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Мало кто знает, что ядро Linux однажды чуть не убили юристы.

В начале 2000-х компания SCO Group заявила, что владеет правами на Unix и что код из их системы был незаконно скопирован в Linux. Они начали судиться с IBM, Novell и даже отдельными корпоративными пользователями Linux, требуя лицензионные выплаты за использование якобы украденного кода.

SCO оценила свои претензии в миллиарды долларов. Некоторые крупные компании реально начали нервничать и рассматривали переход обратно на проприетарные системы. Линус Торвальдс публично назвал всё это мусором и сказал примерно следующее: покажите хоть строчку украденного кода.

Показать не смогли.

Novell выиграла ключевой судебный спор, доказав, что именно они, а не SCO, владеют правами на Unix. Потом выяснилось, что за атакой на Linux стояли деньги Microsoft, которая вложилась в SCO через запутанные схемы. Не напрямую, но следы нашли.

SCO обанкротилась в 2007 году. Судебные тяжбы тянулись ещё годами, но Linux к тому моменту уже выиграл де-факто. Сегодня он крутится на большинстве серверов, смартфонов и суперкомпьютеров в мире.

Так что Linux убить пытались не только техническими аргументами, но и юридическими. Не вышло ни так ни эдак.

Подпишись на создателей: https://t.me/linuxexex
Марсоход NASA нашёл минерал, из которого растут рубины и сапфиры — прямо в марсианских породах

Perseverance провёл анализ горных пород и обнаружил корунд с хромом — это первое доказательство существования минерала, из которого образуются драгоценные камни, на Марсе. Никто этого не ожидал.

Корунд — это оксид алюминия. В чистом виде он бесцветный, но стоит добавить примеси — и получаются самоцветы. Хром даёт красный цвет, то есть рубин. Железо и титан — синий, то есть сапфир. На Земле такие камни формируются при высоких температурах и давлении в определённых геологических условиях.

То, что Perseverance нашёл хромсодержащий корунд в марсианских породах, говорит о том, что в прошлом на Марсе существовали похожие геологические процессы. Это не значит, что там лежат россыпи рубинов — речь идёт о минерале-предшественнике, о самом корунде, а не о готовых ювелирных камнях.

Находка сделана в кратере Езеро, где марсоход работает с 2021 года. Это первое подтверждение корунда на Марсе вообще — ни один из предыдущих аппаратов его не фиксировал.

linux.exe | @linuxexe_bot

Источник (r/science): https://www.reddit.com/r/science/comments/1vnbw2e/nasa_rover_unexpectedly_finds_ruby_and/

Подпишись на создателей: https://t.me/linuxexex
Факт дня: как Линус Торвальдс случайно назвал Linux "Linux"

В 1991 году Линус хотел назвать свою операционную систему Freax. Серьезно. Freax. От слов free, freak и unix. Он даже создал файл с таким именем на FTP-сервере, куда загружал ранние версии ядра.

Но у Ари Лемке, администратора того самого FTP-сервера Хельсинкского университета, было другое мнение. Он без спроса переименовал директорию из "freax" в "linux" — потому что это звучало разумнее и уже было именем домашней директории Торвальдса на сервере.

Линус поворчал, но оставил. Так и прижилось.

Представьте альтернативную вселенную: Freax kernel, FreaxMint, Freax Foundation, "я использую Freax, кстати". Звучит как название панк-группы или дешевого энергетика.

Хорошо, что Ари тогда проявил самодеятельность. Бюрократы иногда полезны.

Подпишись на создателей: https://t.me/linuxexex
В России создали свой лазер для топологических норм 65 нм. ASML больше не нужен

В России произведены опытные образцы эксимерного лазера для топологических норм 65 нм и меньше

Эксимерный лазер — важный компонент фотолитографических установок, использующихся при изготовлении микроэлектроники с нормами проектирования от 65 нм. Россия, где этот тип лазера был впервые изобретен еще в советское время (в 1970 году), до сих пор не имела его собственного серийного производства. Ситуация меняется: наши опытные образцы уже созданы в 2026 году. Россия становится третьим в мире обладателем собственной технологии.

В августе 2026 года на предприятии группы компаний «Лассард» были произведены первые опытные образцы эксимерного лазера — устройства, без которого невозможно изготовление современной микроэлектроники с проектными нормами от 65 нанометров и меньше.

До этого момента лазеры для литографических установок в России никогда не выпускались, и вся страна полностью зависела от импорта этого критически важного компонента. На сегодняшний день в мире серийным выпуском таких лазеров занимаются всего лишь две компании — японская GigaPhoton и американская Cymer, которая входит в структуру нидерландского гиганта ASML. Согласно данным аналитического отчета IndexBox за июль 2026 года, Cymer и GigaPhoton совместно контролируют до 90% мирового рынка высокомощных ArF-иммерсионных лазерных систем для передовых производств. Эта олигополия создает практически непреодолимые барьеры для выхода на рынок новых производителей.

Обсуждать коммерческие контракты на поставку литографов с Зеленоградским нанотехнологическим центром можно будет с 2027 года. Стоимость одной установки оценивается в 542,2 миллиона рублей, при этом совокупная потребность российского рынка оценивается в 15-25 таких установок в ближайшие пять-семь лет.

https://sdelanounas.ru/blogs/177641/ https://sdelanounas.ru/blogs/177641/

Источник (2ch /news/): https://2ch.org/news/res/19730460.html

Подпишись на создателей: https://t.me/linuxexex
tldr: инструмент называется jq, и если ты работаешь с JSON и до сих пор его не знаешь — ты просто теряешь время.

Что такое jq

Это консольный процессор JSON. Стоит в одном ряду с grep, sed и awk, только заточен под работу с JSON-данными. Установка одной командой на любой системе, никаких зависимостей, никакого питона, никаких node-скриптов.

Зачем он нужен

Представь: дёргаешь API, получаешь в ответ здоровенный JSON на 300 строк. Открывать браузер лень, писать скрипт — долго. jq режет этот JSON как хочешь прямо в терминале.

Примеры живые, не высосанные из пальца:

Достать одно поле из ответа curl:

curl -s https://api.example.com/users/1 | jq '.name'

Получить массив и пройтись по каждому элементу:

cat data.json | jq '.users[] |.email'

Отфильтровать только активных пользователей:

cat data.json | jq '[.users[] | select(.active == true)]'

Переименовать ключи на лету и построить новый объект:

cat data.json | jq '.users[] | {login:.username, mail:.email}'

Красиво распечатать страшный минифицированный JSON:

echo '{"a":1,"b":2}' | jq '.'

Всё это без единого питон-скрипта, без установки библиотек, прямо в терминале за секунды.

Где реально спасает

Дебаг API — когда надо быстро посмотреть, что вернул сервер, и найти нужное поле среди мусора.

CI/CD пайплайны — парсить JSON-ответы от GitHub Actions, GitLab, Docker Registry, всяких облачных API.

Скрипты на bash — jq встраивается в любой шелл-скрипт и вытаскивает значения без боли.

Работа с конфигами — многие современные инструменты хранят состояние в JSON, и jq позволяет читать и модифицировать его на лету.

Как поставить

Debian/Ubuntu: apt install jq
Fedora/RHEL: dnf install jq
Arch: pacman -S jq
macOS: brew install jq
Windows: winget install jqlang.jq

Важный момент

У jq свой язык запросов. Он несложный, но надо потратить час, чтобы разобраться в базовых конструкциях. Официальная документация на jqlang.github.io написана нормально, там есть встроенный плейграунд прямо в браузере — можно щупать без установки.

Итог

Если ты пишешь бэкенд, гоняешь запросы к API, пишешь скрипты деплоя или просто часто видишь JSON в терминале — jq это инструмент, который окупает время на изучение за первые же полчаса реальной работы. Один из тех редких случаев, когда инструмент делает ровно то, что обещает, без лишнего шума.

linux.exe | @linuxexe_bot

Подпишись на создателей: https://t.me/linuxexex
Совет по безопасности для линуксоида, который не хочет однажды проснуться с угнанным сервером.

Про sudo и почему ты делаешь это неправильно

Большинство людей настраивают sudo один раз при установке системы и забывают про него навсегда. Потом удивляются, откуда дыры.

Первое. Никогда не давай NOPASSWD на все команды. Видишь в sudoers строку вида "username ALL=(ALL) NOPASSWD: ALL" — это не удобство, это дырка размером с амбарные ворота. Если процесс или скрипт под твоим пользователем скомпрометирован, атакующий получает рута без единого пароля. Если уж нужен NOPASSWD, прописывай конкретные команды, которые реально нужны.

Второе. Проверяй, кто вообще в группе sudo или wheel. Делается элементарно:

getent group sudo
getent group wheel

Бывает, после установки какого-нибудь софта или при добавлении пользователя для деплоя туда случайно попадает лишний аккаунт. Проверяй периодически.

Третье. Включи логирование sudo-сессий. В sudoers добавь:

Defaults log_output
Defaults!/usr/bin/sudoreplay!log_output

Теперь все команды, выполненные через sudo, пишутся в лог. Потом можно посмотреть через sudoreplay, что там вообще творилось. Особенно полезно, если сервером пользуется не один ты.

Четвёртое. Ограничь время жизни sudo-токена. По умолчанию он живёт 15 минут. Можно поставить меньше или вообще в ноль, тогда пароль будет спрашиваться каждый раз:

Defaults timestamp_timeout=0

Неудобно? Да. Безопасно? Да.

Пятое. Проверяй файлы в /etc/sudoers.d/. Многие пакеты при установке кладут туда свои правила, и часть из них мягко говоря щедрая. После установки любого серьёзного софта загляни туда и посмотри, что за правила добавились.

И самое главное — sudo -l показывает, что именно текущий пользователь может делать через sudo. Запускай это под каждым сервисным аккаунтом, который есть на машине. Иногда результат неприятно удивляет.

Безопасность — это не параноя, это гигиена. Настроил один раз нормально и спишь спокойно.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Linux tip: namei

Есть команда, о которой часто забывают: namei.

Она раскладывает путь по компонентам и показывает права на каждом уровне:

namei -l /var/www/site/index.html

Это удобно, когда файл существует, права на нём нормальные, но nginx или приложение всё равно получает Permission denied. Проблема часто не в самом файле, а в одной из родительских папок.

Если дебажишь доступы в Linux, namei экономит много времени.

Подпишись на создателей: https://t.me/linuxexex
Усраинзске мир: Чиновник КС снимал порево со своей 3х летней дочерью

Чиновник Конституционного суда снимал порно со своей 3-летней дочерью, — источники в Офисе генпрокурора

Как утверждают источники Трухи, на момент совершения преступлений мужик работал в Конституционном суде. А когда понял, что дело может раскрыться, пошел служить в ВСУ. После этого его уволили из КСУ.

Сейчас этой сволочи сообщили о подозрении в растлении ребенка и принуждении к участию в создании детской порнографии. Ему грозит до 15 лет тюрьмы.

Суд, однако, отправил его под залог в 332 тысячи гривен. Прокуратура это решение уже обжалует.

https://t.me/uniannet/198441 https://t.me/uniannet/198441

Источник (2ch /news/): https://2ch.org/news/res/19731480.html

Подпишись на создателей: https://t.me/linuxexex
Open source факт: Linux начинался не как «большой проект»

В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.

Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.

Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.

Подпишись на создателей: https://t.me/linuxexex
Команда, про которую почти никто не знает: ts

Большинство людей знают tail -f, знают grep, знают awk. Но вот ts из пакета moreutils встречают редко, хотя она реально меняет жизнь при отладке и мониторинге.

Что делает ts? Добавляет временную метку к каждой строке вывода. Звучит просто, но применений масса.

Установка:
apt install moreutils
или
yum install moreutils

Базовое использование:

ping google.com | ts

Вместо голых строк получаешь:

Jul 14 21:03:01 64 bytes from 142.250.74.46
Jul 14 21:03:02 64 bytes from 142.250.74.46

Хочешь формат с миллисекундами:

ping google.com | ts '%.S'

Хочешь относительное время с момента запуска:

ping google.com | ts -s

Вот где это реально спасает:

Логирование скриптов. Запускаешь деплой или бэкап, и каждая строка вывода получает метку. Потом не надо гадать, на каком шаге всё зависло и сколько оно там провисело.

./deploy.sh 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' | tee deploy.log

Отладка тормозных процессов. Видишь, между какими строками лог молчал 30 секунд. Без ts ты просто видишь вывод, с ts видишь картину целиком.

Мониторинг в реальном времени. Любой tail -f превращается в нормальный журнал:

tail -f /var/log/syslog | ts

Разница между ts и просто добавлением date в скрипте в том, что ts работает как обёртка над любым процессом без правки его исходников. Не трогаешь чужой скрипт, не переписываешь сервис — просто пайпишь через ts и получаешь метки.

Мелочь? Да. Но именно такие мелочи экономят час жизни в самый неподходящий момент.

Поставь moreutils, там кстати ещё куча полезного — sponge, vidir, pee и другие штуки, про которые тоже мало кто знает.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
/hpg/ & /sg/ & /hifi/ - Общий тред по наушникам, колонкам и Hi-Fi

Наушники miiku.

Как запрашивать советы:
Местоположение (цены и наличие могут отличаться)
Бюджет
Что именно ищешь (чем подробнее, тем лучше)
Предыдущее железо и твои впечатления о нём

Проводные наушники с открытым задником:
Hifiman HE400se
Sennheiser HD 560S
Sennheiser HD 6XX (США)
FiiO FT1 Pro

Проводные наушники с закрытым задником:
Beyerdynamic DT770
Shure SRH440A/SRH840A
AKG K361/K371
FiiO FT1

Беспроводные Bluetooth-наушники:
https://www.rtings.com/headphones/reviews/best/by-feature/wireless-bluetooth

Беспроводные игровые наушники:
https://www.rtings.com/headphones/reviews/best/wireless-gaming-headsets

Дешёвые связки усилитель/ЦАП:
JDS Atom2 Stack
Schiit Magni Unity + Mesh
Apos Gremlin/Merlin
Донглы (Fiio, Crinacle)
DX5II убрали из списка, потому что он теперь жжёт наушники по той же схеме, что и L30: https://www.audiosciencereview.com/forum/index.php?threads/topping-dx5-ii.60996/page-127#post-2492199

Активные настольные/полочные колонки:
Edifier R1280/MR3/MR4
iLoud Micro
Kali LP-6 v2
Neumann KH 80
KEF Coda W

Пассивные настольные/полочные колонки:
KEF Q1/Q3 Meta
Ascilab F6B

Интерфейсы:
Steinberg IXO22
Topping E1x2
Motu M2

Усилители для колонок:
Loxjie A30
Yamaha R-S202
WiiM Amp

Программный EQ/DSP:
Equalizer APO (Windows)
EasyEffects (Linux)
Wavelet / RootlessJamesDSP (Android)
PEQdb (браузер)

Железный EQ/DSP:
Qudelix 5K
Neutron DAC V1
miniDSP

Полезные ресурсы:
https://xiph.org/video/
https://harmanhowtolisten.blogspot.com/
https://www.audiosciencereview.com/forum/index.php
https://superbestaudiofriends.org/index.php
https://diyaudioheaven.wordpress.com/
https://www.erinsaudiocorner.com/
https://peqdb.com/

Источник (4chan /g/): https://boards.4chan.org/g/thread/109477097

Подпишись на создателей: https://t.me/linuxexex
jq — парсер JSON из командной строки, который большинство разработчиков либо не знает, либо знает, но использует на 5% от возможностей.

Ставится одной командой, работает везде, и буквально меняет то, как ты работаешь с API, логами и конфигами в терминале.

Базовое использование такое: берёшь вывод curl и прогоняешь через jq.

curl -s https://api.example.com/users | jq.

Получаешь красиво отформатированный JSON с подсветкой. Уже удобно. Но это только начало.

Хочешь вытащить конкретное поле из ответа:

curl -s https://api.example.com/users | jq '.[].name'

Получишь список имён всех пользователей. Хочешь только первого:

jq '.[0].name'

Хочешь отфильтровать массив по условию — например, только активных пользователей:

jq '[.[] | select(.active == true)]'

Хочешь переформатировать объект и взять только нужные поля:

jq '[.[] | {id:.id, login:.email}]'

Работаешь с вложенными структурами — без проблем:

jq '.data.users[].profile.city'

Самое полезное в реальной жизни: у тебя есть здоровый JSON-лог от какого-нибудь сервиса, и тебе нужно быстро найти все записи с ошибками за последний час. Делаешь это прямо в терминале без Python-скрипта, без Excel, без боли.

cat service.log | jq 'select(.level == "error") | {time:.timestamp, msg:.message}'

Другой сценарий — у тебя Kubernetes и ты хочешь узнать, на каких нодах крутятся поды с определённым лейблом:

kubectl get pods -o json | jq '.items[] | select(.metadata.labels.app == "nginx") |.spec.nodeName'

Или парсишь terraform output и вытаскиваешь конкретные адреса ресурсов. Или смотришь конфиг AWS через CLI и не хочешь читать тысячу строк глазами.

jq умеет ещё: арифметику над полями, строковую интерполяцию, рекурсивный обход через.., работу с env-переменными через --arg, чтение из файла через -f, компактный вывод через -c, raw-строки через -r чтобы убрать кавычки из вывода.

Флаг -r особенно важен когда ты хочешь передать результат дальше в скрипт:

jq -r '.[].id' | xargs -I{} curl -s https://api.example.com/user/{}

Ставится так:

На Debian/Ubuntu: apt install jq
На Arch: pacman -S jq
На Mac: brew install jq
На Alpine: apk add jq

Онлайн-площадка для экспериментов — jqplay.org. Вставляешь JSON, пишешь фильтр, смотришь результат. Удобно когда надо быстро проверить запрос перед тем как вставить в скрипт.

jq кажется простым инструментом, но это обманчивое впечатление. Чем больше ты с ним работаешь, тем больше находишь применений. Это из разряда тех утилит, которые после привыкания ты уже не представляешь как жил без них.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Факт дня из истории Linux и опенсорса.

В 1991 году Линус Торвальдс написал в конференцию comp.os.minix примерно следующее: "Я делаю свободную операционную систему — просто хобби, не будет большой и профессиональной, как GNU". Ему было 21 год, он студент финского универа, и он искренне думал, что пишет маленькую игрушку для себя.

На тот момент у него уже был работающий планировщик задач и базовый драйвер терминала. Ядро умещалось в несколько тысяч строк кода и запускалось только на 386-м процессоре Intel. Торвальдс вообще не думал о портируемости — он писал под конкретное железо, которое стояло у него на столе.

Сейчас ядро Linux содержит около 30 миллионов строк кода. Над ним работают тысячи разработчиков из Intel, Google, Meta, Red Hat, Samsung и сотен других компаний. Оно крутится на андроид-телефонах, серверах, суперкомпьютерах, автомобилях, телевизорах, роутерах и даже на Марсе — вертолёт Ingenuity от NASA летает под управлением системы на ядре Linux.

Отдельный прикол в том, что Торвальдс изначально хотел назвать ядро Freax — гибрид от слов free, freak и unix. Именно под этим именем он загрузил первые файлы на FTP-сервер. Но администратор сервера Ари Лемке без спроса создал для проекта директорию с именем linux, и название прилипло навсегда. Сам Торвальдс поначалу считал это имя слишком самонадеянным.

Так что, если подумать, имя крупнейшей опенсорсной операционки в мире выбрал случайный сисадмин, которому было лень называть папку freax.

Подпишись на создателей: https://t.me/linuxexex
Мало кто знает, что первое сообщение Линуса Торвальдса о Linux в 1991 году начиналось со слов "Это просто хобби, оно не будет большим и профессиональным, как GNU". Буквально. Человек вышел в интернет и сказал: не ждите ничего серьёзного, я просто балуюсь.

Конкретно 25 августа 1991 года он написал в newsgroup comp.os.minix сообщение, в котором спросил, что люди хотели бы видеть в Minix. Вот оттуда и пошло. Никакого пафоса, никакого манифеста, никакой революции в заголовке. Просто студент из Хельсинки, которому было скучно, решил написать свою операционную систему потому что Minix его раздражал лицензионными ограничениями, а покупать UNIX было не на что.

Ему было 21 год.

Через два месяца, в октябре того же года, вышла версия 0.02. Она умела запускать bash и gcc. Всё. Больше ничего не работало толком. Но люди уже начали присылать патчи.

Вот что реально странно: Линус выбрал лицензию GPL не потому что был идейным борцом за свободное ПО. Он вообще сначала выпустил Linux под своей собственной лицензией, которая запрещала коммерческое использование. Только в 1992 году он переключился на GPLv2 -- и это решение, принятое почти случайно, в итоге определило то, каким стал весь open source мир. Потому что GPL потребовала от всех, кто брал код, отдавать изменения обратно. Именно это и сделало Linux тем, чем он стал.

Сейчас в ядре Linux более 27 миллионов строк кода. В разработке участвуют тысячи людей из сотен компаний, включая Intel, Google, Red Hat, Samsung. А началось всё с парня, который публично сказал что это несерьёзно и ничего из этого не выйдет.

Иногда лучший способ сделать что-то великое -- это не знать, что ты это делаешь.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Прорыв может изменить подход к лечению метастатического рака простаты

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

Метастатический рак простаты остаётся одной из главных причин смертности среди мужчин. На поздних стадиях болезни традиционная гормональная терапия нередко теряет эффективность, и раковые клетки продолжают делиться вопреки лечению. Именно здесь новое открытие может сыграть решающую роль.

Учёные сосредоточились на механизмах устойчивости опухоли к существующим препаратам. Выявленные молекулярные мишени открывают возможность для разработки принципиально новых схем терапии, способных бить по раку там, где он раньше был практически неуязвим.

Если результаты исследования подтвердятся в клинических испытаниях, это может означать реальный сдвиг в онкологии — не очередной косметический апгрейд протоколов, а смену самой логики лечения для пациентов с запущенными формами заболевания.

Источник (r/technews): https://www.reddit.com/r/technews/comments/1vkq6rg/breakthrough_may_change_treatment_for_metastatic/

Подпишись на создателей: https://t.me/linuxexex
ctrl+r — это штука, которую большинство людей знают, но почти никто не использует по-настоящему.

Находишься в терминале, нужно повторить команду, которую писал час назад. Что делаешь? Жмёшь стрелку вверх и листаешь историю как дурак. Так делают все. И так делать не надо.

Жмёшь ctrl+r — терминал входит в режим обратного поиска по истории. Начинаешь печатать кусок команды — любое слово, флаг, путь — и bash или zsh мгновенно находит последнее вхождение. Нашёл нужное — Enter чтобы выполнить, или стрелка вправо чтобы отредактировать перед запуском. Хочешь следующее совпадение — жмёшь ctrl+r ещё раз.

Это работает из коробки везде: bash, zsh, fish с небольшими отличиями. Никаких плагинов, никаких настроек.

Но это только начало. По умолчанию история в bash хранит 500-1000 строк и не сохраняет дубли. Это мало. Добавь в ~/.bashrc такое:

HISTSIZE=50000
HISTFILESIZE=100000
HISTCONTROL=ignoredups:erasedups
shopt -s histappend

Перезапусти терминал — теперь у тебя десятки тысяч команд в истории без мусора и дублей. ctrl+r начинает работать в полную силу.

Отдельная история — fzf. Это fuzzy finder, который можно повесить на ctrl+r вместо стандартного поиска. Ставится одной командой, интегрируется в shell автоматически. После этого поиск по истории превращается в интерактивный список с нечётким поиском — можно искать по частям слов в любом порядке, сразу видишь все совпадения, выбираешь стрелками.

Поставить fzf:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Соглашаешься на интеграцию с shell — и ctrl+r теперь другой. Попробовав один раз, к стандартному поиску уже не возвращаешься.

Ещё один момент, который мало кто знает: восклицательный знак в bash — это history expansion. Пишешь!! — вставляется последняя команда. Забыл написать sudo? sudo!! — готово. Пишешь!ssh — выполняется последняя команда, начинавшаяся на ssh. Пишешь!$ — подставляется последний аргумент предыдущей команды.

Создал директорию mkdir /очень/длинный/путь/к/чему-то, хочешь туда перейти — пишешь cd!$ и не повторяешь путь руками.

Это не какие-то хитрые трюки, это базовый инструментарий терминала, который существует десятилетиями. Просто никто не объясняет это в начале пути, и люди годами жмут стрелку вверх там, где можно было сделать за секунду.

linux.exe

Подпишись на создателей: https://t.me/linuxexex
Расскажу про одну вещь в bash и zsh, которую большинство людей просто не замечают годами, хотя пользуются шеллом каждый день.

Это parameter expansion с заменой подстрок. Вот смотри.

Есть переменная:

file="backup_2024_server.tar.gz"

Ты хочешь заменить "2024" на "2025". Без sed, без awk, без форка вообще. Прямо в шелле:

echo "${file/2024/2025}"

Получишь backup_2025_server.tar.gz.

Это заменяет первое вхождение. Хочешь заменить все вхождения сразу -- двойной слэш:

str="aababab"
echo "${str//ab/X}"

Получишь aXXX.

Но это ещё цветочки. Вот где начинается настоящая магия.

Удаление префикса:

path="/home/user/projects/myapp"
echo "${path#/home/user/}"

Получишь projects/myapp. Один решётка -- удаляет самый короткий совпадающий префикс.

Двойная решётка -- самый длинный:

echo "${path##*/}"

Получишь myapp. По сути это basename без запуска отдельного процесса.

То же самое с суффиксом через процент:

echo "${file%.tar.gz}"

Получишь backup_2024_server. Это dirname/basename логика прямо в шелле.

Двойной процент -- жадное удаление суффикса:

str="one.two.three"
echo "${str%%.*}"

Получишь one.

Теперь длина строки без wc:

echo "${#file}"

Просто и без лишнего процесса.

Подстрока по позиции:

str="hello world"
echo "${str:6:5}"

Получишь world. Синтаксис: переменная, двоеточие, начало, двоеточие, длина.

Отрицательный индекс работает тоже -- берёт с конца. В bash нужен пробел перед минусом чтобы не спутать с дефолтным значением:

echo "${str: -5}"

Получишь world.

Зачем это знать? Каждый раз когда ты пишешь в скрипте что-то вроде:

result=$(echo "$var" | sed 's/foo/bar/')

ты создаёшь подпроцесс, пайп, тратишь форк. В цикле на тысячах итераций это реально ощутимо. Parameter expansion работает внутри самого шелла, без форков, мгновенно.

В zsh всё это тоже работает, плюс там есть дополнительные флаги через скобочный синтаксис типа ${(U)var} для uppercase, ${(L)var} для lowercase. Bash делает то же самое через ${var^^} и ${var,,}.

Так что следующий раз когда потянешься за sed для простой замены в строке -- вспомни этот пост.

linux.exe | @linuxexe_bot

Подпишись на создателей: https://t.me/linuxexex