ch
Feedback
LinuxCamp | DevOps

LinuxCamp | DevOps

前往频道在 Telegram

Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C

显示更多

📈 Telegram 频道 LinuxCamp | DevOps 的分析概览

频道 LinuxCamp | DevOps (@linuxcamp_tg) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 13 953 名订阅者,在 技术与应用 类别中位列第 9 144,并在 俄罗斯 地区排名第 47 276

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 13 953 名订阅者。

根据 07 七月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -101,过去 24 小时变化为 -4,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 28.39%。内容发布后 24 小时内通常能获得 10.67% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 3 963 次浏览,首日通常累积 1 489 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 23
  • 主题关注点: 内容集中在 linuxcamp, ядро, linux, диск, docker 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C

凭借高频更新(最新数据采集于 08 七月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

13 953
订阅者
-424 小时
-327
-10130
帖子存档
В смысле DevOps? Друзья, вижу ваше негодование по поводу добавления DevOps к каналу) И прям читаю мысли: "Где тут вообще DevO
В смысле DevOps? Друзья, вижу ваше негодование по поводу добавления DevOps к каналу) И прям читаю мысли: "Где тут вообще DevOps?!" Так вот, правки внесены не просто так. К нам присоединяется редактор, который будет отвечать за данную тематику и дополнительно публиковать материалы по сетям. Посты от редакторов будем маркировать тегом: by + имя (#bymaga). Попробуем в рамках данного проекта выйти за рамки базового системного администрирования и расширить список рубрик, чтобы быть полезными большему количеству людей. Если нововведения приживутся, сделаем ультимативный канал, который будет захватывать несколько профилей. LinuxCamp | #info

Залутал гуся на cpp конфе 🐥
Залутал гуся на cpp конфе 🐥

Утилиты для работы с DBus сервисами Пока я решал задачу с профилями энергопотребления, использовал ряд утилит, которые помогали мне взаимодействовать с dbus сервисами. Коротко пробежимся по самым основным: 1) qdbusviewer: графическая Qt утилита, которая позволяет просматривать активные сервисы в которые можно постучаться по системной (system bus) или пользовательской (session bus) шине. Она предоставляет удобный интерфейс для работы с объектами, методами и сигналами.

$ sudo apt install qttools5-dev-tools
$ qdbusviewer
2) dbus-send: низкоуровневый cmd инструмент, который позволяет вручную отправлять запросы к сервисам:

$ sudo apt install dbus
$ dbus-send --system --dest=com.redhat.tuned --type=method_call --print-reply /Tuned com.redhat.tuned.control.active_profile
Подписаться на сигнал через "dbus-send" не получится, для этого нужны утилиты, которые умеют прослушивать сервисы в реальном времени - "dbus-monitor". 3) dbus-monitor: выводит на консоль информацию о сигналах в момент их получения либо о методах в момент вызова:

$ dbus-monitor "type='method_call',interface='org.kde.Solid.PowerManagement'"
Входит в пакет dbus. Хорошо мне подходил для дебага. Я сначала пытался отследить сигнал - если приходит отбивка, значит сервис активен, интерфейс верный и можно переходить к коду. 4) busctl: современный аналог dbus-send, включен в systemd. С помощью утилиты можно вызывать (busctl call) методы и прослушивать (busctl monitor) события. Также можно выводить список узлов на пользовательской и системной шинах:

$ sudo apt install systemd

$ busctl call com.redhat.tuned /Tuned com.redhat.tuned.control active_profile

$ busctl --system monitor "com.redhat.tuned.control" "profile_changed"

$ busctl --user list
$ busctl --system list
LinuxCamp | #utils

Возможности для молодых людей в «Алабуге», Республике Татарстан В особой экономической зоне «Алабуга» активно развивается лид
Возможности для молодых людей в «Алабуге», Республике Татарстан В особой экономической зоне «Алабуга» активно развивается лидерская программа «100 Лидеров». В ней могут поучаствовать молодые специалисты от 19 до 26 лет. У участников есть возможность познакомиться с топ-менеджерами компании, поиграть в бизнес-игры, пройти собеседования с реальным шансом трудоустройства в компанию «Алабуга». Питание и проживание за счет компании. Работа в «Алабуге» - это зарплата от 110 до 240 тысяч рублей и участие в реализации проектов мирового уровня. Следующий поток - с 5 по 9 апреля! Заявку можно подать на сайте

