fa
Feedback
🐧 Linux Junior. Программирование под Linux.

🐧 Linux Junior. Программирование под Linux.

رفتن به کانال در Telegram

Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock

نمایش بیشتر
3 117
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
-1130 روز
آرشیو پست ها
🦇 Утилита bat bat — это современная замена классической команды cat, которая выводит содержимое файлов, но делает это намного удобнее и красивее. 🦇 Достоинства bat: ✔️ Выводит содержимое файлов с подсветкой синтаксиса (как в редакторах кода) ✔️ Показывает нумерацию строк ✔️ Умеет подсвечивать различия при сравнении файлов ✔️ Поддерживает постраничный просмотр (через less) ✔️ Может заменять cat в привычных командах 🦇 Установка:
sudo apt install bat   # Ubuntu / Debian
sudo dnf install bat   # Fedora
sudo pacman -S bat   # Arch Linux
🦇 Практическая польза bat часто используют: 🔴 Для чтения конфигов и логов с подсветкой, 🔴 В скриптах и DevOps-инструментах (как улучшенный cat), 🔴 Для ревью кода прямо в терминале, 🔴 Как быструю замену IDE, если нужно просто глянуть файл красиво. 📎 Репозиторий с примерами, скриншотами и инструкциями - https://github.com/sharkdp/bat

Команда 2>&1 > abc
Anonymous voting

Команда tee в Linux читает стандартный ввод и одновременно выводит его на экран и записывает в файл(ы), что позволяет просматривать вывод и сохранять его для последующего использования.
ls -lh | tee files.txt
Результат выведется в терминал и одновременно запишется в файл. По умолчанию tee затирает файл. Чтобы дописать в конец, нужно использовать опцию -a. Команда tee имеет большой потенциал использования. ⚙️ Пример 1. Если попытаться записать в системный файл так:
sudo echo "text" > /etc/config
— ничего не выйдет (перенаправление выполняется от имени обычного пользователя). А вот так сработает:
echo "text" | sudo tee /etc/config
Потому что tee запускается с правами root и записывает корректно. ⚙️ Пример 2. Можно записывать системные логи "на лету". Например, мониторить сеть и одновременно вести лог:
ping google.com | tee -a ping.log
Так можно просматривать пинг в реальном времени и получить лог-файл после остановки. #вопросы

Как объединить вывод нескольких команд в один файл и при этом видеть результат на экране? Ответ через час. #вопросы

🔥 Копирование и вставка в Linux: не только Ctrl+C / Ctrl+V В Linux работа с копированием устроена чуть глубже, чем просто привычные сочетания клавиш. В X11-среде (GNOME, Xfce, KDE и др.) есть два буфера обмена, и они ведут себя по-разному: 🔎 Clipboard — системный буфер. Заполняется при Ctrl+C, вставляется через Ctrl+V. 🔎 Primary selection — заполняется при выделении текста мышью. Вставляется средней кнопкой мыши (или одновременным нажатием левой и правой на тачпаде). Буферы независимы: выделили текст — он уже доступен для вставки, но Ctrl+V вставит что-то другое. ✔️ Команда xclip xclip — утилита, которая позволяет работать с буферами обмена прямо из терминала. Она умеет читать данные из stdin и записывать их в нужный буфер, а также доставать оттуда содержимое. ⚙️ Копирование из файла
xclip < notes.txt
Теперь содержимое notes.txt можно вставить средней кнопкой мыши. ⚙️ Копирование в системный буфер
xclip -selection clipboard < notes.txt
Теперь текст вставится по Ctrl+V — как обычно. ⚙️ Копирование вывода команды
ls | grep log | xclip -selection clipboard
Результат команды окажется в буфере обмена — удобно вставить путь или имя файла в другой терминал или чат. ⚙️ Вставка из буфера
xclip -selection clipboard -o
Выведет содержимое системного буфера в stdout. Можно использовать в конвейере:
xclip -selection clipboard -o | wc -w
✔️ Немного автоматизации Создай алиасы, чтобы не набирать флаги каждый раз:
alias ccopy="xclip -sel c"
alias cpaste="xclip -sel c -o"
Теперь:
echo "important text" | ccopy
cpaste
— скопирует и вставит содержимое в системный буфер. 💡 Где это пригодится Практическое применение xclip выходит далеко за рамки простого копирования текста. Вот несколько примеров, где он действительно экономит время и клики: 1️⃣ Работа с логами и длинными командами
grep "ERROR" /var/log/syslog | tail -n 5 | xclip -sel c
Вывели последние ошибки и сразу скопировали их — можно вставлять в чат или тикет. 2️⃣ Передача данных между терминалами
cat build.log | grep version | xclip -sel c
В другой вкладке:
cpaste
Так можно быстро перекидывать строки между сессиями (например, dev и prod). 3️⃣ Копирование путей или имён файлов
find . -type f -name "*.sh" | head -n 1 | xclip -sel c
vim $(cpaste)
Ни одной мышиной операции — путь к файлу скопирован и подставлен в команду. 4️⃣ Безопасное копирование токенов и ключей
grep "API_KEY" .env | cut -d= -f2 | xclip -sel c
Токен копируется в буфер, не отображаясь в терминале и не попадая в историю. 5️⃣ Быстрое копирование результата из скрипта
generate-password | xclip -sel c
Пароль уже в буфере — вставляй куда нужно без вывода на экран.

