🐧 Linux Junior. Программирование под Linux.
Kanalga Telegram’da o‘tish
Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock
Ko'proq ko'rsatish3 086
Obunachilar
Ma'lumot yo'q24 soatlar
-27 kun
-1630 kun
Ma'lumot yuklanmoqda...
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Sentabr '26
Sentabr '26
+6
0 kanalda
Avgust '26
+8
0 kanalda
Get PRO
Iyul '26
+7
0 kanalda
Get PRO
Iyun '26
+14
0 kanalda
Get PRO
May '26
+6
0 kanalda
Get PRO
Aprel '26
+13
0 kanalda
Get PRO
Mart '26
+6
0 kanalda
Get PRO
Fevral '26
+4
0 kanalda
Get PRO
Yanvar '26
+6
0 kanalda
Get PRO
Dekabr '25
+7
0 kanalda
Get PRO
Noyabr '25
+11
0 kanalda
Get PRO
Oktabr '25
+11
0 kanalda
Get PRO
Sentabr '25
+29
1 kanalda
Get PRO
Avgust '25
+7
0 kanalda
Get PRO
Iyul '25
+11
0 kanalda
Get PRO
Iyun '25
+6
0 kanalda
Get PRO
May '25
+9
0 kanalda
Get PRO
Aprel '25
+28
1 kanalda
Get PRO
Mart '25
+74
1 kanalda
Get PRO
Fevral '25
+18
0 kanalda
Get PRO
Yanvar '25
+13
0 kanalda
Get PRO
Dekabr '24
+12
0 kanalda
Get PRO
Noyabr '24
+3
0 kanalda
Get PRO
Oktabr '24
+7
0 kanalda
Get PRO
Sentabr '24
+22
0 kanalda
Get PRO
Avgust '24
+11
0 kanalda
Get PRO
Iyul '24
+9
0 kanalda
Get PRO
Iyun '24
+4
0 kanalda
Get PRO
May '24
+9
0 kanalda
Get PRO
Aprel '24
+15
0 kanalda
Get PRO
Mart '24
+7
0 kanalda
Get PRO
Fevral '24
+19
0 kanalda
Get PRO
Yanvar '24
+23
0 kanalda
Get PRO
Dekabr '23
+24
0 kanalda
Get PRO
Noyabr '23
+15
0 kanalda
Get PRO
Oktabr '23
+14
0 kanalda
Get PRO
Sentabr '23
+26
0 kanalda
Get PRO
Avgust '23
+30
0 kanalda
Get PRO
Iyul '23
+29
0 kanalda
Get PRO
Iyun '23
+42
0 kanalda
Get PRO
May '23
+835
0 kanalda
Get PRO
Aprel '23
+39
0 kanalda
Get PRO
Mart '23
+18
0 kanalda
Get PRO
Fevral '23
+17
0 kanalda
Get PRO
Yanvar '23
+11
0 kanalda
Get PRO
Dekabr '22
+3
0 kanalda
Get PRO
Noyabr '22
+8
0 kanalda
Get PRO
Oktabr '22
+105
0 kanalda
Get PRO
Sentabr '22
+20
0 kanalda
Get PRO
Avgust '22
+21
0 kanalda
Get PRO
Iyul '22
+50
0 kanalda
Get PRO
Iyun '22
+638
0 kanalda
Get PRO
May '22
+946
0 kanalda
Get PRO
Aprel '22
+6 365
0 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 15 Sentabr | 0 | |||
| 14 Sentabr | 0 | |||
| 13 Sentabr | 0 | |||
| 12 Sentabr | 0 | |||
| 11 Sentabr | +2 | |||
| 10 Sentabr | 0 | |||
| 09 Sentabr | 0 | |||
| 08 Sentabr | +1 | |||
| 07 Sentabr | +1 | |||
| 06 Sentabr | 0 | |||
| 05 Sentabr | 0 | |||
| 04 Sentabr | +1 | |||
| 03 Sentabr | 0 | |||
| 02 Sentabr | 0 | |||
| 01 Sentabr | +1 |
Kanal postlari
Как распаковать .tar.gz, .tar.bz2, .tar.xz и .tar.zst в Linux
Для работы с архивами в Linux используется утилита
tar.
Многие по привычке заучивают разные флаги сжатия для каждого формата (-z, -j, -J), однако в современном Linux всё гораздо проще.
💡 Главный лайфхак: универсальная команда
Современный GNU tar умеет автоматически определять алгоритм сжатия по содержимому файла. Вам больше не нужно запоминать специальные ключи под каждый формат!
Чтобы распаковать любой архив (.tar, .tar.gz, .tar.bz2, .tar.xz, .tar.zst, .tgz, .txz), достаточно одной универсальной команды:
tar -xvf archive.tar.gz
Разбор базовых ключей:
-x (eXtract) — извлечь файлы из архива
-v (Verbose) — показывать список извлекаемых файлов в консоли (опционально)
-f (File) — указать путь к файлу архива (обязательно должен идти последним перед именем файла)
✔️ Распаковка в конкретную папку (-C)
По умолчанию tar распаковывает содержимое в текущую директорию. Чтобы извлечь файлы в другой каталог, используйте ключ -C (--directory):
tar -xvf archive.tar.xz -C /path/to/target_dir/
⚠️ Указанная директория должна существовать заранее, tar не создает целевую папку автоматически.
✔️ Как сначала посмотреть содержимое архива (без распаковки)?
Чтобы проверить, запакованы ли файлы в отдельную папку или они рассыплются по вашей текущей директории, используйте ключ -t (List):
tar -tvf archive.tar.bz2
✔️ Справочник: специфические ключи сжатия (для истории)
Если вы работаете на старых UNIX-системах или пишете строгие скрипты, явное указание алгоритма сжатия может пригодиться:
.tar.gz / .tgz (Gzip): ключ -z
tar -xvzf archive.tar.gz
.tar.bz2 / .tbz2 (Bzip2): ключ -j
tar -xvjf archive.tar.bz2
.tar.xz / .txz (XZ / LZMA): ключ -J
tar -xvJf archive.tar.xz
.tar.zst / .tzst (Zstandard): ключ --zstd
tar --zstd -xvf archive.tar.zst
📌 Резюме: Забудьте про запоминание флагов -z, -j и -J. Просто используйте tar -xvf для любых .tar.* архивов!| 2 | Посмотреть очередь задач, созданных через at, можно командой atq (или at -l).
Она выведет список с ID задач. Чтобы отменить конкретную задачу из очереди, используйте atrm (или at -d) с указанием её ID:
atrm 4
#вопросы | 501 |
| 3 | ❓ Как посмотреть список всех запланированных однократных задач at и отменить нужную?
Ответ через час.
#вопросы | 491 |
| 4 | JoJo AI — не очередной «чат с нейросетью», а полноценный помощник в привычном Telegram.
Большинство AI-ботов в Telegram устроены одинаково: узкий функционал, сухие ответы, жёсткие команды и ощущение, что общаешься с терминалом, а не с помощником. JoJo AI собран иначе.
Чем JoJo AI отличается от других ботов:
1. Всё в одном чате
Многие боты умеют либо отвечать на вопросы, либо рисовать картинки. JoJo AI совмещает тексты, идеи, объяснения и генерацию изображений — без переключения между разными ботами.
2. Живой диалог вместо набора команд
Многие боты требуют строгий формат: /команда, шаблон, ключевые слова. JoJo AI понимает обычную речь — можно писать так, как пишешь человеку.
3. Человечный тон, а не «робот из FAQ»
Типичный AI-бот выдаёт сухие, шаблонные ответы. JoJo AI ориентирован на понятное, дружелюбное общение — без канцелярита и без ощущения, что читаешь инструкцию к технике.
4. Возможность заработать на рефералах - 70% от их пополнений начисляются вам и вы сразу можете их вывести.
t.me/jojoai99bot | 519 |
| 5 | Для чего нужна популярная в Linux утилита grep? | 748 |
| 6 | ⚡️ Быстрое преобразование текста: Vim и sed
Регулярные выражения в Vim и утилите sed позволяют за секунды отредактировать многотысячный файл. Ниже — подборка полезных однострочников для повседневных задач.
1️⃣ Изменение регистра букв
🔴 Первую букву в каждой строке сделать заглавной:
Vim:
:%s/^\w/\u&/g
sed:
sed -i 's/^\w/\u&/g' file.txt
🔴 Первую букву каждого слова сделать заглавной:
Vim:
:%s/\<\w/\u&/g
sed:
sed -Ei 's/\b[a-z]/\U&/g' file.txt
Как это работает: спецсимвол \u переводит следующий символ в верхний регистр, \U переводит все последующие символы, а & обозначает найденное совпадение.
2️⃣ Очистка текста от мусора
🔴 Удалить все пустые строки (включая строки с пробелами и табуляцией):
Vim:
:g/^\s*$/d
sed:
sed -i '/^\s*$/d' file.txt
🔴 Удалить все строки-комментарии (начинающиеся с #):
Vim:
:g/^\s*#/d
sed:
sed -i '/^\s*#/d' file.txt
(Команда :g/.../d в Vim полностью удаляет совпадающую строку, а не просто очищает её содержимое).
3️⃣ Форматирование отступов и пробелов
🔴 Заменить 4 пробела на один знак табуляции (\t):
Vim:
:%s/ /\t/g
sed:
sed -i 's/ /\t/g' file.txt
🔴 Удалить концевые пробелы (Trailing spaces) в конце строк:
Vim:
:%s/\s\+$//e
sed:
sed -i 's/[ \t]*$//' file.txt
⚠️ Заметка по ключу sed -i:
Флаг -i перезаписывает файл «на месте». На macOS (BSD sed) команда потребует указать пустые кавычки для резервной копии: sed -i '' 's/.../.../' file.txt. Если хотите подстраховаться, используйте sed -i.bak, чтобы автоматически создать бэкап файла перед изменением. | 864 |
| 7 | Если нужно изменить логин пользователя вместе с переносом его домашней директории, используйте usermod с флагами -l, -d и -m:
sudo usermod -l newname -d /home/newname -m oldname
Флаг -l меняет имя, -d задаёт новый путь к home-каталогу, а -m принудительно перемещает всё содержимое со старого места на новое.
#вопросы | 794 |
| 8 | ❓ Как изменить имя пользователя и переименовать его домашний каталог одной командой?
Ответ через час.
#вопросы | 726 |
| 9 | Права доступа -rwxr-sr-- равнозначны... | 940 |
| 10 | 🔥 Смена владельца и группы файлов в Linux
Помимо изменения прав доступа с помощью chmod, иногда нужно изменить владельца файла или группу, которой он принадлежит.
Для этих операций обычно требуются права суперпользователя (root), поэтому используем sudo.
👤 Смена владельца
Команда chown (от change owner) позволяет назначить нового владельца файла:
sudo chown [имя_пользователя] [имя_файла]
Пример:
sudo chown john report.txt
Теперь владельцем файла report.txt станет пользователь john.
👤👥 Смена владельца и группы одновременно
Чтобы изменить владельца и группу файла или каталога, используем двоеточие:
sudo chown [имя_пользователя]:[группа] [имя_файла]
Пример:
sudo chown root:root /home/diego/Документы/Адреса.txt
После этого владелец и группа файла будут root:root.
👥 Смена только группы
Если нужно изменить только группу, а владельца оставить прежним, можно:
sudo chown :[группа] [имя_файла]
или использовать специализированную команду chgrp (от change group):
sudo chgrp [группа] [имя_файла]
Пример:
sudo chgrp staff /home/diego/Документы/Адреса.txt
Теперь владельцем остаётся прежний пользователь, а группа меняется на staff.
📎 Пример на практике
Сменим владельца и группу файла Адреса.txt на root:root:
diego@debian:~$ sudo chown root:root /home/diego/Документы/Адреса.txt
[sudo] пароль для diego:
diego@debian:~$ ls -la /home/diego/Документы/Адреса.txt
-rw-r----- 1 root root 2 фев 17 21:15 /home/diego/Документы/Адреса.txt
Как видно, владелец и группа изменились с diego:diego на root:root. | 909 |
| 11 | Команда uniq предназначена для поиска одинаковых строк в массивах текста. Как вывести только уникальные строки (не имеющие дубликатов)? | 807 |
| 12 | 🔥 tail для нескольких файлов и пользователей
Вы, вероятно знакомы с multitail — он умеет следить за несколькими логами сразу. Но:
🔴 он не всегда установлен,
🔴 иногда нет прав на установку, особенно на продакшн-серверах.
Не беда: с этим справится и обычный tail:
tail -f /var/logs/*.log
⚙️ Проблема с "висящими" tail
На сервере с приложением часто работают несколько разработчиков или тестировщиков. Все смотрят логи через tail -f.
Когда приложение перезапускают, старые процессы tail остаются в фоне — иногда на дни или даже недели. Это не критично, но выглядит неаккуратно и засоряет список процессов:
ps aux | grep tail
🔧 Решение: tail с автозавершением
Можно сделать алиас, который будет следить за логом только пока жив процесс приложения:
alias TFapplog='tail -f --pid=$(cat /opt/app/tmp/app.pid) /opt/app/logs/app.log'
Как это работает:
🔴 --pid=$(cat /opt/app/tmp/app.pid) — tail будет автоматически завершён, когда процесс приложения умрёт.
🔴 /opt/app/logs/app.log — путь к логу.
⚙️ Практика
Добавьте этот алиас в ~/.bashrc или ~/.bash_profile.
Теперь, даже если кто-то забудет завершить tail, он сам корректно закроется при рестарте приложения.
Можно сделать несколько алиасов для разных приложений или логов — удобно и безопасно.
🟢 Бонус
Для нескольких файлов и с PID можно использовать и так:
tail -f --pid=$(cat /opt/app/tmp/app.pid) /opt/app/logs/app1.log /opt/app/logs/app2.log
Все логи будут отображаться одновременно, и tail закроется при завершении процесса. | 915 |
| 13 | Команда
> abc 2>&1 | 864 |
| 14 | 🔗 Жесткие ссылки vs Символьные ссылки
В Linux существуют два основных типа ссылок на файлы: жесткие (hard) и символьные (soft / symlink).
Они похожи тем, что позволяют обращаться к одному файлу через несколько имен, но работают по-разному и имеют свои особенности.
🔗 Жесткие ссылки
Особенности:
🔴 Работают только внутри одной файловой системы.
🔴 Нельзя создавать для директорий (обычно, кроме системных инструментов).
🔴 Наследуют inode и права доступа исходного файла.
🔴 Любые изменения содержимого или прав исходного файла отражаются во всех жестких ссылках.
🔴 Даже если исходный файл удалён, содержимое остаётся доступным через жесткую ссылку.
Пример использования:
$ echo "Hello World" > original.txt
$ ln original.txt hardlink.txt
$ ls -li
123456 -rw-r--r-- 2 user user 12 Oct 22 12:00 original.txt
123456 -rw-r--r-- 2 user user 12 Oct 22 12:00 hardlink.txt
$ echo "Added line" >> hardlink.txt
$ cat original.txt
Hello World
Added line
Здесь видно, что hardlink.txt и original.txt имеют один и тот же inode (123456), и изменения в одном отражаются на другом.
🔗 Символьные ссылки
Особенности:
🔴 Могут пересекать границы файловых систем.
🔴 Можно создавать для директорий.
🔴 Имеют свой собственный inode и права доступа.
🔴 Связаны с именем (путём) исходного файла, а не с содержимым.
🔴 Удаление символьной ссылки не влияет на исходный файл.
🔴 Можно изменить путь, на который она указывает, без влияния на исходный файл.
Пример использования:
$ ln -s /home/user/Documents/original.txt symlink.txt
$ ls -l
lrwxrwxrwx 1 user user 29 Oct 22 12:05 symlink.txt -> /home/user/Documents/original.txt
$ echo "Another line" >> /home/user/Documents/original.txt
$ cat symlink.txt
Hello World
Added line
Another line
$ rm symlink.txt
$ ls /home/user/Documents/original.txt
original.txt
Символьная ссылка указывает на путь, а не на данные. Удаление ссылки не затрагивает исходный файл. | 951 |
| 15 | Какая команда собирает переданные ей аргументы в строку и выполняет эту строку, как если бы это была команда, введённая прямо в оболочке? | 869 |
| 16 | 👩💻 Утилита tldr
Проект tldr-pages — это сборник поддерживаемых сообществом справочных страниц для инструментов командной строки, который призван стать более простым и доступным дополнением к традиционным справочным страницам man.
TL; DR - это аббревиатура, используемая в Интернете, чтобы сказать, что публикация, статья, комментарий или страница руководства слишком длинные, и поэтому написавший "TL; DR" их не читал.
Команда tldr позволяет выводить максимально сжатую сводку информации по консольным утилитам (назначение и список самых популярных опций).
⚙️ Установка
sudo apt install tldr # Для Ubuntu/Debian
sudo pacman -S tldr # Для Arch
⚙️ Пример использования
tldr tar
В результате получите наглядные примеры: как распаковать архив, добавить файлы и так далее.
📱 Ссылка на GitHub Tldr | 1 045 |
| 17 | 👩💻 Команда fd — быстрая и удобная альтернатива find
fd — это современная, быстрая и удобная альтернатива стандартной команде find. Она делает то же самое — ищет файлы и каталоги, — но проще в использовании, работает быстрее и выдает чистый, цветной, читаемый вывод.
⚙️ Установка
В большинстве дистрибутивов Linux fd доступна в официальных репозиториях:
sudo apt install fd-find # Для Debian/Ubuntu
sudo dnf install fd-find # Для Fedora
sudo pacman -S fd # Для Arch Linux
⚙️ Синтаксис:
fd [паттерн] [директория]
⚙️ Базовое использование
1️⃣ Поиск по имени файла:
fd filename
Найдёт все файлы, имя которых содержит “filename”.
2️⃣ Поиск по шаблону:
fd 'pattern'
Поддерживаются регулярные выражения для шаблонов.
3️⃣ Поиск в определённой директории:
fd filename /path/to/dir
4️⃣ Исключение бинарных файлов (по умолчанию):
fd 'filename'
fd ищет только в текстовых файлах, игнорируя двоичные.
5️⃣ Поиск по типу файлов:
• Только файлы: fd -t f
• Только директории: fd -t d
6️⃣ Вывод полной информации:
fd -l
Показывает подробные пути к найденным объектам.
7️⃣ Поиск с учётом регистра:
fd -s filename
8️⃣ Пример поиска в проекте:
Найти все файлы с расширением .rs в текущем каталоге и его подкаталогах:
fd '\.rs$' | 850 |
| 18 | 👩💻 Команда lsof
В Linux всё — это файл: обычные файлы, сокеты, устройства, каталоги, процессы. "lsof" расшифровывается как List Open Files — "список открытых файлов".
Соответвенно, команда lsof позволяет просматривать информацию об открытых файлах и связанных с ними процессах:
✔️ какие файлы, сокеты и порты открыты
✔️ каким процессом они используются
✔️ кто блокирует нужный файл
✔️ что "занимает" устройство, диск или порт
Эта утилита вам пригодится, если вы сталкиваетесь с ошибками доступа к файлам, например, при монтировании, удалении или использовании разделов.
⚙️ Синтаксис:
lsof [опции]
⚙️ Примеры использования
1️⃣ Проверить, кто занимает порт.
lsof -i :80
Покажет процесс (PID), который слушает порт 80.
2️⃣ Найти процесс, держащий файл "занятым".
lsof /path/to/file
Если файл нельзя удалить или смонтировать диск — это поможет выяснить, кто его использует.
3️⃣ Проверить активные сетевые соединения.
lsof -i
Выведет список всех TCP/UDP подключений (локальные и удалённые адреса, PID, программа).
4️⃣ Найти удалённые, но не освобождённые файлы.
lsof +L1
Полезно, если диск "заполнен", но место не освобождается — это покажет процессы, держащие "удалённые" файлы открытыми.
5️⃣ Вывести все файлы, открытые процессом.
lsof -p 1234
Покажет, какие файлы, сокеты и устройства открыты у процесса с PID 1234.
6️⃣ Посмотреть, кто использует каталог.
lsof +D /var/log/
Полезно при попытке размонтировать диск или директорию — можно увидеть, кто удерживает файлы внутри. | 818 |
| 19 | 👩💻 Утилита symlinks
symlinks — это консольный инструмент в Linux, который помогает управлять символьными ссылками (symbolic links, или "ярлыками" в файловой системе). Она позволяет искать, проверять и исправлять ссылки в заданном каталоге.
На большинстве систем утилита ставится пакетом symlinks:
sudo apt install symlinks # Ubuntu, Debian
sudo dnf install symlinks # Fedora
sudo pacman -S symlinks # Arch
⚙ Синтаксис:
symlinks [опции] [каталог]
⚙ Опции:
-c — заменить абсолютные / беспорядочные ссылки на относительные
-d — удалить битые ссылки
-o — предупреждать о ссылках между файловыми системами
-r — проверять рекурсивно подкаталоги
-s — сокращать длинные ссылки (отображаются в выводе только если не указан параметр -c)
-t — показывать, что будет сделано с помощью -c
-v — показывать подробный отчет (выводит все ссылки)
⚙ Примеры использования:
1⃣ Найти все симлинки в каталоге /usr/local/bin:
symlinks -v /usr/local/bin
Команда выведет список ссылок и покажет, какие из них "good" — рабочие, а какие "dangling" — битые (ведут в несуществующий файл).
2⃣ Проверить рекурсивно и удалить битые ссылки:
sudo symlinks -rd /opt/
3⃣ Только проверить, не изменяя ничего:
symlinks -rv /home/user/projects
⚙ Практический смысл:
🔎 Проверка целостности системы или проекта. После обновлений или чисток пакетов остаются "битые" ссылки — ведущие в никуда.
🔎 Подготовка окружения для деплоя или контейнера. При переносе проекта, создании Docker-образа или сборке пакета абсолютные пути могут сломаться (например, /home/user/... внутри контейнера не существует).
🔎 Чистка симлинков после ручной установки софта. Когда программы ставятся вручную, часто создаются симлинки в /usr/local/bin → /opt/.... После удаления директории /opt/app ссылки остаются.
🔎 Работа с большими файловыми архивами или бэкапами. При создании резервных копий с помощью rsync или копировании проекта на другой диск относительные ссылки часто "ломаются", потому что пути изменились.
🔎 Упрощение диагностики. Можно быстро увидеть, какие файлы — ссылки и куда они ведут. Это удобно, например, при разборе чужой системы или CI/CD окружения. | 765 |
| 20 | 👩💻 Утилита форматирования column
column — это небольшая, но очень удобная консольная команда Linux, предназначенная для форматирования текста в столбцы.
column берет текстовый ввод (обычно строки, разделённые пробелами, табами или другим символом) и выравнивает его в табличный формат.
Это особенно удобно при работе с командами вроде cat, awk, grep, ls, mount, ps и др.
⚙️ Синтаксис:
column [опции] [файл]
⚙️ Основные флаги:
-t — создаёт таблицу, выравнивая столбцы по ширине (самый частый вариант)
-s <символ> — указывает разделитель полей (по умолчанию — пробел или таб)
-n — не объединяет несколько разделителей, идущих подряд (считает их отдельными)
-c <число> — устанавливает максимальную ширину вывода
-x — заполняет таблицу построчно, а не по столбцам
-o <строка> — задаёт строку-разделитель между столбцами
⚙️ Примеры использования:
1️⃣ Форматирование вывода в таблицу
cat /etc/passwd | column -t -s :
Разделитель в файле /etc/passwd — двоеточие, поэтому с -s : получаем аккуратную таблицу пользователей.
2️⃣ Использование с выводом других команд
ls -l | column -t
Выравнивает стандартный "грязный" вывод ls -l в читаемые столбцы.
3️⃣ Выравнивание CSV-файла
cat data.csv | column -t -s ,
Преобразует CSV-файл в выровненную таблицу прямо в терминале.
4️⃣ Форматирование вывода mount
mount | column -t
Вывод монтированных файловых систем становится удобнее для восприятия.
5️⃣ Таблица из произвольного списка
echo -e "Name Score\nAlice 90\nBob 85\nCarol 95" | column -t
Создаёт простую таблицу с двумя выровненными столбцами:
Name Score
Alice 90
Bob 85
Carol 95 | 699 |