Как я познакомился с Димасом Dbus-ом В общем-то, с dbus я уже был ранее знаком, но последние рабочие такски заставили меня прибегнуть к практике. Если кто не в танке, dbus (Desktop Bus) - это система межпроцессного взаимодействия в Linux. Позволяет она удобно из одного приложения дергать код другого, подписываться на сигналы и передавать информацию. Задача была следующая - на стороне приложения отслеживать профили энергопотребления системы (balanced, powersave, performance) и корректировать поведение для экономии заряда либо выдавать сверх производительность. Для этого нужно было понять, какие вообще подсистемы за это отвечают и как с ними работать. Пока разбирался с задачей, рассмотрел 2 сервиса: 1) tuned (com.redhat.tuned) - приложение, которым можно переключать и отслеживать профили. Можно использовать независимо от окружения; 2) PowerManagement (org.kde.Solid.PowerManagement) - kde модуль, который позволяет отслеживать состояние батареи: идет ли питание от провода, низкий ли заряд и т.д.; По итогу, через PowerManagement получилось отследить 3 состояния: AC (питание по проводу), Battery и LowBattery. Если хотите проверить у себя:

$ qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement org.kde.Solid.PowerManagement.currentProfile
Полный интерфейс вывести можно вот так:

$ busctl --user introspect org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement
Приложение tuned позволило более гибко настроить приложуху и отследить профили (balanced, powersave, performance), которые могут выставляться независимо от заряда батареи. Узнать профиль:

dbus-send --system --dest=com.redhat.tuned --type=method_call --print-reply /Tuned com.redhat.tuned.control.active_profile
Вывести полный интерфейс:

$ busctl --system introspect com.redhat.tuned /Tuned
Конечно же для языка C у нас есть либа (libdbus), через которую аналогичную процедуру можно реализовать кодом. Задача еще в работе, поэтому по мере своего продвижения в dbus буду постить полезности. LinuxCamp | #story

Почему BIOS нужно называть UEFI и как его разрабатывают BIOS — это системное программное обеспечение, которое встроено прямо
Почему BIOS нужно называть UEFI и как его разрабатывают BIOS — это системное программное обеспечение, которое встроено прямо в материнскую плату и хранится в энергонезависимой памяти: как правило, это SPI Flash. Даже если на материнской плате нет жесткого диска или другого накопителя данных, BIOS уже присутствует. Сейчас BIOS правильнее называть UEFI, но по инерции многие продолжают называть эту систему BIOS. В начале 80-х годов компания IBM разработала для своих компьютеров прошивку, которая обеспечивала инициализацию оборудования. Также она предоставляла базовые сервисы для операционной системы того времени — DOS. Примеры таких сервисов: работа с клавиатурой, дисками и выводом изображения на экран. Эта система получила название BIOS, то есть базовая система ввода-вывода. Первые PC были системами с 16-битной адресацией и реальным режимом работы, они поддерживали максимум один мегабайт памяти, адресуемой посегментно. Использовать язык высокого уровня для написания ПО первичной инициализации таких систем было неэффективно, а порой и невозможно, поэтому для разработки BIOS использовали максимально низкоуровневый язык программирования — ассемблер. В середине 90-х годов компания Intel начала разрабатывать процессоры с архитектурой Itanium. Анализируя BIOS, инженеры поняли, что его возможностей недостаточно для инициализации сложных систем с большим объемом памяти и 64-битными процессорами. В результате была разработана новая спецификация программной инициализации под названием EFI. Что было дальше и как сейчас разрабатывают прошивки для ноутбуков и серверов, читайте в статье руководителя отдела разработки BIOS/UEFI российской компании YADRO.

