Python + bash
Если вам часто требуется запускать shell команды из Python-кода, какой способ вы используете?
Самый низкоуровневый это функция os.system(), либо os.popen(). Рекомендованный способ это subprocess.call(). Но это всё еще достаточно неудобно.
Советую обратить своё внимание на очень крутую библиотеку sh.
Что она умеет?
🔸 удобный синтаксис вызова команд как функций
# os
import os
os.system("tar cvf demo.tar ~/")
# subprocess
import subprocess
subprocess.call(['tar', 'cvf', 'demo.tar', '~/'])
# sh
import sh
sh.tar('cvf', 'demo.tar', "~/")
🔸 простое создание функции-алиаса для длинной команды
fn = sh.lsof.bake('-i', '-P', '-n')
output = sh.grep(fn(), 'LISTEN')
в этом примере также задействован пайпинг
🔸 удобный вызов команд от sudo
with sh.contrib.sudo:
print(ls("/root"))
Такой запрос спросит пароль. Чтобы это работало нужно соответствующим способом настроить юзера.
А вот вариант с вводом пароля через код.
password = "secret"
sudo = sh.sudo.bake("-S", _in=password+"\n")
print(sudo.ls("/root"))
Это не все фишки. Больше интересных примеров смотрите в документации.
Специально для Windows💀 юзеров
#libs#linux
👩💻 Linux: перенаправление.
• Если вы уже освоились с основами терминала, возможно, вы уже готовы к тому, чтобы комбинировать изученные команды. Иногда выполнения команд оболочки по одной вполне достаточно для решения определенной задачи, но в некоторых случаях вводить команду за командой слишком утомительно и нерационально. В подобной ситуации нам пригодятся некоторые особые символы, вроде угловых скобок.
• Для оболочки, интерпретатора команд #Linux, эти дополнительные символы — не пустая трата места на экране. Они — мощные команды, которые могут связывать различные фрагменты информации, разделять то, что было до этого цельным, и делать ещё много всего. Одна из самых простых, и, в то же время, мощных и широко используемых возможностей оболочки — это перенаправление стандартных потоков ввода/вывода. В этой статье вы узнаете:
- Три стандартных потока ввода/вывода;
- Перенаправление стандартного потока вывода;
- Перенаправление стандартного потока ввода;
- Перенаправление стандартного потока ошибок.
➡️https://selectel.ru/blog/tutorials/linux-redirection/
• В качестве дополнения, к посту подгрузил полезную шпаргалку, которая поможет освоить данную тему.
#Cron#Linux#Unix#CheatSheet
[$] A truce in the Manjaro governance struggle
Manjaro Linux 社区成员发布了一份“Manjaro 2.0 宣言”,其中包含一系列不满,并要求重组项目,以明确区分社区与 Manjaro 公司。宣言指出,项目领导层的行为不符合社区的最佳利益,导致开发者离开和创新停滞。宣言还要求将 Manjaro 商标及其他资产移交给一个待成立的非营利协会。
论坛上的回应显示,该宣言获得了广泛支持。项目负责人兼 Manjaro 公司 CEO Philip Müller 此前基本未参与讨论,但在 3 月 19 日表示,他“愿意进行严肃的讨论”,但前提是非营利组织已经实际成立。
原文链接:https://lwn.net/Articles/1063717/
#Linux#开源治理#社区动态
#AIGC
Read more
The Book of Remind
Remind 命令行日历与提醒工具的作者 Dianne Skoll 发布了《The Book of Remind》。这是一本循序渐进学习使用 Remind 的指南,也是对内容详尽的 `remind(1)` 手册页的有用补充。该书可免费下载。
原文链接:https://lwn.net/Articles/1059641/
#Linux#命令行工具#开源#文档
#AIGC
Read more
[$] 2025 Linux and free software timeline
回顾 2025 年 Linux 与自由软件领域的重要时刻
LWN.net 延续传统,发布了 2025 年 Linux 与自由软件领域重大事件与版本发布的时间线概览。这份时间线记录了去年该生态系统中值得关注的进展与里程碑。
原文链接:https://lwn.net/Articles/1051808/
#Linux#自由软件#开源#年度回顾
#AIGC
Read more
Introducing Moonforge: a Yocto-based Linux OS (Igalia Blog)
Igalia 宣布推出基于 OpenEmbedded 和 Yocto 的 Linux 发行版 Moonforge。
Moonforge 是一个面向 Linux 设备的操作系统框架,旨在简化和维护自定义操作系统的构建过程。它提供了一套精心挑选的 Yocto 层和配置文件,帮助开发者生成不可变的、可维护的且易于更新的操作系统镜像。
其目标是为构建嵌入式 Linux 产品的团队提供最佳的开发体验。Moonforge 处理了操作系统创建中的复杂方面,如系统集成、安全性、更新和基础设施,从而使开发者能够专注于构建和部署他们的应用程序或设备。
原文链接:https://lwn.net/Articles/1062451/
#Linux#嵌入式系统#开源#操作系统
#AIGC
Read more