Docker простыми словами - канал шпаргалка для тех, кто использует Docker в работе программиста, тестировщика или на любой дру
Docker простыми словами - канал шпаргалка для тех, кто использует Docker в работе программиста, тестировщика или на любой другой позиции. Первый канал по Docker. Поискав в телеграме каналы по docker и не найдя ничего, я решил обьединить контент в одном месте. По содержанию в канале: - вопросы с собеседований - команды докера - книги - тесты для проверки ваших знаний - обучающие видео - чат для обсуждения Подписывайтесь, комментируйте и предлагайте свой контент в нашем новом сообществе: @justdocker

👩‍💻 Утилита 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 окружения.

Как переименовать файл "new" в файл "old"?
Anonymous voting

Чтобы получить топ-10 команд, которые вы вводите чаще всего, посчитайте частоту команд в истории. Это интересно и полезно для самоанализа.
history | awk '{print $2}' | sort | uniq -c | sort -nr | head
#вопросы

Как узнать, какие команды вы используете чаще всего? Ответ через час. #вопросы

🔥 Чем отличается su от sudo Обе команды связаны с повышением прав, но делают это по-разному. 📌 Основная идея su — substitute user ➡️ «заменить пользователя» sudo — substitute user and do ➡️ «выполнить как другой пользователь» ⚙️ Как работает su su переключает вас на другого пользователя внутри текущей сессии. Для этого нужно знать пароль целевой учётки, а не своей.
user@dev:/$ su john
Пароль: ****
john@dev:/$ whoami
john
Вы стали Джоном и работаете от его имени. su без дефиса, как в этом примере, просто меняет пользователя, но оставляет окружение старого. О su - мы еще поговорим. ⚙️ Как работает sudo sudo запускает одну команду от имени другого пользователя (по умолчанию — root). При этом спрашивается ваш пароль, а не пароль того, под кем выполняется команда.
user@dev:/$ sudo -u john whoami
john
Чтобы это работало, у пользователя user должны быть разрешения в /etc/sudoers:
user ALL=(ALL:ALL) ALL
Редактируется через visudo:
sudo visudo
Проверить конфигурацию можно так:
sudo visudo -c
💡 visudo защищает от ошибок: если синтаксис неправильный, файл не сохранится. ⚙️ su с дефисом Иногда можно заметить команду su - john. Зачем дефис? Он очищает окружение и запускает оболочку, как будто вы вошли в систему под новым пользователем. Посмотрим на примере:
ssh user@pc
export a="test"
su john
echo $a
# test
Переменная $a сохранилась. А теперь с дефисом:
su - john
echo $a
# ничего не выводит
Переменные исчезли — новая, "чистая" среда. 📎 Коротко: su — просто смена пользователя, старое окружение остаётся; su - — полная имитация входа в систему под новым пользователем. ⚙️ Аналоги у sudo sudo тоже может запустить shell с разным уровнем "чистоты" окружения:
sudo -s   # shell с правами root, окружение текущее
sudo -i   # shell как при входе под root (загружается /root/.profile и т.п.)
Если в /root/.profile прописать переменную, то она появится только при sudo -i. ✔️ sudo -i ≈ sudo su - Но писать sudo su - — дурной тон: запускается лишний процесс, команда громоздкая и вообще не нужная.