Как менять пароли? Для смены либо создания пароля в linux используется команда passwd. Если пользователь без root прав, то он
Как менять пароли? Для смены либо создания пароля в linux используется команда passwd. Если пользователь без root прав, то он сможет сменить только свой пароль. Если привилегирован, то сможет менять разным юзерам. Смена собственного пароля:

$ passwd

Changing password for vitek
current password:
Enter new password:
Retype new password:
А теперь представим, что за нашей системой работает образный "Васек", который забыл свой пароль. Мы, будучи админом, можем создать для "Васька" новый пароль и пустить его в систему:

$ sudo passwd vasya

New password: 
Retype new password: 
Все, можем сообщить Васе пароль и пусть пользуется системой:

$ su - vasya
Password: 
vasya@ubuntu-desktop:~$
А если мы, как админ, заметили, что у пользователя слабый пароль, то можем принудительно сделать его недействительным и заставить юзера обновить данные при следующей попытке входа. Для этого добавим флаг "-e":

$ sudo passwd -e vasya
$ sudo su - vasya

You are required to change your password immediately...
Changing password for vasya.
Current password: 
New password: 
Retype new password:
LinuxCamp | #microhelp

Команда «ой, я забыл pushd» Предыдущие посты по стеку каталогов: тут и тут. Предположим, вы перемещаетесь между несколькими д
Команда «ой, я забыл pushd» Предыдущие посты по стеку каталогов: тут и тут. Предположим, вы перемещаетесь между несколькими директориями с помощью pushd, а потом случайно запускаете cd и теряете первый элемент стека:

$ dirs
~/Web/src /var/www/html /etc/apache2

$ cd /etc/ssl/certs

$ dirs
/etc/ssl/certs /var/www/html /etc/apache2
Команда cd заменила каталог "~/Web/src" на "/etc/ssl/certs". Не волнуйтесь, чтобы все это дело пофиксить, нужно запустить pushd с дефисом:

$ pushd -
~/Web/src /etc/ssl/certs /var/www/html /etc/apache2
Команда работает практически аналогично "cd -": добавляет прошлый активный каталог в стек и переходит на него. Теперь к нам вернется потерянный каталог и сохранится тот, в который мы перешли через cd. Если мы через cd куда-то перешли, осознали проблему, но менять каталог не хотим, используем pushd дважды. Для удобства еще и alias определим:

$ pushd -
~/Web/src /etc/ssl/certs

$ pushd
/etc/ssl/certs ~/Web/src

alias slurp='pushd - && pushd'
Такой прием, конечно, не поможет, если мы несколько раз через cd походили по разным местам. Тут нужно вовремя раздуплиться, иначе придется вводить полный путь. LinuxCamp | #shell

Практика использования: pushd, popd, dirs И так, вернемся к задаче, над которой начали работать тут. Для того, чтобы быстро переключаться между 4 каталогами, нужно сначала добавить их в стек. Текущий будет самым левым (верхним):

$ pushd /var/www/html
/var/www/html ~/Web/src

$ pushd /etc/apache2
/etc/apache2 /var/www/html ~/Web/src

$ pushd /etc/ssl/certs
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Команда pushd без аргументов меняет местами два верхних каталога в стеке и переходит к новому верхнему. Давайте несколько раз переместимся между "/etc/ssl/certs" и "/etc/apache2":

$ pwd
/etc/ssl/certs

$ pushd
/etc/apache2 /etc/ssl/certs /var/www/html ~/Web/src

$ pushd
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Что делать, если нужно перейти в другие каталоги стека, помимо двух верхних? pushd и popd принимают целочисленные аргументы для данной задачи. Давайте для наглядности выведем текущий стек в столбец:

$ dirs -v
0 /etc/ssl/certs
1 /etc/apache2
2 /var/www/html
3 ~/Web/src
Команда "pushd +N" сдвигает N каталогов с вершины стека в самый низ, а затем переходит к новому верхнему. Если нужно попасть в "/var/www/html" и сохранить структуру стека, используем:

