🐧 Linux Junior. Программирование под Linux.
3.12K subscribers
159 photos
2 videos
1 file
89 links
Канал для программистов работающих с Linux.
Почти все Python девелоперы с нами ну и другие тоже подтянутся.

По рекламе: @jannytg
@anothertechrock
Download Telegram
👩‍💻 Передача файлов с помощью scp

Команда scp используется для безопасного копирования файлов между локальным компьютером и удаленным сервером, а также между двумя удаленными серверами, используя протокол SSH. Она позволяет передавать файлы и каталоги по зашифрованному каналу, что гарантирует конфиденциальность данных.

⚙️ Синтаксис:

scp [опции] <источник> <назначение>


⚙️ Примеры использования

Копирование файла на удалённый сервер:

scp file.txt user@remote_host:/path/to/destination  


Скачивание файла с сервера:

scp user@remote_host:/path/to/file.txt ./  


Передача директории:

scp -r папка user@remote_host:/path/to/destination  


-r — ключ для копирования директории

Указание порта SSH:

Если вдруг используется нестандартный порт, мы можем его передать установив флаг -P:

scp -P 2222 file.txt user@remote_host:/path/to/destination 


📥 Для оптимизации передачи больших файлов можно их сжать с помощью флага -C.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
🔥 Уменьшение размера лог-файлов

В обычном состоянии, если приложение запущено и пишет в лог файл, его не рекомендуется удалять, поскольку в *nix, открытый файловый дескриптор связан не с именем файла, а с iNode.

И если мы удалим лог-файл, приложение может не начать писать в новый файл с нуля, а продолжать писать в старый, который для нас уже будет недоступен по имени (мы же его удалили). Затем, когда приложение остановится и закроет дескриптор, данные удалятся с файловой системы.

(Большинство программ при записи в лог каждый раз открывают и закрывают файл, и тогда этой проблеме они не подвержены).

Поэтому очистку файла следует делать либо так (очистим файл, не удаляя его):

> application.log


Либо так (файл будет урезан до указанного размера):

truncate --size=1M application.log


Но эта команда именно урежет, т.е. в файле останутся старые данные, а свежие как раз и будут урезаны.

Поэтому можно делать вот так, сохраняя последние 1000 строк:

echo "$(tail -n 1000 application.log)" > application.log
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
🚀 Перемещайся по файловой системе молниеносно: 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. Если вы часто прыгаете между проектами, архивами или каталогами с данными, он экономит десятки нажатий и делает навигацию в консоли почти мгновенной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥32
👩‍💻 Утилита 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 /"
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👏1
👩‍💻 Утилита форматирования 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1🥰1
👩‍💻 Утилита 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 окружения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Команда 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/

Полезно при попытке размонтировать диск или директорию — можно увидеть, кто удерживает файлы внутри.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥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$'
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🆒1