🐧 Linux Junior. Программирование под Linux.
Открыть в Telegram
Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock
Больше3 111
Подписчики
-224 часа
-67 дней
-630 день
Загрузка данных...
Похожие каналы
Облако тегов
Входящие и исходящие упоминания
---
---
---
---
---
---
Привлечение подписчиков
июль '26
июль '26
+2
в 0 каналах
июнь '26
+14
в 0 каналах
Get PRO
май '26
+6
в 0 каналах
Get PRO
апрель '26
+13
в 0 каналах
Get PRO
март '26
+6
в 0 каналах
Get PRO
февраль '26
+4
в 0 каналах
Get PRO
январь '26
+6
в 0 каналах
Get PRO
декабрь '25
+7
в 0 каналах
Get PRO
ноябрь '25
+11
в 0 каналах
Get PRO
октябрь '25
+11
в 0 каналах
Get PRO
сентябрь '25
+29
в 1 каналах
Get PRO
август '25
+7
в 0 каналах
Get PRO
июль '25
+11
в 0 каналах
Get PRO
июнь '25
+6
в 0 каналах
Get PRO
май '25
+9
в 0 каналах
Get PRO
апрель '25
+28
в 1 каналах
Get PRO
март '25
+74
в 1 каналах
Get PRO
февраль '25
+18
в 0 каналах
Get PRO
январь '25
+13
в 0 каналах
Get PRO
декабрь '24
+12
в 0 каналах
Get PRO
ноябрь '24
+3
в 0 каналах
Get PRO
октябрь '24
+7
в 0 каналах
Get PRO
сентябрь '24
+22
в 0 каналах
Get PRO
август '24
+11
в 0 каналах
Get PRO
июль '24
+9
в 0 каналах
Get PRO
июнь '24
+4
в 0 каналах
Get PRO
май '24
+9
в 0 каналах
Get PRO
апрель '24
+15
в 0 каналах
Get PRO
март '24
+7
в 0 каналах
Get PRO
февраль '24
+19
в 0 каналах
Get PRO
январь '24
+23
в 0 каналах
Get PRO
декабрь '23
+24
в 0 каналах
Get PRO
ноябрь '23
+15
в 0 каналах
Get PRO
октябрь '23
+14
в 0 каналах
Get PRO
сентябрь '23
+26
в 0 каналах
Get PRO
август '23
+30
в 0 каналах
Get PRO
июль '23
+29
в 0 каналах
Get PRO
июнь '23
+42
в 0 каналах
Get PRO
май '23
+835
в 0 каналах
Get PRO
апрель '23
+39
в 0 каналах
Get PRO
март '23
+18
в 0 каналах
Get PRO
февраль '23
+17
в 0 каналах
Get PRO
январь '23
+11
в 0 каналах
Get PRO
декабрь '22
+3
в 0 каналах
Get PRO
ноябрь '22
+8
в 0 каналах
Get PRO
октябрь '22
+105
в 0 каналах
Get PRO
сентябрь '22
+20
в 0 каналах
Get PRO
август '22
+21
в 0 каналах
Get PRO
июль '22
+50
в 0 каналах
Get PRO
июнь '22
+638
в 0 каналах
Get PRO
май '22
+946
в 0 каналах
Get PRO
апрель '22
+6 365
в 0 каналах
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 14 июля | 0 | |||
| 13 июля | 0 | |||
| 12 июля | 0 | |||
| 11 июля | 0 | |||
| 10 июля | 0 | |||
| 09 июля | 0 | |||
| 08 июля | 0 | |||
| 07 июля | 0 | |||
| 06 июля | +1 | |||
| 05 июля | 0 | |||
| 04 июля | 0 | |||
| 03 июля | 0 | |||
| 02 июля | +1 | |||
| 01 июля | 0 |
Посты канала
| 2 | 🔗 Жесткие ссылки 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
Символьная ссылка указывает на путь, а не на данные. Удаление ссылки не затрагивает исходный файл. | 649 |
| 3 | Какая команда собирает переданные ей аргументы в строку и выполняет эту строку, как если бы это была команда, введённая прямо в оболочке? | 743 |
| 4 | 👩💻 Утилита tldr
Проект tldr-pages — это сборник поддерживаемых сообществом справочных страниц для инструментов командной строки, который призван стать более простым и доступным дополнением к традиционным справочным страницам man.
TL; DR - это аббревиатура, используемая в Интернете, чтобы сказать, что публикация, статья, комментарий или страница руководства слишком длинные, и поэтому написавший "TL; DR" их не читал.
Команда tldr позволяет выводить максимально сжатую сводку информации по консольным утилитам (назначение и список самых популярных опций).
⚙️ Установка
sudo apt install tldr # Для Ubuntu/Debian
sudo pacman -S tldr # Для Arch
⚙️ Пример использования
tldr tar
В результате получите наглядные примеры: как распаковать архив, добавить файлы и так далее.
📱 Ссылка на GitHub Tldr | 994 |
| 5 | 👩💻 Команда 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 |
| 6 | 👩💻 Команда 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 |
| 7 | 👩💻 Утилита 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 |
| 8 | 👩💻 Утилита форматирования 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 |
| 9 | 👩💻 Утилита ncdu
ncdu (NCurses Disk Usage) — это консольная утилита Linux для анализа использования дискового пространства. Она похожа на du, но имеет интерактивный, удобный интерфейс прямо в терминале.
⚙️ Установка:
sudo apt install ncdu # Debian/Ubuntu
sudo dnf install ncdu # Fedora
sudo pacman -S ncdu # Arch
ncdu показывает, какие каталоги и файлы занимают больше всего места на диске, и позволяет:
✔️ быстро перемещаться по дереву каталогов,
✔️ сортировать по размеру,
✔️ удалять файлы прямо из интерфейса,
✔️ искать, что «съедает» место.
Результаты сканирования можно сохранить в файл (ncdu -o out.json) и потом просмотреть (ncdu -f out.json).
⚙️ Примеры использования
1️⃣ Анализ текущего каталога. Просто запустите ncdu без параметров, чтобы проанализировать текущий каталог:
ncdu
2️⃣ Анализ конкретного каталога. Укажите путь к каталогу, который хотите проанализировать:
ncdu /var/log
3️⃣ Исключение определённых файлов или каталогов. Если вы хотите исключить определённые файлы или каталоги из анализа, используйте опцию --exclude:
ncdu --exclude '*.log' /var/log
4️⃣ Сканирование удалённого сервера через SSH. Вы можете использовать ncdu для сканирования дискового пространства на удалённом сервере через SSH:
ssh user@remote-server "ncdu /" | 855 |
| 10 | 170+ вакансий, где упоминается «Linux” : https://talanto.work/jobs/25417942-422f-482e-a0a8-b926e4645104 | 873 |
| 11 | Что произойдет, если пользователь попытается удалить командой rm файл, доступный только для чтения (права доступа 444)? | 785 |
| 12 | 🚀 Перемещайся по файловой системе молниеносно: CDPATH
Многие знают про:
🔴 автодополнение по TAB,
🔴 ~ для домашнего каталога,
🔴 cd - — переключение между текущей и предыдущей папками:
$ cd -
/home/xoadmin/Documents
$ cd -
/home/xoadmin/Music
Но если вы часто работаете с одними и теми же каталогами, вводить длинные пути быстро надоедает.
💭 Проблема
Допустим, вы часто заходите в каталог
/home/smith/Family/Memories/Photos
Чтобы попасть туда, каждый раз приходится писать:
cd ~/Family/Memories/Photos
А хотелось бы просто:
cd Photos
Однако, если в текущей папке нет подкаталога Photos, Bash выдаст:
bash: cd: Photos: No such file or directory
📎 Решение: CDPATH
Переменная CDPATH говорит Bash, где ещё искать каталоги при выполнении cd.
CDPATH=$HOME/Family/Memories
Теперь, где бы вы ни находились:
$ pwd
/etc
$ cd Photos
/home/smith/Family/Memories/Photos
Работает!
🙂 Несколько путей
Можно указать сразу несколько мест (через двоеточие):
CDPATH=$HOME:$HOME/Projects:$HOME/Family/Memories:/usr/local
Bash будет проверять их по порядку. Первое совпадение — и переход произойдёт именно туда.
⚙️ Постоянная настройка
Чтобы не прописывать CDPATH вручную при каждом запуске терминала, добавьте строку в ~/.bashrc (для конкретного пользователя) или /etc/profile (для всех пользователей системы).
export CDPATH=$HOME:$HOME/Sources:/usr/local
🔍 Пример из практики
Пусть у вас есть каталог ~/Sources, где хранятся проекты:
echo $CDPATH
/home/xoadmin/Sources
Теперь:
$ pwd
/home/xoadmin/Music
$ cd picom
/home/xoadmin/Sources/picom
Без лишнего ввода — просто cd picom.
⚠️ Пара моментов
Если каталог найден через CDPATH, cd выведет полный путь:
$ cd Photos
/home/smith/Family/Memories/Photos
Это нормально — просто признак, что каталог был найден не в текущей директории.
Текущее место (.) можно тоже включить в CDPATH, чтобы cd вела себя стандартно:
export CDPATH=.:$HOME/Projects
🟢 В сухом остатке
CDPATH — это как "умный поиск" для cd. Если вы часто прыгаете между проектами, архивами или каталогами с данными, он экономит десятки нажатий и делает навигацию в консоли почти мгновенной. | 794 |
| 13 | 🔥 Уменьшение размера лог-файлов
В обычном состоянии, если приложение запущено и пишет в лог файл, его не рекомендуется удалять, поскольку в *nix, открытый файловый дескриптор связан не с именем файла, а с iNode.
И если мы удалим лог-файл, приложение может не начать писать в новый файл с нуля, а продолжать писать в старый, который для нас уже будет недоступен по имени (мы же его удалили). Затем, когда приложение остановится и закроет дескриптор, данные удалятся с файловой системы.
(Большинство программ при записи в лог каждый раз открывают и закрывают файл, и тогда этой проблеме они не подвержены).
Поэтому очистку файла следует делать либо так (очистим файл, не удаляя его):
> application.log
Либо так (файл будет урезан до указанного размера):
truncate --size=1M application.log
Но эта команда именно урежет, т.е. в файле останутся старые данные, а свежие как раз и будут урезаны.
Поэтому можно делать вот так, сохраняя последние 1000 строк:
echo "$(tail -n 1000 application.log)" > application.log | 831 |
| 14 | Нет текста... | 778 |