$ pushd +2
/var/www/html ~/Web/src /etc/ssl/certs /etc/apache2
Отрицательный аргумент (-N) сдвигает каталоги в противоположном направлении. Чтобы перейти к каталогу в нижней части стека, можно либо сдвинуть все, кроме последнего, либо просто использовать "pushd -0":

$ dirs
/etc/apache2 /etc/ssl/certs ~/Web/src /var/www/html

$ pushd -0
/var/www/html /etc/apache2 /etc/ssl/certs ~/Web/src
Можно также удалять каталоги из стека, используя popd с аргументом. Команда "popd +N" удаляет каталог, расположенный на позиции N, из стека. Отрицательный аргумент (-N) означает отсчет снизу. Подсчет начинается с нуля, поэтому "popd +1" удаляет второй каталог сверху:

$ dirs
/var/www/html /etc/apache2 /etc/ssl/certs ~/Web/src

$ popd +1
/var/www/html /etc/ssl/certs ~/Web/src

$ popd +2
/var/www/html /etc/ssl/certs
Будьте аккуратны и внимательны. Если вы используете команду cd, то самый верхний элемент стека затрется на текущий активный каталог. Эту проблему мы научимся решать в пятницу) LinuxCamp | #shell

Стрелка за 200 в работе с файловой системой Представим такой рабочий процесс, когда нам нужно перемещаться между 4 каталогами
Стрелка за 200 в работе с файловой системой Представим такой рабочий процесс, когда нам нужно перемещаться между 4 каталогами, расположенными по совершенно разным путям. Использовать "cd -" не вариант, т.к. оболочка запоминает только 1 прошлый каталог. Можно использовать CDPATH, но тогда нужно запоминать названия директорий, с которыми работаем. Команды оболочки pushd, popd и dirs позволяют обойти это ограничение. Предположим, вы создаете локальный сайт и работаете с ресурсами:

/var/www/html
/etc/apache2
/etc/ssl/certs
~/Web/src
Быстро переключаться между ними можно с помощью функции оболочки - "стеком каталогов". Стек каталогов — это список директорий, которые вы посетили и решили отслеживать в текущем экземпляре оболочки. Изначально он содержит только текущий путь. Просмотреть стек можно, используя команду dirs:

$ dirs
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Вывод команды можно напечатать столбцом "-p":

$ dirs -p
/etc/ssl/certs
/etc/apache2
...
А можно и пронумеровать "-v". Это нам позволит вдальнейшем удобнее переключаться между каталогами:

$ dirs -v
0 /etc/ssl/certs
1 /etc/apache2
...
Вы управляете стеком, выполняя две операции: pushing и popping (есть, кста, такой стиль танца - весело выглядит). Pushing каталога добавляет его в начало списка (вершину стека) и переходит в него:

$ pushd /etc/apache2
/etc/apache2 /var/www/html
Для того, чтобы только добавить каталог в стек и не переходить на него, нужно использовать флаг "-n". Popping удаляет верхний каталог из стека и возвращает нас на следующий за ним:

$ popd
/var/www/html
Если хотим полностью очистить стек, тогда либо выполняем "dirs -c", либо зовем popd до тех пор, пока не увидим:

$ popd
bash: popd: directory stack empty
Принцип работы со стеком заключается в том, что мы добавляем туда каталоги, после чего прыгаем по ним, используя аргументы для pushd и popd, которые рассмотрим далее. LinuxCamp | #shell

У K2 Cloud скоро будет митап о карьере в Linux Эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — о
У K2 Cloud скоро будет митап о карьере в Linux Эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — обсудят профессиональный путь Linux-специалиста. Среди тем: как безболезненно «вкатиться» в Linux, с чем откликаться на вакансию, какие вопросы задают на техническом интервью и как расти после оффера. Полезный контент для начинающих спецов, которые хотят развиваться в DevOps и не только. Встреча пройдет онлайн, 19 марта в 18:00 (msk). Подробности и регистрация по ссылке