👩‍💻 Команда yes Команда yes в Linux — это простая утилита, которая бесконечно выводит строку (по умолчанию y) в стандартный вывод. Эта команда часто применяется для автоматизации скриптов или тестирования. ⚙️ Синтаксис:
$ yes [строка]
⚙️ Примечания: ↘️ Если строка не указана — будет бесконечно выводиться y. ↘️ Если указать строку — будет бесконечно выводиться именно она. ↘️ Чтобы остановить вывод, нужно нажать Ctrl+C. ↘️ yes бесконечно генерирует вывод, поэтому почти всегда ее используют вместе с пайпами (|) или ограничителями (head). ⚙️ Примеры использования: 1️⃣ Иногда программы запрашивают подтверждение (Do you want to continue? [y/n]). Ввод y можно автоматизировать. Здесь все запросы будут автоматически подтверждаться y:
yes | apt-get install package
2️⃣ Подтверждение с no. Здесь на все запросы ответ будет n:
yes n | command
3️⃣ Тестирование производительности: yes можно использовать для загрузки процессора. Этот процесс будет сильно нагружать CPU, пока его не остановить (Ctrl+C):
yes > /dev/null
4️⃣ Быстрая генерация больших файлов. Эта команда создаст файл с 1000 одинаковыми строками:
yes "строка" | head -n 1000 > file.txt

Выберите НЕвалидное имя переменной в bash.
Anonymous voting

Для замены, замещения или удаления символов из стандартного ввода используется консольная команда tr. С ее помощью можно удалить нечитаемые символы:
tr -cd '\11\12\15[:print:]' < bad.txt > clean.txt
Опции: 🔴-c — инвертирует набор, т.е. все символы, не входящие в указанный диапазон, будут выбраны 🔴-d — удаляет выбранные символы (вместо замены) Диапазон символов для выборки: 🔴 \11, \12, \15 — это табуляция (\t), перевод строки (\n) и возврат каретки (\r), записанные в восьмеричном (octal) виде. Каждое число — это ASCII-код символа. 🔴 [:print:] — все видимые символы. В результате команда оставит только стандартные печатные символы, табы и переводы строк. #вопросы

Как очистить текст от нечитаемых символов, например, при копировании из PDF? Ответ через час. #вопросы

🔥 Расширение фигурных скобок (brace expansion) Фигурные скобки {} в Bash позволяют разворачивать выражения в последовательность аргументов. Простой пример:
echo {1..10}
# 1 2 3 4 5 6 7 8 9 10
Можно в обратную сторону:
echo {10..1}
# 10 9 8 7 6 5 4 3 2 1
⚙️ Шаг в диапазоне Третий параметр задаёт шаг:
echo {1..501..100}
# 1 101 201 301 401 501
Можно и в обратную сторону:
echo {501..1..100}
# 501 401 301 201 101 1
⚙️ Последовательности букв В отличие от seq, фигурные скобки умеют работать с буквами:
echo {A..P}
# A B C D E F G H I J K L M N O P
Шаг тоже поддерживается:
echo {A..P..2}
# A C E G I K M O
⚙️ Перечисления и практические приёмы Создать сразу несколько директорий:
mkdir ~/Sources/{test1,test2,test3}
Сравнить оригинал и патч одной командой:
diff {orig,patched}/path/to/prog.c
Сделать бэкап файла:
cp -p file.txt{,.bak}
# создаст file.txt и file.txt.bak
💡 Если перед запятой ничего нет, Bash просто подставляет существующее значение. ⚠️ Важно: пробелы внутри {} ломают расширение!
echo file{1.. 2}.txt  # не сработает
⚙️ Форматирование вывода Можно убрать пробелы из вывода, передав вывод в tr:
echo {A..P..2} | tr -d " "
# ACEGIKMO
Создадим псевдоним для получения n-й буквы алфавита:
alias nth="echo {A..Z} | tr -d ' ' | cut -c"
nth 10
# J
⚙️ {} vs [] Квадратные скобки [] — это сопоставление с шаблоном имён файлов, а фигурные {} — просто генерация последовательности.
ls file[1-9].txt
# отберёт существующие файлы
ls file{1..9}.txt
# попытается вывести все файлы последовательности, даже если их нет
⚙️ Группировка и вложенность Комбинация наборов:
touch {a,b,c}.{hpp,cpp}
# создаст a.cpp a.hpp b.cpp b.hpp c.cpp c.hpp
Вложенные расширения:
mkdir -p {source,help{/pages,/yelp,/images}}
Структура получится такая:
.
├── help
│   ├── images
│   ├── pages
│   └── yelp
└── source