tee — труба с раздвоением
Все знают пайпы в Linux. Гонишь вывод одной команды в другую — красота. Но иногда хочется одновременно и в файл записать, и дальше по трубе пустить. Вот тут и приходит tee.
Название — от буквы T, форма которой буквально описывает что происходит: поток данных идёт прямо и одновременно ответвляется в сторону.
Простой пример:
ls -la | tee output.txt | grep ".sh"
Что произошло: вывод ls записался в output.txt И при этом ушёл дальше в grep. Без tee пришлось бы делать два отдельных вызова или городить костыли.
Несколько полезных флагов:
-a (append) — не перезаписывает файл, а дописывает в конец. Незаменимо для логов.
./deploy.sh | tee -a deploy.log | grep "ERROR"
Следишь за ошибками в реальном времени и лог копится — удобно.
Запись в несколько файлов сразу — просто перечисляешь их:
echo "привет" | tee file1.txt file2.txt file3.txt
Все три файла получат одинаковое содержимое.
Хитрый трюк с sudo — когда надо записать в системный файл, но редиректом это не выйдет:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
Классическая ошибка новичков — написать sudo echo ... > /etc/sysctl.conf. sudo применяется к echo, а редирект > выполняется от текущего пользователя. Получаешь "Permission denied". С tee — работает, потому что именно tee запускается с правами root и пишет в файл.
Можно подавить вывод в терминал, если нужна только запись в файл, и дальнейшая обработка через пайп — перенаправляешь в /dev/null:
command | tee output.txt > /dev/null
Не самый частый сценарий, но бывает нужен в скриптах.
tee есть везде — Linux, macOS, BSD. Входит в GNU Coreutils, так что никаких установок не нужно. Одна из тех команд, про которую не думаешь неделями, а потом однажды вспоминаешь — и она решает задачу за три секунды.
linux.exe
📍 Подпишись на создателей: https://t.me/linuxexex
Все знают пайпы в Linux. Гонишь вывод одной команды в другую — красота. Но иногда хочется одновременно и в файл записать, и дальше по трубе пустить. Вот тут и приходит tee.
Название — от буквы T, форма которой буквально описывает что происходит: поток данных идёт прямо и одновременно ответвляется в сторону.
Простой пример:
ls -la | tee output.txt | grep ".sh"
Что произошло: вывод ls записался в output.txt И при этом ушёл дальше в grep. Без tee пришлось бы делать два отдельных вызова или городить костыли.
Несколько полезных флагов:
-a (append) — не перезаписывает файл, а дописывает в конец. Незаменимо для логов.
./deploy.sh | tee -a deploy.log | grep "ERROR"
Следишь за ошибками в реальном времени и лог копится — удобно.
Запись в несколько файлов сразу — просто перечисляешь их:
echo "привет" | tee file1.txt file2.txt file3.txt
Все три файла получат одинаковое содержимое.
Хитрый трюк с sudo — когда надо записать в системный файл, но редиректом это не выйдет:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
Классическая ошибка новичков — написать sudo echo ... > /etc/sysctl.conf. sudo применяется к echo, а редирект > выполняется от текущего пользователя. Получаешь "Permission denied". С tee — работает, потому что именно tee запускается с правами root и пишет в файл.
Можно подавить вывод в терминал, если нужна только запись в файл, и дальнейшая обработка через пайп — перенаправляешь в /dev/null:
command | tee output.txt > /dev/null
Не самый частый сценарий, но бывает нужен в скриптах.
tee есть везде — Linux, macOS, BSD. Входит в GNU Coreutils, так что никаких установок не нужно. Одна из тех команд, про которую не думаешь неделями, а потом однажды вспоминаешь — и она решает задачу за три секунды.
linux.exe
📍 Подпишись на создателей: https://t.me/linuxexex
📰 Мой SpaceX останется «GaySex»
Всё. Больше добавить нечего.
Источник (4chan /biz/): https://boards.4chan.org/biz/thread/62525448
📍 Подпишись на создателей: https://t.me/linuxexex
Всё. Больше добавить нечего.
Источник (4chan /biz/): https://boards.4chan.org/biz/thread/62525448
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/biz/ - My spacex stays gaysex! - Business & Finance - 4chan
My spacex stays gaysex! - "/biz/ - Business & Finance" is 4chan's imageboard for the discussion of business and finance, and cryptocurrencies such as Bitcoin and Dogecoin.
Один совет по безопасности, который реально стоит внедрить
Большинство линуксоидов настраивают систему один раз и потом годами не трогают. А между тем есть одна штука, которую легко забыть и о которой потом горько жалеют — это аудит SUID/SGID-файлов.
Что это и зачем?
SUID-бит позволяет запускать файл с правами владельца (обычно root), даже если ты обычный пользователь. Это нужно для таких команд как passwd или sudo. Но если злоумышленник подбросит или подменит хотя бы один такой файл — он получает повышение привилегий. Тихо и незаметно.
Как проверить систему прямо сейчас:
find / -perm /4000 -o -perm /2000 2>/dev/null
Эта команда выведет все файлы с SUID или SGID-битом на всей системе. Пробегись глазами по списку. Видишь что-то незнакомое или подозрительное — это повод разбираться.
Что дальше?
Зафиксируй эталонный список сразу после чистой установки или настройки системы. Сохрани его в файл:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort > suid_baseline.txt
И периодически сравнивай с текущим состоянием:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort | diff suid_baseline.txt -
Если в выводе появляются новые строки — кто-то или что-то добавило новый файл с повышенными привилегиями. Это уже сигнал тревоги.
Для автоматизации можно повесить такую проверку в cron и отправлять результат на почту или в бот — тогда ты узнаешь об изменениях раньше, чем они станут проблемой.
Маленький лайфхак: если хочешь убрать SUID-бит с конкретного файла, которому он не нужен — это делается так:
chmod u-s /путь/к/файлу
Только не трогай системные утилиты без понимания последствий. passwd без SUID превратится в тыкву.
Безопасность — это не разовая акция, это привычка проверять. 🔒
📍 Подпишись на создателей: https://t.me/linuxexex
Большинство линуксоидов настраивают систему один раз и потом годами не трогают. А между тем есть одна штука, которую легко забыть и о которой потом горько жалеют — это аудит SUID/SGID-файлов.
Что это и зачем?
SUID-бит позволяет запускать файл с правами владельца (обычно root), даже если ты обычный пользователь. Это нужно для таких команд как passwd или sudo. Но если злоумышленник подбросит или подменит хотя бы один такой файл — он получает повышение привилегий. Тихо и незаметно.
Как проверить систему прямо сейчас:
find / -perm /4000 -o -perm /2000 2>/dev/null
Эта команда выведет все файлы с SUID или SGID-битом на всей системе. Пробегись глазами по списку. Видишь что-то незнакомое или подозрительное — это повод разбираться.
Что дальше?
Зафиксируй эталонный список сразу после чистой установки или настройки системы. Сохрани его в файл:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort > suid_baseline.txt
И периодически сравнивай с текущим состоянием:
find / -perm /4000 -o -perm /2000 2>/dev/null | sort | diff suid_baseline.txt -
Если в выводе появляются новые строки — кто-то или что-то добавило новый файл с повышенными привилегиями. Это уже сигнал тревоги.
Для автоматизации можно повесить такую проверку в cron и отправлять результат на почту или в бот — тогда ты узнаешь об изменениях раньше, чем они станут проблемой.
Маленький лайфхак: если хочешь убрать SUID-бит с конкретного файла, которому он не нужен — это делается так:
chmod u-s /путь/к/файлу
Только не трогай системные утилиты без понимания последствий. passwd без SUID превратится в тыкву.
Безопасность — это не разовая акция, это привычка проверять. 🔒
📍 Подпишись на создателей: https://t.me/linuxexex
Мало кто знает про CDPATH — и зря.
Это переменная окружения в bash и zsh, которая работает как PATH, только для команды cd. Объясняю на пальцах.
Допустим, у тебя есть куча проектов в ~/projects, и ты постоянно делаешь:
cd ~/projects/myapp
cd ~/projects/backend
cd ~/projects/frontend
Надоедает. Добавляешь в .bashrc или .zshrc одну строчку:
export CDPATH=.:~:~/projects
И теперь из любой директории пишешь просто:
cd myapp
cd backend
cd frontend
Шелл сам найдёт нужную папку, пробежавшись по путям в CDPATH слева направо. Если нашёл — переходит и печатает полный путь, чтобы ты не потерялся. Точка в начале означает "сначала смотри в текущей директории" — это важно, иначе поведение cd станет неожиданным.
Можно добавить несколько корневых папок через двоеточие. Например, если работаешь ещё и с конфигами:
export CDPATH=.:~:~/projects:~/work/configs
Zsh дружит с этим ещё приятнее — автодополнение по Tab учитывает CDPATH и подсказывает папки из всех указанных мест. Bash тоже умеет, но чуть хуже из коробки.
Маленький нюанс: если в двух папках из CDPATH есть одноимённые директории — победит та, чей родитель стоит левее в списке. Поэтому порядок важен.
Простая штука, настраивается за 30 секунд, а экономит кучу нажатий каждый день. Такие мелочи и делают работу в терминале приятной 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Это переменная окружения в bash и zsh, которая работает как PATH, только для команды cd. Объясняю на пальцах.
Допустим, у тебя есть куча проектов в ~/projects, и ты постоянно делаешь:
cd ~/projects/myapp
cd ~/projects/backend
cd ~/projects/frontend
Надоедает. Добавляешь в .bashrc или .zshrc одну строчку:
export CDPATH=.:~:~/projects
И теперь из любой директории пишешь просто:
cd myapp
cd backend
cd frontend
Шелл сам найдёт нужную папку, пробежавшись по путям в CDPATH слева направо. Если нашёл — переходит и печатает полный путь, чтобы ты не потерялся. Точка в начале означает "сначала смотри в текущей директории" — это важно, иначе поведение cd станет неожиданным.
Можно добавить несколько корневых папок через двоеточие. Например, если работаешь ещё и с конфигами:
export CDPATH=.:~:~/projects:~/work/configs
Zsh дружит с этим ещё приятнее — автодополнение по Tab учитывает CDPATH и подсказывает папки из всех указанных мест. Bash тоже умеет, но чуть хуже из коробки.
Маленький нюанс: если в двух папках из CDPATH есть одноимённые директории — победит та, чей родитель стоит левее в списке. Поэтому порядок важен.
Простая штука, настраивается за 30 секунд, а экономит кучу нажатий каждый день. Такие мелочи и делают работу в терминале приятной 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Один лайфхак для терминала, который реально экономит время
Если ты часто работаешь в командной строке, то наверняка знаешь боль: набрал длинную команду, нажал Enter — и только потом заметил опечатку. Или хочешь повторить команду из прошлой недели, но уже не помнишь её целиком.
Вот что реально помогает — интерактивный поиск по истории через fzf.
Стандартный Ctrl+R в bash работает, но неудобно: ищет по одному результату, нужно жать снова и снова. fzf меняет это полностью.
Ставишь fzf:
На Ubuntu/Debian — sudo apt install fzf
На Arch — sudo pacman -S fzf
На macOS — brew install fzf
Добавляешь в ~/.bashrc или ~/.zshrc одну строку:
source /usr/share/doc/fzf/examples/key-bindings.bash
(для zsh путь может отличаться, смотри документацию пакета)
Перезапускаешь шелл — и теперь Ctrl+R открывает интерактивное окно поиска прямо в терминале. Начинаешь печатать любое слово из команды — список фильтруется в реальном времени. Нашёл нужное — Enter, и команда вставляется в строку ввода. Можно ещё отредактировать перед запуском.
Это не всё. fzf цепляется и к Ctrl+T — интерактивный поиск файлов в текущей директории. И к Alt+C — быстрый переход в любую поддиректорию без cd и табов.
Казалось бы, мелочь. Но когда перестаёшь тратить время на листание истории стрелками и вспоминание точного синтаксиса — замечаешь, насколько быстрее идёт работа.
Особенно ценно, если работаешь на нескольких серверах по SSH и история у каждого своя. fzf одинаково хорошо работает везде, где его поставил.
Попробуй один день с ним — обратно уже не захочешь 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
Если ты часто работаешь в командной строке, то наверняка знаешь боль: набрал длинную команду, нажал Enter — и только потом заметил опечатку. Или хочешь повторить команду из прошлой недели, но уже не помнишь её целиком.
Вот что реально помогает — интерактивный поиск по истории через fzf.
Стандартный Ctrl+R в bash работает, но неудобно: ищет по одному результату, нужно жать снова и снова. fzf меняет это полностью.
Ставишь fzf:
На Ubuntu/Debian — sudo apt install fzf
На Arch — sudo pacman -S fzf
На macOS — brew install fzf
Добавляешь в ~/.bashrc или ~/.zshrc одну строку:
source /usr/share/doc/fzf/examples/key-bindings.bash
(для zsh путь может отличаться, смотри документацию пакета)
Перезапускаешь шелл — и теперь Ctrl+R открывает интерактивное окно поиска прямо в терминале. Начинаешь печатать любое слово из команды — список фильтруется в реальном времени. Нашёл нужное — Enter, и команда вставляется в строку ввода. Можно ещё отредактировать перед запуском.
Это не всё. fzf цепляется и к Ctrl+T — интерактивный поиск файлов в текущей директории. И к Alt+C — быстрый переход в любую поддиректорию без cd и табов.
Казалось бы, мелочь. Но когда перестаёшь тратить время на листание истории стрелками и вспоминание точного синтаксиса — замечаешь, насколько быстрее идёт работа.
Особенно ценно, если работаешь на нескольких серверах по SSH и история у каждого своя. fzf одинаково хорошо работает везде, где его поставил.
Попробуй один день с ним — обратно уже не захочешь 🙂
📍 Подпишись на создателей: https://t.me/linuxexex
📰 /cyb/+/psg/: Кибerpunk, безопасность и приватность
«Чем дальше общество отдаляется от правды, тем сильнее оно будет ненавидеть тех, кто её говорит.»
— Джордж Оруэлл
> Кибerpunk
FAQ: https://archive.is/mkDpa
Что такое /cyb/erpunk?: https://pastebin.com/pmn9vzWZ
Как войти в /cyb/erpunk?: https://pastebin.com/5tpNFQds
Огромный список киберпанк-медиа: https://archive.is/6pQt6
Cyberdeck: https://pastebin.com/7fE4BVBg
Cyberlife: https://jinteki.industries/files/cyberlife.7z
Библиотека (Bibliothek): https://www.mediafire.com/folder/4m5hd2065hde8/Bibliothek
> Сети
Tor: https://www.torproject.org/download/
I2P: https://i2p.net/en/
Freenet: https://www.hyphanet.org/
> Приватность
Инструменты: https://www.privacyguides.org/en/tools/
Железо с открытым ПО: https://ryf.fsf.org/products
Приватные фронтенды: https://igwiki.lyci.de/wiki/Privacy_friendly_frontends
Гайд по OSINT: https://inteltechniques.com/index.html
Прошивки: https://libreboot.org/
РМС о Facebook: https://stallman.org/facebook.html
Проверь, утекли ли твои данные: https://haveibeenpwned.com/
> Безопасность
«Всё стало серьёзно»: https://pastebin.com/rqrLK6X0
Основы кибербезопасности: https://igwiki.lyci.de/wiki/Cybersecurity_-_/sec/_guide
Базовый арсенал: https://igwiki.lyci.de/wiki/Cybersecurity_-_basics_and_armory
Обучение / новости / CTF: https://igwiki.lyci.de/wiki/Cybersecurity_-_Learning/News/CTFs
PDF-подборка /sec/: https://mega.nz/#F!zGJT1QQQ!O-8yiH845GN26ajAvkoLkA
EFF — самозащита от слежки: https://ssd.eff.org/
Дополнительная библиотека: https://mega.nz/file/UCgEGAjb#rwNcnMAQCUUbSp8supsFvn9QEHCWUW86eLcZa16ZG4Y
Актуальные ссылки для удаления себя из баз данных брокеров:
https://pastebin.com/cDbDXQvh
https://pastebin.com/raw/cDbDXQvh
Источник (4chan /g/): https://boards.4chan.org/g/thread/109387207
📍 Подпишись на создателей: https://t.me/linuxexex
«Чем дальше общество отдаляется от правды, тем сильнее оно будет ненавидеть тех, кто её говорит.»
— Джордж Оруэлл
> Кибerpunk
FAQ: https://archive.is/mkDpa
Что такое /cyb/erpunk?: https://pastebin.com/pmn9vzWZ
Как войти в /cyb/erpunk?: https://pastebin.com/5tpNFQds
Огромный список киберпанк-медиа: https://archive.is/6pQt6
Cyberdeck: https://pastebin.com/7fE4BVBg
Cyberlife: https://jinteki.industries/files/cyberlife.7z
Библиотека (Bibliothek): https://www.mediafire.com/folder/4m5hd2065hde8/Bibliothek
> Сети
Tor: https://www.torproject.org/download/
I2P: https://i2p.net/en/
Freenet: https://www.hyphanet.org/
> Приватность
Инструменты: https://www.privacyguides.org/en/tools/
Железо с открытым ПО: https://ryf.fsf.org/products
Приватные фронтенды: https://igwiki.lyci.de/wiki/Privacy_friendly_frontends
Гайд по OSINT: https://inteltechniques.com/index.html
Прошивки: https://libreboot.org/
РМС о Facebook: https://stallman.org/facebook.html
Проверь, утекли ли твои данные: https://haveibeenpwned.com/
> Безопасность
«Всё стало серьёзно»: https://pastebin.com/rqrLK6X0
Основы кибербезопасности: https://igwiki.lyci.de/wiki/Cybersecurity_-_/sec/_guide
Базовый арсенал: https://igwiki.lyci.de/wiki/Cybersecurity_-_basics_and_armory
Обучение / новости / CTF: https://igwiki.lyci.de/wiki/Cybersecurity_-_Learning/News/CTFs
PDF-подборка /sec/: https://mega.nz/#F!zGJT1QQQ!O-8yiH845GN26ajAvkoLkA
EFF — самозащита от слежки: https://ssd.eff.org/
Дополнительная библиотека: https://mega.nz/file/UCgEGAjb#rwNcnMAQCUUbSp8supsFvn9QEHCWUW86eLcZa16ZG4Y
Актуальные ссылки для удаления себя из баз данных брокеров:
https://pastebin.com/cDbDXQvh
https://pastebin.com/raw/cDbDXQvh
Источник (4chan /g/): https://boards.4chan.org/g/thread/109387207
📍 Подпишись на создателей: https://t.me/linuxexex
archive.is
The alt.cyberpunk FAQ - sizeof(cat)
archived 26 Jun 2025 19:48:57 UTC
Один лайфхак для терминала, который я использую каждый день
Если ты часто работаешь в терминале, то наверняка знаешь эту боль — набираешь длинную команду, понимаешь что ошибся в начале строки, и начинаешь долбить стрелку влево или зажимаешь Backspace.
Стоп. Есть способ лучше.
Ctrl+A — переходит в начало строки
Ctrl+E — переходит в конец строки
Ctrl+W — удаляет слово слева от курсора
Alt+B — прыгает на слово назад
Alt+F — прыгает на слово вперёд
Это базовые шорткаты bash/readline, которые работают везде — в zsh, fish (частично), в psql, python REPL, даже в gdb.
Но вот лайфхак, который реально меняет жизнь 👇
Набери в терминале:
set -o vi
Теперь твой bash работает в vi-режиме. Нажимаешь Esc — и ты в командном режиме. Жмёшь b, w, 0, $, x, dd — всё как в vim, прямо в строке ввода. Хочешь отредактировать длинную команду по-человечески — нажимаешь v, и она открывается в полноценном редакторе.
Назад к обычному режиму:
set -o emacs
Чтобы vi-режим сохранился навсегда, добавь в ~/.bashrc:
set -o vi
Если ты уже на vi-режиме — есть ещё один трюк. Нажми Esc, потом k — и ты листаешь историю команд в стиле vim. Нажми / — и можешь искать по истории как в vim-поиске.
Бонус для тех, кто не хочет vi-режим, но хочет удобный поиск по истории:
Ctrl+R — интерактивный поиск назад по истории. Начинаешь вводить фрагмент команды — терминал сам находит последнее совпадение. Ctrl+R ещё раз — следующее совпадение.
Это, пожалуй, самый недооценённый шорткат вообще. Люди по 5 лет работают в Linux и не знают про Ctrl+R 🙈
Попробуй прямо сейчас — Ctrl+R и начни вводить docker или git. Увидишь магию.
📍 Подпишись на создателей: https://t.me/linuxexex
Если ты часто работаешь в терминале, то наверняка знаешь эту боль — набираешь длинную команду, понимаешь что ошибся в начале строки, и начинаешь долбить стрелку влево или зажимаешь Backspace.
Стоп. Есть способ лучше.
Ctrl+A — переходит в начало строки
Ctrl+E — переходит в конец строки
Ctrl+W — удаляет слово слева от курсора
Alt+B — прыгает на слово назад
Alt+F — прыгает на слово вперёд
Это базовые шорткаты bash/readline, которые работают везде — в zsh, fish (частично), в psql, python REPL, даже в gdb.
Но вот лайфхак, который реально меняет жизнь 👇
Набери в терминале:
set -o vi
Теперь твой bash работает в vi-режиме. Нажимаешь Esc — и ты в командном режиме. Жмёшь b, w, 0, $, x, dd — всё как в vim, прямо в строке ввода. Хочешь отредактировать длинную команду по-человечески — нажимаешь v, и она открывается в полноценном редакторе.
Назад к обычному режиму:
set -o emacs
Чтобы vi-режим сохранился навсегда, добавь в ~/.bashrc:
set -o vi
Если ты уже на vi-режиме — есть ещё один трюк. Нажми Esc, потом k — и ты листаешь историю команд в стиле vim. Нажми / — и можешь искать по истории как в vim-поиске.
Бонус для тех, кто не хочет vi-режим, но хочет удобный поиск по истории:
Ctrl+R — интерактивный поиск назад по истории. Начинаешь вводить фрагмент команды — терминал сам находит последнее совпадение. Ctrl+R ещё раз — следующее совпадение.
Это, пожалуй, самый недооценённый шорткат вообще. Люди по 5 лет работают в Linux и не знают про Ctrl+R 🙈
Попробуй прямо сейчас — Ctrl+R и начни вводить docker или git. Увидишь магию.
📍 Подпишись на создателей: https://t.me/linuxexex
Расскажу про одну штуку в bash и zsh, которую большинство людей просто не замечают, хотя пользуются терминалом каждый день.
Это модификаторы истории. Знак восклицательного знака — не только для эмоций 😄
Допустим, ты только что запустил длинную команду:
rsync -avz --progress /home/user/projects/ backup@192.168.1.100:/mnt/backup/
И теперь хочешь повторить её, но с другим путём. Можно стрелку вверх, потом долго ёлозить курсором. А можно вот так:
!! — повторяет последнюю команду целиком. Классика, многие знают.
Но вот что знают единицы:
!$ — последний аргумент предыдущей команды.
Пример. Создал директорию и хочешь сразу в неё зайти:
mkdir /tmp/very/long/path/here
cd !$
Всё, не надо ничего перепечатывать. !$ подставит /tmp/very/long/path/here автоматически.
!^ — первый аргумент. Если аргументов несколько и нужен самый первый — вот он.
!:2, !:3 и так далее — конкретный аргумент по номеру. Нумерация с нуля, где 0 — сама команда, 1 — первый аргумент и так далее.
Например:
cp file1.txt file2.txt file3.txt /destination/
!:1 вернёт file1.txt, !:2 — file2.txt, и так далее.
!:1-3 — диапазон аргументов. В примере выше вернёт file1.txt file2.txt file3.txt без пути назначения.
!:* — все аргументы без самой команды. Удобно когда хочешь выполнить другую команду с теми же файлами.
Ещё одна вещь — модификатор замены ^старое^новое^
Опечатался в команде:
git comit -m "fix"
Жмёшь Enter, получаешь ошибку. Вместо того чтобы лезть в историю, просто:
^comit^commit^
bash/zsh возьмёт последнюю команду и заменит первое вхождение. Готово.
И последнее — !строка
!git найдёт последнюю команду, которая начиналась на git, и выполнит её. Без лишних поисков по истории.
!?строка? — то же самое, но ищет вхождение строки в любом месте команды, не только в начале.
Всё это работает в bash и zsh одинаково. В zsh ещё есть глобальные псевдонимы и расширения, но это уже отдельная история.
Попробуй !$ прямо сейчас — это одна из тех вещей, после которых уже не понимаешь, как жил без неё раньше 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
Это модификаторы истории. Знак восклицательного знака — не только для эмоций 😄
Допустим, ты только что запустил длинную команду:
rsync -avz --progress /home/user/projects/ backup@192.168.1.100:/mnt/backup/
И теперь хочешь повторить её, но с другим путём. Можно стрелку вверх, потом долго ёлозить курсором. А можно вот так:
!! — повторяет последнюю команду целиком. Классика, многие знают.
Но вот что знают единицы:
!$ — последний аргумент предыдущей команды.
Пример. Создал директорию и хочешь сразу в неё зайти:
mkdir /tmp/very/long/path/here
cd !$
Всё, не надо ничего перепечатывать. !$ подставит /tmp/very/long/path/here автоматически.
!^ — первый аргумент. Если аргументов несколько и нужен самый первый — вот он.
!:2, !:3 и так далее — конкретный аргумент по номеру. Нумерация с нуля, где 0 — сама команда, 1 — первый аргумент и так далее.
Например:
cp file1.txt file2.txt file3.txt /destination/
!:1 вернёт file1.txt, !:2 — file2.txt, и так далее.
!:1-3 — диапазон аргументов. В примере выше вернёт file1.txt file2.txt file3.txt без пути назначения.
!:* — все аргументы без самой команды. Удобно когда хочешь выполнить другую команду с теми же файлами.
Ещё одна вещь — модификатор замены ^старое^новое^
Опечатался в команде:
git comit -m "fix"
Жмёшь Enter, получаешь ошибку. Вместо того чтобы лезть в историю, просто:
^comit^commit^
bash/zsh возьмёт последнюю команду и заменит первое вхождение. Готово.
И последнее — !строка
!git найдёт последнюю команду, которая начиналась на git, и выполнит её. Без лишних поисков по истории.
!?строка? — то же самое, но ищет вхождение строки в любом месте команды, не только в начале.
Всё это работает в bash и zsh одинаково. В zsh ещё есть глобальные псевдонимы и расширения, но это уже отдельная история.
Попробуй !$ прямо сейчас — это одна из тех вещей, после которых уже не понимаешь, как жил без неё раньше 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
⚡ Терминальный лайфхак: Ctrl+R
Вместо того чтобы листать историю стрелкой вверх, нажми Ctrl+R и начни вводить кусок старой команды.
Например, вводишь ssh или docker, и shell сразу ищет совпадение в истории. Ещё одно Ctrl+R — следующее совпадение.
Это особенно удобно для длинных команд с флагами, путями и портами.
Бонус: в zsh можно усилить поиск через fzf, но даже встроенный Ctrl+R уже заметно ускоряет работу.
📍 Подпишись на создателей: https://t.me/linuxexex
Вместо того чтобы листать историю стрелкой вверх, нажми Ctrl+R и начни вводить кусок старой команды.
Например, вводишь ssh или docker, и shell сразу ищет совпадение в истории. Ещё одно Ctrl+R — следующее совпадение.
Это особенно удобно для длинных команд с флагами, путями и портами.
Бонус: в zsh можно усилить поиск через fzf, но даже встроенный Ctrl+R уже заметно ускоряет работу.
📍 Подпишись на создателей: https://t.me/linuxexex
📰 JPEG XL [JXL] Thread
JPEG XL - Новый свободный формат изображений, который мы заслуживаем.
Из распространённых форматов на сегодняшний день мы имеем старый добрый JPEG, который немного омолодила Mozilla, когда выпустила кодировщик MOZ JPEG; PNG (для изображений без потерь) и GIF, который давно пора отправить на свалку истории.
Также есть несколько относительно свежих форматов изображений, которые являются побочным продуктом, полученным при разработки видеокодеков. К примеру HEIС (HEIF) который так любит Apple происходит из видеокодека HEVC. Та же история с форматами WebP и AVIF, которые произошли из VP9 (VP8) и AV1 соответственно.
Но так как эти кодировщики делались изначально для видео, они концептуально не настолько эффективны для хранения изображений.
Джва года назад собрались компании Google и JPEG и решили, что так дальше дела не могут идти и создали новый свободный формат, который должен стать новым мировым стандартом, как когда-то стал JPEG. И у него есть все шансы. Он одновременно может заменить JPEG, в случаях сжатия с потерями (например фотки), PNG, в случаях сжатия без потерь (скриншоты), GIF (коротенькие анимации), ведь он может это всё гораздо лучше их самих.
Основные фичи формата:
- Сжимает на 60% лучше, чем JPEG.
- Сжимает без потерь на 35% лучше, чем PNG.
- Он может транскодировать jpeg изображение без потерь туда и обратно. Транскодированное JPEG XL изображение весит на ~20% меньше оригинала. Это значит, что можно спокойно пережать все свои фотки, не потеряв ни бита информации. Таким больше никто не может похвастаться.
- Поддержка прогрессивного декодирования (актуально для веба. Наполовину загруженная пикча уже выглядит хорошо)
- Анимации (замена гифок).
- Почти полнота по Тьюрингу (если бы не ограничения на максимальный размер обрабатываемых пикселей). Это позволит почти бесконечно оптимизировать формат. Пикрил в формате JPEG XL весит всего 117 байтов! И по факту является программой по его генерации, написанной вручную. Больше подобных пикч можно найти в комьюнити Discord сервере.
- Свободный формат, а это значит, что его может использовать кто и как угодно. Его уже можно активировать в Chrome, если включить флаг enable-jxl, и в ночных сборках Firefox. Также его поддержка уже добавлена в Gnome. Для винды тоже есть вьюеры. Про Plasma вообще без понятия (скорее всего тоже есть).
Сайт сообщества: https://jpegxl.info/ https://jpegxl.info/
Там все нужные ссылки, картинки и более подробное объяснение всего.
Источник (2ch /s/): https://2ch.org/s/res/3213710.html
📍 Подпишись на создателей: https://t.me/linuxexex
JPEG XL - Новый свободный формат изображений, который мы заслуживаем.
Из распространённых форматов на сегодняшний день мы имеем старый добрый JPEG, который немного омолодила Mozilla, когда выпустила кодировщик MOZ JPEG; PNG (для изображений без потерь) и GIF, который давно пора отправить на свалку истории.
Также есть несколько относительно свежих форматов изображений, которые являются побочным продуктом, полученным при разработки видеокодеков. К примеру HEIС (HEIF) который так любит Apple происходит из видеокодека HEVC. Та же история с форматами WebP и AVIF, которые произошли из VP9 (VP8) и AV1 соответственно.
Но так как эти кодировщики делались изначально для видео, они концептуально не настолько эффективны для хранения изображений.
Джва года назад собрались компании Google и JPEG и решили, что так дальше дела не могут идти и создали новый свободный формат, который должен стать новым мировым стандартом, как когда-то стал JPEG. И у него есть все шансы. Он одновременно может заменить JPEG, в случаях сжатия с потерями (например фотки), PNG, в случаях сжатия без потерь (скриншоты), GIF (коротенькие анимации), ведь он может это всё гораздо лучше их самих.
Основные фичи формата:
- Сжимает на 60% лучше, чем JPEG.
- Сжимает без потерь на 35% лучше, чем PNG.
- Он может транскодировать jpeg изображение без потерь туда и обратно. Транскодированное JPEG XL изображение весит на ~20% меньше оригинала. Это значит, что можно спокойно пережать все свои фотки, не потеряв ни бита информации. Таким больше никто не может похвастаться.
- Поддержка прогрессивного декодирования (актуально для веба. Наполовину загруженная пикча уже выглядит хорошо)
- Анимации (замена гифок).
- Почти полнота по Тьюрингу (если бы не ограничения на максимальный размер обрабатываемых пикселей). Это позволит почти бесконечно оптимизировать формат. Пикрил в формате JPEG XL весит всего 117 байтов! И по факту является программой по его генерации, написанной вручную. Больше подобных пикч можно найти в комьюнити Discord сервере.
- Свободный формат, а это значит, что его может использовать кто и как угодно. Его уже можно активировать в Chrome, если включить флаг enable-jxl, и в ночных сборках Firefox. Также его поддержка уже добавлена в Gnome. Для винды тоже есть вьюеры. Про Plasma вообще без понятия (скорее всего тоже есть).
Сайт сообщества: https://jpegxl.info/ https://jpegxl.info/
Там все нужные ссылки, картинки и более подробное объяснение всего.
Источник (2ch /s/): https://2ch.org/s/res/3213710.html
📍 Подпишись на создателей: https://t.me/linuxexex
jpegxl.info
JPEG XL: Superior Image Compression
Explore JPEG XL, the next-generation image format delivering superior compression, fast encoding/decoding, and seamless JPEG transcoding. The future of image compression is here.
📜 Open source факт: Linux начинался не как «большой проект»
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexex
В 1991 году Линус Торвальдс выложил ядро как личный эксперимент для своего компьютера. Никакого плана захватить серверы, облака, Android и embedded-мир тогда не было.
Сила Linux оказалась не только в коде, а в модели разработки: тысячи людей могли читать, чинить, портировать и улучшать систему под свои задачи.
Итог: сегодня Linux работает в серверах, роутерах, телефонах, суперкомпьютерах и куче устройств, о которых пользователь даже не думает.
📍 Подпишись на создателей: https://t.me/linuxexex
Совет по безопасности, который многие игнорируют 🔐
Вы когда-нибудь запускали скрипт из интернета вот так:
curl https://example.com/install.sh | bash
Да, это удобно. Да, так делают почти все туториалы. И да, это один из самых рискованных способов что-либо установить.
Проблема в том, что вы не видите, что именно выполняется. Скрипт может вести себя по-разному в зависимости от того, качаете вы его или пайпите напрямую в bash — некоторые авторы вредоносов это учитывают. Скачанный файл будет выглядеть безобидно, а в реальном выполнении сделает что-то совсем другое.
Как надо делать:
Сначала скачать, потом читать, потом запускать.
curl -O https://example.com/install.sh
less install.sh
bash install.sh
Да, это три команды вместо одной. Зато вы знаете, что именно запускаете.
Ещё несколько вещей, которые стоит держать в голове 👇
sudo без понимания — зло. Перед тем как дать скрипту рут-права, убедитесь, что он реально их требует и вы понимаете зачем.
umask по умолчанию часто слишком мягкий. Проверьте командой umask — если видите 0022, новые файлы создаются с правами 644, а директории с 755. Для домашних каталогов лучше поставить 0077, тогда файлы будут доступны только вам.
SSH без пароля — это норм, но только если ключи хранятся правильно. Права на ~/.ssh должны быть 700, на authorized_keys — 600. Иначе SSH просто проигнорирует файл.
Проверяйте, кто слушает порты. Команда ss -tlnp покажет, какие процессы висят на каких портах. Иногда после установки какого-нибудь пакета неожиданно обнаруживается сервис, смотрящий наружу.
И последнее — AppArmor или SELinux. Многие отключают их сразу после установки системы, потому что они мешают. Но именно они ограничивают ущерб, если что-то пойдёт не так. Лучше потратить время на настройку профилей, чем потом разбираться с последствиями.
Безопасность — это не паранойя, это привычка 🛡️
📍 Подпишись на создателей: https://t.me/linuxexex
Вы когда-нибудь запускали скрипт из интернета вот так:
curl https://example.com/install.sh | bash
Да, это удобно. Да, так делают почти все туториалы. И да, это один из самых рискованных способов что-либо установить.
Проблема в том, что вы не видите, что именно выполняется. Скрипт может вести себя по-разному в зависимости от того, качаете вы его или пайпите напрямую в bash — некоторые авторы вредоносов это учитывают. Скачанный файл будет выглядеть безобидно, а в реальном выполнении сделает что-то совсем другое.
Как надо делать:
Сначала скачать, потом читать, потом запускать.
curl -O https://example.com/install.sh
less install.sh
bash install.sh
Да, это три команды вместо одной. Зато вы знаете, что именно запускаете.
Ещё несколько вещей, которые стоит держать в голове 👇
sudo без понимания — зло. Перед тем как дать скрипту рут-права, убедитесь, что он реально их требует и вы понимаете зачем.
umask по умолчанию часто слишком мягкий. Проверьте командой umask — если видите 0022, новые файлы создаются с правами 644, а директории с 755. Для домашних каталогов лучше поставить 0077, тогда файлы будут доступны только вам.
SSH без пароля — это норм, но только если ключи хранятся правильно. Права на ~/.ssh должны быть 700, на authorized_keys — 600. Иначе SSH просто проигнорирует файл.
Проверяйте, кто слушает порты. Команда ss -tlnp покажет, какие процессы висят на каких портах. Иногда после установки какого-нибудь пакета неожиданно обнаруживается сервис, смотрящий наружу.
И последнее — AppArmor или SELinux. Многие отключают их сразу после установки системы, потому что они мешают. Но именно они ограничивают ущерб, если что-то пойдёт не так. Лучше потратить время на настройку профилей, чем потом разбираться с последствиями.
Безопасность — это не паранойя, это привычка 🛡️
📍 Подпишись на создателей: https://t.me/linuxexex
📰 Расследование о бандах грумеров опубликовано — всё хуже, чем вы думали
Британский депутат Руперт Лоу опубликовал масштабный независимый доклад о бандах грумеров в Великобритании. Доклад получил название «Расследование банд насильников» (The Rape Gang Inquiry), вышел 16 июня, насчитывает около 218 страниц и основан на показаниях выживших, судебных материалах и предыдущих расследованиях.
Лоу, возглавляющий движение Restore Britain (ранее — Reform UK), руководил расследованием. Финансирование шло за счёт публичного краудфандинга.
Согласно докладу, организованные банды насильников действовали как минимум в 149 районах местного самоуправления. При этом полиция, социальные службы, школы, медицинские учреждения и политики намеренно не защищали уязвимых девочек, что позволило подвергнуть около 250 000 из них многократным изнасилованиям, групповому насилию, торговле людьми, пыткам, принудительному обращению в другую веру — с пожизненными психологическими последствиями.
В докладе описывается чудовищное насилие на протяжении многих лет в таких городах, как Ротерем, Рочдейл, Телфорд и десятках других мест. Выжившие дали шокирующие показания о насилии, торговле людьми, наркотиках и пытках. Большинство насильников — мужчины пакистанского мусульманского происхождения. Банды намеренно выбирали уязвимых девочек из неблагополучных семей.
Источник (4chan /news/): https://boards.4chan.org/news/thread/1520026
📍 Подпишись на создателей: https://t.me/linuxexex
Британский депутат Руперт Лоу опубликовал масштабный независимый доклад о бандах грумеров в Великобритании. Доклад получил название «Расследование банд насильников» (The Rape Gang Inquiry), вышел 16 июня, насчитывает около 218 страниц и основан на показаниях выживших, судебных материалах и предыдущих расследованиях.
Лоу, возглавляющий движение Restore Britain (ранее — Reform UK), руководил расследованием. Финансирование шло за счёт публичного краудфандинга.
Согласно докладу, организованные банды насильников действовали как минимум в 149 районах местного самоуправления. При этом полиция, социальные службы, школы, медицинские учреждения и политики намеренно не защищали уязвимых девочек, что позволило подвергнуть около 250 000 из них многократным изнасилованиям, групповому насилию, торговле людьми, пыткам, принудительному обращению в другую веру — с пожизненными психологическими последствиями.
В докладе описывается чудовищное насилие на протяжении многих лет в таких городах, как Ротерем, Рочдейл, Телфорд и десятках других мест. Выжившие дали шокирующие показания о насилии, торговле людьми, наркотиках и пытках. Большинство насильников — мужчины пакистанского мусульманского происхождения. Банды намеренно выбирали уязвимых девочек из неблагополучных семей.
Источник (4chan /news/): https://boards.4chan.org/news/thread/1520026
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/news/ - Grooming Gang Inquiry Released: It's Worse Than you Think - Current News - 4chan
Grooming Gang Inquiry Released: It's Worse Than you Think - "/news/ - Current News; is 4chan's board for current news.
Знаешь, откуда взялось название «Linux»?
Линус Торвальдс изначально хотел назвать своё ядро Freax — от слов free, freak и unix. Серьёзно. Именно под таким именем он и хранил файлы у себя на диске в 1991 году.
Но когда его друг Ари Лемке предоставил Линусу место на FTP-сервере Хельсинкского университета, чтобы опубликовать исходники, он без ведома Торвальдса назвал директорию linux. Ари счёл Freax слишком странным названием и самовольно использовал рабочее прозвище проекта — то, как Линус называл ядро в личной переписке.
Торвальдс поначалу был против. Он думал, что название Linux звучит слишком самонадеянно и эгоистично — типа называть проект своим именем. Но потом смирился. А дальше имя просто прижилось само собой — люди начали его использовать, и переименовывать что-либо уже не имело смысла.
Так что если бы не решение одного человека на FTP-сервере в Финляндии, мы сегодня могли бы запускать Freax, писать скрипты для Freax и спорить, произносить ли букву «x» на конце 😄
Маленькие случайные решения иногда меняют историю целой индустрии.
📍 Подпишись на создателей: https://t.me/linuxexex
Линус Торвальдс изначально хотел назвать своё ядро Freax — от слов free, freak и unix. Серьёзно. Именно под таким именем он и хранил файлы у себя на диске в 1991 году.
Но когда его друг Ари Лемке предоставил Линусу место на FTP-сервере Хельсинкского университета, чтобы опубликовать исходники, он без ведома Торвальдса назвал директорию linux. Ари счёл Freax слишком странным названием и самовольно использовал рабочее прозвище проекта — то, как Линус называл ядро в личной переписке.
Торвальдс поначалу был против. Он думал, что название Linux звучит слишком самонадеянно и эгоистично — типа называть проект своим именем. Но потом смирился. А дальше имя просто прижилось само собой — люди начали его использовать, и переименовывать что-либо уже не имело смысла.
Так что если бы не решение одного человека на FTP-сервере в Финляндии, мы сегодня могли бы запускать Freax, писать скрипты для Freax и спорить, произносить ли букву «x» на конце 😄
Маленькие случайные решения иногда меняют историю целой индустрии.
📍 Подпишись на создателей: https://t.me/linuxexex
Вот фишка, которую большинство узнаёт случайно спустя годы работы в терминале.
В bash и zsh есть встроенная замена подстрок прямо внутри переменных. Никаких sed, никаких awk — просто фигурные скобки и немного магии.
Допустим, у тебя есть переменная:
file="hello_world_2024.log"
Хочешь заменить первое вхождение подстроки:
echo ${file/world/linux}
→ hello_linux_2024.log
Хочешь заменить все вхождения сразу — ставишь двойной слеш:
str="aaa_bbb_aaa"
echo ${str//aaa/xxx}
→ xxx_bbb_xxx
Это работает прямо в присваивании, в цикле, в условии — везде, где живёт переменная.
Но это ещё не всё. Там целый маленький язык:
${var#prefix} — срезать короткий префикс
${var##prefix} — срезать длинный (жадный) префикс
${var%suffix} — срезать короткий суффикс
${var%%suffix} — срезать длинный суффикс
Пример из реальной жизни. Нужно сменить расширение у файла:
f="report.txt"
echo "${f%.txt}.pdf"
→ report.pdf
Или вытащить имя файла без пути (аналог basename, но без fork):
path="/home/user/docs/notes.md"
echo "${path##*/}"
→ notes.md
Или наоборот — только директорию (аналог dirname):
echo "${path%/*}"
→ /home/user/docs
Всё это работает без запуска отдельных процессов. В скриптах, где обрабатываются тысячи файлов в цикле, это реально ускоряет работу — каждый вызов basename или sed это fork, а встроенная замена это просто операция в памяти текущего шелла.
Ещё один приятный трюк — приведение регистра (zsh и bash 4+):
name="Hello World"
echo ${name,,} → hello world
echo ${name^^} → HELLO WORLD
echo ${name^} → Hello world (только первый символ)
На маках с дефолтным bash 3 это не работает, но если поставить нормальный bash через homebrew или пользоваться zsh — всё ок.
Почему об этом мало говорят? Потому что все сразу тянутся к sed и awk — они мощнее, документация лучше, примеры везде. А эта встроенщина выглядит как синтаксический шум и пугает новичков. Но как только привыкаешь — обратно не хочется.
Сохрани себе, пригодится в следующем скрипте 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
В bash и zsh есть встроенная замена подстрок прямо внутри переменных. Никаких sed, никаких awk — просто фигурные скобки и немного магии.
Допустим, у тебя есть переменная:
file="hello_world_2024.log"
Хочешь заменить первое вхождение подстроки:
echo ${file/world/linux}
→ hello_linux_2024.log
Хочешь заменить все вхождения сразу — ставишь двойной слеш:
str="aaa_bbb_aaa"
echo ${str//aaa/xxx}
→ xxx_bbb_xxx
Это работает прямо в присваивании, в цикле, в условии — везде, где живёт переменная.
Но это ещё не всё. Там целый маленький язык:
${var#prefix} — срезать короткий префикс
${var##prefix} — срезать длинный (жадный) префикс
${var%suffix} — срезать короткий суффикс
${var%%suffix} — срезать длинный суффикс
Пример из реальной жизни. Нужно сменить расширение у файла:
f="report.txt"
echo "${f%.txt}.pdf"
→ report.pdf
Или вытащить имя файла без пути (аналог basename, но без fork):
path="/home/user/docs/notes.md"
echo "${path##*/}"
→ notes.md
Или наоборот — только директорию (аналог dirname):
echo "${path%/*}"
→ /home/user/docs
Всё это работает без запуска отдельных процессов. В скриптах, где обрабатываются тысячи файлов в цикле, это реально ускоряет работу — каждый вызов basename или sed это fork, а встроенная замена это просто операция в памяти текущего шелла.
Ещё один приятный трюк — приведение регистра (zsh и bash 4+):
name="Hello World"
echo ${name,,} → hello world
echo ${name^^} → HELLO WORLD
echo ${name^} → Hello world (только первый символ)
На маках с дефолтным bash 3 это не работает, но если поставить нормальный bash через homebrew или пользоваться zsh — всё ок.
Почему об этом мало говорят? Потому что все сразу тянутся к sed и awk — они мощнее, документация лучше, примеры везде. А эта встроенщина выглядит как синтаксический шум и пугает новичков. Но как только привыкаешь — обратно не хочется.
Сохрани себе, пригодится в следующем скрипте 🐚
📍 Подпишись на создателей: https://t.me/linuxexex
watch — команда, которую знают не все, но потом не могут без неё жить
Суть простая: watch запускает любую команду повторно с заданным интервалом и выводит результат прямо в терминале. Никаких скриптов с while true, никаких sleep — одна строчка и готово.
Базовый пример:
watch df -h
Теперь использование дискового пространства обновляется каждые 2 секунды. Видишь изменения в реальном времени.
Полезные флаги:
-n — задать интервал в секундах
watch -n 5 free -m
обновление памяти каждые 5 секунд
-d — подсвечивает изменения между обновлениями. Очень удобно когда следишь за логами или счётчиками — сразу видно что именно поменялось
-t — убирает заголовок с названием команды и временем. Полезно если хочется чистый вывод
--no-title — то же самое в длинной форме
Реальные сценарии где это спасает:
Следишь за очередью задач:
watch -d -n 2 'ls -lh /var/spool/somequeue'
Мониторинг сетевых соединений:
watch -n 1 'ss -tulnp'
Наблюдаешь за процессами без htop:
watch -n 2 'ps aux --sort=-%cpu | head -15'
Ждёшь когда файл появится в директории:
watch -d ls /tmp/results/
Проверяешь температуру CPU:
watch -n 3 'cat /sys/class/thermal/thermal_zone0/temp'
Фишка которую мало кто знает — флаг -g. Он завершает watch автоматически когда вывод команды меняется. Запустил, дождался события, вышел. Удобно в скриптах.
watch -g -n 1 'cat /proc/loadavg'
Как только нагрузка изменится — watch завершится и можно делать что-то дальше.
Ограничение одно: watch не понимает алиасы из твоего .bashrc. Если нужен алиас — оборачивай в bash -c:
watch -n 2 bash -c 'твоя_команда_с_алиасом'
Инструмент простой, без магии, но экономит кучу времени когда надо за чем-то понаблюдать не городя полноценный мониторинг. Ставишь, смотришь, идёшь дальше. 👀
📍 Подпишись на создателей: https://t.me/linuxexex
Суть простая: watch запускает любую команду повторно с заданным интервалом и выводит результат прямо в терминале. Никаких скриптов с while true, никаких sleep — одна строчка и готово.
Базовый пример:
watch df -h
Теперь использование дискового пространства обновляется каждые 2 секунды. Видишь изменения в реальном времени.
Полезные флаги:
-n — задать интервал в секундах
watch -n 5 free -m
обновление памяти каждые 5 секунд
-d — подсвечивает изменения между обновлениями. Очень удобно когда следишь за логами или счётчиками — сразу видно что именно поменялось
-t — убирает заголовок с названием команды и временем. Полезно если хочется чистый вывод
--no-title — то же самое в длинной форме
Реальные сценарии где это спасает:
Следишь за очередью задач:
watch -d -n 2 'ls -lh /var/spool/somequeue'
Мониторинг сетевых соединений:
watch -n 1 'ss -tulnp'
Наблюдаешь за процессами без htop:
watch -n 2 'ps aux --sort=-%cpu | head -15'
Ждёшь когда файл появится в директории:
watch -d ls /tmp/results/
Проверяешь температуру CPU:
watch -n 3 'cat /sys/class/thermal/thermal_zone0/temp'
Фишка которую мало кто знает — флаг -g. Он завершает watch автоматически когда вывод команды меняется. Запустил, дождался события, вышел. Удобно в скриптах.
watch -g -n 1 'cat /proc/loadavg'
Как только нагрузка изменится — watch завершится и можно делать что-то дальше.
Ограничение одно: watch не понимает алиасы из твоего .bashrc. Если нужен алиас — оборачивай в bash -c:
watch -n 2 bash -c 'твоя_команда_с_алиасом'
Инструмент простой, без магии, но экономит кучу времени когда надо за чем-то понаблюдать не городя полноценный мониторинг. Ставишь, смотришь, идёшь дальше. 👀
📍 Подпишись на создателей: https://t.me/linuxexex
📰 can humans give orcas hands via genetic engineering?
Можно ли дать косаткам руки с помощью генной инженерии?
Создали бы косатки космическую цивилизацию, если бы у них были руки?
Источник (4chan /sci/): https://boards.4chan.org/sci/thread/17024830
📍 Подпишись на создателей: https://t.me/linuxexex
Можно ли дать косаткам руки с помощью генной инженерии?
Создали бы косатки космическую цивилизацию, если бы у них были руки?
Источник (4chan /sci/): https://boards.4chan.org/sci/thread/17024830
📍 Подпишись на создателей: https://t.me/linuxexex
boards.4chan.org
/sci/ - can humans give orcas hands via genetic engineerin - Science & Math - 4chan
can humans give orcas hands via genetic engineering? - "/sci/ - Science & Math" is 4chan's board for the discussion of science and math.
Один и тот же ноутбук, четыре дистрибутива. Смотрим, кто как себя ведёт 🖥️
Взял старый ThinkPad X220: Core i5-2520M, 8 ГБ RAM, SSD 120 ГБ. Задача — поставить систему, настроить окружение разработчика (git, Python, Docker, VSCode), и замерить что получилось. Без лирики, только факты.
Ubuntu 22.04 LTS
Установка — 12 минут, всё нашлось само. Docker из коробки ставится через apt без танцев. Python 3.10 есть сразу. Но система жрёт около 900 МБ RAM в простое — это Gnome с кучей фоновых служб. Snap раздражает: VSCode через snap стартует на 3-4 секунды дольше, чем через deb. В целом — приходишь и работаешь, не думаешь о системе.
Fedora 38
Установка — 14 минут. SELinux включён по умолчанию, и первые полчаса ты с ним знакомишься вплотную, когда Docker отказывается монтировать volumes. Решается через `setsebool -P container_manage_cgroup 1` и ещё пара команд. RAM в простое — ~750 МБ. Dnf работает медленнее apt субъективно, но зато пакеты свежее. Fedora — это Ubuntu для тех, кто хочет чуть поближе к ядру, но не готов страдать по-настоящему.
Arch Linux
Установка — 40 минут если знаешь что делаешь, и это с archinstall. RAM в простое — 380 МБ (поставил i3, минималистично). Всё свежее, AUR закрывает любые пробелы. Docker, git, Python, VSCode — всё ставится ровно в той версии, которая нужна. Но: обновление через полгода сломало nvidia-драйвер, пришлось разбираться. Arch — это когда ты хочешь контролировать каждый байт и готов платить временем.
Debian 12 Bookworm
Установка — 10 минут, самая быстрая. RAM в простое — ~600 МБ. Стабильность железобетонная. Но Python тут 3.11, Docker из официального репо подключается вручную, и некоторые пакеты ощутимо старее. На продакшн-сервере — идеал. На рабочей машине разработчика — немного скучно и иногда приходится тянуть что-то из backports или собирать руками.
Итого по RAM в простое:
Arch (i3) — 380 МБ
Debian (Xfce) — 600 МБ
Fedora (Gnome) — 750 МБ
Ubuntu (Gnome) — 900 МБ
Время до рабочего окружения (установка + настройка dev-инструментов):
Ubuntu — ~25 минут
Debian — ~35 минут
Fedora — ~40 минут с SELinux
Arch — ~70 минут
Вывод простой: если нужно просто работать — Ubuntu или Debian. Если нравится держать руку на пульсе — Fedora. Если хочешь систему под себя и не жалко времени — Arch.
Какой у вас основной дистр на рабочей машине? 👇
📍 Подпишись на создателей: https://t.me/linuxexex
Взял старый ThinkPad X220: Core i5-2520M, 8 ГБ RAM, SSD 120 ГБ. Задача — поставить систему, настроить окружение разработчика (git, Python, Docker, VSCode), и замерить что получилось. Без лирики, только факты.
Ubuntu 22.04 LTS
Установка — 12 минут, всё нашлось само. Docker из коробки ставится через apt без танцев. Python 3.10 есть сразу. Но система жрёт около 900 МБ RAM в простое — это Gnome с кучей фоновых служб. Snap раздражает: VSCode через snap стартует на 3-4 секунды дольше, чем через deb. В целом — приходишь и работаешь, не думаешь о системе.
Fedora 38
Установка — 14 минут. SELinux включён по умолчанию, и первые полчаса ты с ним знакомишься вплотную, когда Docker отказывается монтировать volumes. Решается через `setsebool -P container_manage_cgroup 1` и ещё пара команд. RAM в простое — ~750 МБ. Dnf работает медленнее apt субъективно, но зато пакеты свежее. Fedora — это Ubuntu для тех, кто хочет чуть поближе к ядру, но не готов страдать по-настоящему.
Arch Linux
Установка — 40 минут если знаешь что делаешь, и это с archinstall. RAM в простое — 380 МБ (поставил i3, минималистично). Всё свежее, AUR закрывает любые пробелы. Docker, git, Python, VSCode — всё ставится ровно в той версии, которая нужна. Но: обновление через полгода сломало nvidia-драйвер, пришлось разбираться. Arch — это когда ты хочешь контролировать каждый байт и готов платить временем.
Debian 12 Bookworm
Установка — 10 минут, самая быстрая. RAM в простое — ~600 МБ. Стабильность железобетонная. Но Python тут 3.11, Docker из официального репо подключается вручную, и некоторые пакеты ощутимо старее. На продакшн-сервере — идеал. На рабочей машине разработчика — немного скучно и иногда приходится тянуть что-то из backports или собирать руками.
Итого по RAM в простое:
Arch (i3) — 380 МБ
Debian (Xfce) — 600 МБ
Fedora (Gnome) — 750 МБ
Ubuntu (Gnome) — 900 МБ
Время до рабочего окружения (установка + настройка dev-инструментов):
Ubuntu — ~25 минут
Debian — ~35 минут
Fedora — ~40 минут с SELinux
Arch — ~70 минут
Вывод простой: если нужно просто работать — Ubuntu или Debian. Если нравится держать руку на пульсе — Fedora. Если хочешь систему под себя и не жалко времени — Arch.
Какой у вас основной дистр на рабочей машине? 👇
📍 Подпишись на создателей: https://t.me/linuxexex
Один и тот же ноутбук, разные дистрибутивы — смотрим что происходит
Взял старый ThinkPad X230, 8 ГБ RAM, SSD на 120 ГБ. Поставил поочерёдно четыре дистрибутива и замерил время загрузки, потребление памяти в простое и время установки пакета (взял ffmpeg — он с зависимостями и хорошо показывает разницу).
Ubuntu 22.04 LTS
Загрузка: 18 секунд
RAM в простое: 820 МБ
Установка ffmpeg: 34 секунды
Всё работает с первого раза, Wi-Fi поднялся автоматически, Bluetooth тоже. Snap-версии пакетов бесят, но apt никуда не делся. Для человека, которому просто надо работать — вариант без вопросов.
Fedora 38
Загрузка: 15 секунд
RAM в простое: 760 МБ
Установка ffmpeg: 28 секунд
dnf субъективно шустрее apt на этой машине. SELinux включён по умолчанию — первые полчаса немного удивляешься, потом привыкаешь. Свежее ядро и свежие пакеты: это и плюс, и минус одновременно. Если хочешь актуальный софт и не боишься изредка ловить регрессии — Fedora хороша.
Arch Linux
Загрузка: 9 секунд
RAM в простое: 310 МБ
Установка ffmpeg: 19 секунд (с AUR через yay)
Установка заняла у меня 40 минут — руками, по вики. Зато система весит ровно столько, сколько ты сам положил. pacman летает, AUR закрывает почти любой вопрос с пакетами. Подходит тем, кто хочет понимать что происходит, а не просто пользоваться.
Debian 12 Bookworm
Загрузка: 14 секунд
RAM в простое: 490 МБ
Установка ffmpeg: 31 секунда
Стабильность — это не маркетинг, это буквально политика проекта. Пакеты старее чем в Ubuntu, зато проверены до дыр. На сервере Debian — почти идеальный выбор. На десктопе немного скучно, но надёжно как советский холодильник.
Что в итоге
Если нужна скорость и минимализм — Arch. Если важна стабильность и предсказуемость — Debian. Если хочешь свежий софт и не заморачиваться — Fedora. Если надо быстро поставить и забыть — Ubuntu.
Один и тот же железный конь, четыре разных характера. Правильного ответа нет — есть задача и контекст под неё 🙂
А вы на чём сидите и почему именно на нём?
📍 Подпишись на создателей: https://t.me/linuxexex
Взял старый ThinkPad X230, 8 ГБ RAM, SSD на 120 ГБ. Поставил поочерёдно четыре дистрибутива и замерил время загрузки, потребление памяти в простое и время установки пакета (взял ffmpeg — он с зависимостями и хорошо показывает разницу).
Ubuntu 22.04 LTS
Загрузка: 18 секунд
RAM в простое: 820 МБ
Установка ffmpeg: 34 секунды
Всё работает с первого раза, Wi-Fi поднялся автоматически, Bluetooth тоже. Snap-версии пакетов бесят, но apt никуда не делся. Для человека, которому просто надо работать — вариант без вопросов.
Fedora 38
Загрузка: 15 секунд
RAM в простое: 760 МБ
Установка ffmpeg: 28 секунд
dnf субъективно шустрее apt на этой машине. SELinux включён по умолчанию — первые полчаса немного удивляешься, потом привыкаешь. Свежее ядро и свежие пакеты: это и плюс, и минус одновременно. Если хочешь актуальный софт и не боишься изредка ловить регрессии — Fedora хороша.
Arch Linux
Загрузка: 9 секунд
RAM в простое: 310 МБ
Установка ffmpeg: 19 секунд (с AUR через yay)
Установка заняла у меня 40 минут — руками, по вики. Зато система весит ровно столько, сколько ты сам положил. pacman летает, AUR закрывает почти любой вопрос с пакетами. Подходит тем, кто хочет понимать что происходит, а не просто пользоваться.
Debian 12 Bookworm
Загрузка: 14 секунд
RAM в простое: 490 МБ
Установка ffmpeg: 31 секунда
Стабильность — это не маркетинг, это буквально политика проекта. Пакеты старее чем в Ubuntu, зато проверены до дыр. На сервере Debian — почти идеальный выбор. На десктопе немного скучно, но надёжно как советский холодильник.
Что в итоге
Если нужна скорость и минимализм — Arch. Если важна стабильность и предсказуемость — Debian. Если хочешь свежий софт и не заморачиваться — Fedora. Если надо быстро поставить и забыть — Ubuntu.
Один и тот же железный конь, четыре разных характера. Правильного ответа нет — есть задача и контекст под неё 🙂
А вы на чём сидите и почему именно на нём?
📍 Подпишись на создателей: https://t.me/linuxexex
📰 Иран отверг предложение Омана о разделе судоходства в Ормузском проливе 50 на 50
Источник (r/worldnews): https://www.reddit.com/r/worldnews/comments/1v9d0be/iran_rejects_omans_5050_hormuz_shipping_plan/
📍 Подпишись на создателей: https://t.me/linuxexex
Источник (r/worldnews): https://www.reddit.com/r/worldnews/comments/1v9d0be/iran_rejects_omans_5050_hormuz_shipping_plan/
📍 Подпишись на создателей: https://t.me/linuxexex
Reddit
From the worldnews community on Reddit: Iran rejects Oman’s 50-50 Hormuz shipping plan
Explore this post and more from the worldnews community
Мало кто знает про CDPATH — переменную окружения, которая делает cd умнее.
Обычно когда пишешь cd projects, шелл ищет папку только в текущей директории. Но если задать CDPATH, он будет искать ещё и в других местах — как PATH, только для директорий.
Пример: добавь в ~/.bashrc или ~/.zshrc строку
export CDPATH=".:~:~/projects:~/work"
Теперь из любой папки на системе можно написать просто cd backend — и если такая директория есть в ~/projects/backend, шелл туда прыгнет сам. Не надо писать полный путь.
Шелл при этом честно скажет куда перешёл, чтобы не запутаться:
/home/user/projects/backend
Это реально экономит время если работаешь с кучей проектов в разных местах файловой системы.
Бонус для zsh: там cd вообще умеет заменять часть пути на лету. Допустим ты находишься в
/home/user/projects/frontend/src/components
и хочешь попасть в аналогичную папку backend. Пишешь
cd frontend backend
zsh сам заменит кусок пути и перейдёт в
/home/user/projects/backend/src/components
Одна команда вместо cd ../../.. и потом снова вглубь. Это работает из коробки, никаких плагинов не нужно.
Ещё одна штука — автодополнение с точками. В bash если написать cd ....... (много точек), это не сработает как ожидаешь, но в zsh можно добавить такой трюк в конфиг:
setopt AUTO_CD
После этого можно вообще не писать cd — просто вводишь имя директории и зет-шелл туда переходит. Минималистично до предела.
Пользуетесь чем-то из этого или у вас свои лайфхаки для навигации? 👇
📍 Подпишись на создателей: https://t.me/linuxexex
Обычно когда пишешь cd projects, шелл ищет папку только в текущей директории. Но если задать CDPATH, он будет искать ещё и в других местах — как PATH, только для директорий.
Пример: добавь в ~/.bashrc или ~/.zshrc строку
export CDPATH=".:~:~/projects:~/work"
Теперь из любой папки на системе можно написать просто cd backend — и если такая директория есть в ~/projects/backend, шелл туда прыгнет сам. Не надо писать полный путь.
Шелл при этом честно скажет куда перешёл, чтобы не запутаться:
/home/user/projects/backend
Это реально экономит время если работаешь с кучей проектов в разных местах файловой системы.
Бонус для zsh: там cd вообще умеет заменять часть пути на лету. Допустим ты находишься в
/home/user/projects/frontend/src/components
и хочешь попасть в аналогичную папку backend. Пишешь
cd frontend backend
zsh сам заменит кусок пути и перейдёт в
/home/user/projects/backend/src/components
Одна команда вместо cd ../../.. и потом снова вглубь. Это работает из коробки, никаких плагинов не нужно.
Ещё одна штука — автодополнение с точками. В bash если написать cd ....... (много точек), это не сработает как ожидаешь, но в zsh можно добавить такой трюк в конфиг:
setopt AUTO_CD
После этого можно вообще не писать cd — просто вводишь имя директории и зет-шелл туда переходит. Минималистично до предела.
Пользуетесь чем-то из этого или у вас свои лайфхаки для навигации? 👇
📍 Подпишись на создателей: https://t.me/linuxexex