Разница между su и su - Ни для кого не секрет, что Linux - система, с которой можно работать от разных пользователей. Сегодня я запускаю сессию от Паши, завтра от Пети. Когда вы в сессии открываете терминал, стартует оболочка, которая подстраивает окружение под конкретного юзера: выполняет скрипты, определяет переменные. Бывает, приходится, работая в сессии одного пользователя, переключиться на другого, например, чтобы использовать ресурсы, ограниченные правами доступа. Для этого мы используем команду "su" (substitute user), которая позволяет сменить пользователя в текущей оболочке:

$ su vasya
После того, как мы выполним команду, создастся дочерняя оболочка, которая переймет все переменные окружения родителя, определит пользовательские (USER, HOME ...) и выполнит локальные "Васины" скрипты: /home/vasya/.bashrc и т.д.:

$ export USER1VAR="vasya"

$ su xoadmin
$ printenv | grep USER
USER=xoadmin
USER1VAR=vasya
Чет какая-то каша выходит. Половина Васиных переменных, половина юзера xoadmin. Такой способ полезен, когда нам нужно быстро поменять пользователя и не требуется его окружение в изначальном виде. Если нужно полностью воссоздать среду, как при чистом входе в систему, следует использовать "su -":

$ su - xoadmin
Окружение родителя мы не наследуем и запускаем оболочку типа "login shell", которая выполнит дополнительные скрипты инициализации "/etc/profile", "~/.bash_profile". Подробнее про типы оболочек говорили вот тут, а про этапы их инициализации тут. Также, когда мы используем "su -", наш рабочий каталог переключается на домашний для целевого пользователя. Мелочь, но факт:

$ pwd
/home/vasya/Music
$ su - xoadmin
$ pwd
/home/xoadmin
LinuxCamp | #shell

Перемещайся по файловой системе как флеш: CDPATH Многие из вас умеют быстро ходить по файловой системе через автодополнение п
Перемещайся по файловой системе как флеш: CDPATH Многие из вас умеют быстро ходить по файловой системе через автодополнение пути по TAB, использование '~' для указания домашнего каталога или команде "cd -", которая позволяет переключаться между текущим и прежним каталогами:

$ cd -
/home/xoadmin/Documents

$ cd -
/home/xoadmin/Music
Но этого мало для того, чтобы считать себя профи. Предположим, у вас есть важный каталог "/home/smith/Family/Memories/Photos", который вы часто посещаете. Скорее всего, чтобы попасть в него, вы введете путь:

$ cd ~/Family/Memories/Photos
Да, но было бы круто сократить этот путь до Photos, независимо от того, где мы находимся:

$ cd Photos
Если вы не сидите где-то, где есть подкаталог Photos, то получите ошибочку:

bash: cd: Photos: No such file or directory
Можно сделать так, чтобы команда cd проверяла дополнительные пути помимо текущего каталога. Для этого нужно перечислить их в переменной CDPATH:

$ CDPATH=$HOME/Family/Memories
$ pwd
/etc
$ cd Photos
/home/smith/Family/Memories/Photos
Несколько каталогов можно указать через разделитель:

$ CDPATH=$HOME:$HOME/Projects:$HOME/Family/Memories:/usr/local
Итого: определяем переменную либо в локальном "~/.bashrc" либо в глобальном "/etc/profile" и перечисляем в ней самые популярные каталоги поиска. Для меня это, допустим, каталог "Sources", в котором лежат исходники различных утилит:

$ echo $CDPATH
/home/xoadmin/Sources

$ pwd
/home/xoadmin/Music

$ cd picom
/home/xoadmin/Sources/picom
Если нужно быстро переключиться на другой проект, я не буду вводить полный путь до него и укажу только название. LinuxCamp | #utils

Хочу много зарабатывать и писать инновационные проекты, что же выбрать.... Очевидно C++ Сегодня рынок IT особенно ценит опытных C++ разработчиков. Нужно же кому-то поручить алгоритм для беспилотников написать или сверх быстрый бэкенд. Тут так просто не отделаешься высокоуровневыми инструментами. Я сам пишу на C/C++ и очень ценю качественные обучающие ресурсы. Вашему вниманию мой фаворит среди ТГ каналов по плюсам: Грокаем С++. Его авторами являются практикующие сеньоры, которые простыми словами и без лишней мудрености разбирают: метапрограммирование, фишки новых стандартов, алгоритмы, вопросы с собеседований, многопоточку и другие непонятные штуки из современного программирования на С++. Свое место найдет каждый: Если ты еще совсем новичок, то забирай список всех полезных материалов для старта. Хочешь устроиться на работу? Забирай гайд по собеседованиям. Вообще, у них куча годных постов и гайдов на любой вкус. Все найдете в закрепе. Не теряем ресурс и становимся частью элитного клуба плюсовиков: Грокаем С++

Итоги квартала По традиции набросал сводку ключевых постов (декабрь - февраль 2025): Сигналы 1. Отправка сигналов: kill() 2. Отправка сигнала самому себе: raise() 3. Защита от незваных гостей: сигнальная маска 4. Работа с ожидающими сигналами 5. Перехватывай сигналы, как профи: sigaction() 6. Функции для работы с набором сигналов Потоки ввода-вывода 1. Потоки ввода-вывода: stdout, stderr, stdin 2. Операторы перенаправления ввода-вывода: >, >> 3. Операторы перенаправления ввода-вывода: <, << 4. Операторы перенаправления ввода-вывода: | Оболочка 1. Шаблоны командной оболочки: *, ?, [] 2. Вычисление переменных в оболочке 3. Условные списки: ||, && 4. Подстановка вывода команды: $() 5. Передача команды в качестве bash аргумента 6. Выполнение команды в подоболочке: () 7. Расширение команд с помощью {} Задания 1. Фоновое выполнение команд и задания 2. Команды управления заданиями: fg, bg, jobs 3. Проблема с вводом-выводом в фоновом выполнении Разбор команд 1. Автоматизация задач с xargs 2. Xargs и флаги: -L, -t 3. Практика использования xargs 4. Управление буфером обмена: xclip 5. Прокачиваемся в grep 6. Просмотр файлов: head и tail 7. Прокачиваемся в find 8. Прокачиваемся в cp 9. Настройка прав по умолчанию: umask 10. Прокачиваемся в tr Базовый linux: 1. Раскрываем завесу тайн над устройствами 2. Что такое /dev/null и почему туда направляют данные? Личные практики: 1. Не самый стандартный способ использовать syslog 2. Как я потрошил iso образ 3. Как получить доступ к данным iso образа? Рекомендации 1. Топ ресурсов по изучению Linux LinuxCamp | #sumup

YADRO приглашает С++ Software Engineer в команду Telecom 🔍 Вендор и производитель IT-инфраструктуры YADRO проводит SPRINT OF
YADRO приглашает С++ Software Engineer в команду Telecom 🔍 Вендор и производитель IT-инфраструктуры YADRO проводит SPRINT OFFER для С++ Software Engineer в двух направлениях:В Telecom Platform вы будете развивать платформу, обеспечивающую middleware services, high avaliability, node management и delivery для приложений в составе базовой станции LTE/GS. А также участвовать в проектировании и развитии архитектуры телеком-платформы и разработке её компонентов в технологическом стеке C++/Linux. → Занимаясь разработкой базовой станции LTE/GSM и 5G Core, вы сможете создавать телекоммуникационные решения от этапа исследования и прототипирования до вывода в коммерческое использование пакетного ядра сети 5-го поколения. А также разрабатывать ПО для базовых станций LTE и реализовывать полный стек протокола 3GPP. Станьте частью инженерного сообщества с многопрофильной экспертизой и реализовывайте амбициозные проекты, влияя на продукт напрямую. 🔵 Читайте подробности на сайте и оставляйте заявку до 9 марта.

Инъекция пользы Если хотим передать файлы или каталоги с локальной системы на удаленный ssh сервер или наоборот, используем команды: scp и sftp. Скопируем файл с удаленного хоста в локальный каталог:

$ scp user@host:/path/to/file /local/dir
Скопируем файлы с локального компьютера на удаленный хост:

$ scp /local/dir/file user@host:/remote/dir
Скопируем файл с одного удаленного хоста на другой:

$ scp user1@host1:/remote/file user2@host2:/remote/dir
Прога sftp не требует постоянно указывать адрес ssh сервера. Вместо этого мы подключаемся к нему один раз и используем интерфейс get и put:

$ sftp user@host
sftp> get /remote/dir/file /local/dir
sftp> put /local/dir/file /remote/dir
Для передачи каталогов используем флаг "-r":

$ scp -r /local/dir user@host:/remote/dir
$ sftp> put -r /local/dir /remote/dir
Также хочется отметить, что sftp имеет важное преимущество перед обычным ftp — она не требует, чтобы на удаленном узле работал сервер FTP. Ей необходим только SSH. LinuxCamp | #microhelp

⚡️Истовый инженер теперь в Telegram! В канале публикуют полезные статьи для инженеров и программистов со всех направлений. Ст
⚡️Истовый инженер теперь в Telegram! В канале публикуют полезные статьи для инженеров и программистов со всех направлений. Статьи ниже определенно достойны вашего внимания: — Quake 2 на нашем RISC-V, или как мы поднимали старый Radeon на FPGA (читать) — Ядро и драйверы Linux: настоящее и будущее (читать) — Игра в имитацию: как разрабатывать и отлаживать ПО для процессора, которого нет (читать) — Между процессором и пользователем: как разрабатывают операционные системы (читать) 📝 и ещё 100+ полезных статей, лекций, подкастов и кейсов от практиков Подписываемся, чтобы не потерять полезный канал @ultimate_engineer

Прокачиваемся в tr Сегодня у нас на разборе одна из культовых утилит "tr". Используется она для форматирования текста: удален
Прокачиваемся в tr Сегодня у нас на разборе одна из культовых утилит "tr". Используется она для форматирования текста: удаления и замены символов. Чаще всего можно встретить в паре со сторонними командами, которые выводят в stdout текстовый поток: cat, head, echo и т.д. Команда имеет следующий вид:

$ tr флаг SET1 [SET2]
Сетами представлены наборы символов, с которыми tr будет работать. Второй набор не всегда используется. Команда разбирает текст посимвольно и выполняет операцию для каждого элемента отдельно. Флаги команды tr: 1) -d (--delete): удаляет элементы из первого набора:

$ echo "Hello 123 world" | tr -d ' a-zA-Z'
123
2) -c (--complement): обработать каждый символ, который не входит в набор "SET1":

$ echo "Hello 123 world" | tr -cd 'a-zA-Z\n'
Helloworld
В примере мы удалили все символы, которые не входят в перечисление 'a-zA-Z\n'; Таким же макаром можно все буквы удалить и оставить только цифры:

$ cat customer.csv
USA,1234567890
Canada,0987654321

$ cat customer.csv | tr -cd '0-9\n'
1234567890
0987654321
3) -s (--squeeze-repeats): cжимает повторяющиеся символы из первого набора до одного:

$ echo "Hello    World" | tr -s ' '
Hello World
4) -t (--truncate-set1): обрезает первый набор до длины второго:

$ echo "abcdef" | tr -t 'abcdef' '123'
123def
Если длина первого набора больше и мы не указываем флаг, каждый последующий его символ, который (по номеру > конец "SET2"), будет заменен:

$ echo "abcdef" | tr 'abcdef' '123'
123333
При своем дефолтном поведении, программа заменяет символы из "SET1" на элементы "SET2":

$ echo "Hello World" | tr 'a-z' 'A-Z'
HELLO WORLD
Команда умеет парсить шаблоны: [:upper:], [:lower:] и т.д. Детальнее можно ознакомиться в мануале:

$ echo "hello world" | tr [:lower:] [:upper:]
HELLO WORLD
Данные на вход можно получить и через файлик. Для этого мы используем перенаправление:

$ cat infile
www.baeldung.com

$ tr 'a-z' 'A-Z' < infile
WWW.BAELDUNG.COM
Измененные данные нужно куда-то записать? Правильно, перенаправляем вывод:

$ tr 'a-z' 'A-Z' < infile > outfile
LinuxCamp | #utils