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
A new home for kernel.org
Akamai 宣布将为 Linux 内核开发提供免费的基础设施支持,托管 kernel.org 代码仓库。Linux 内核规模庞大,包含约 2800 万行代码。自 2005 年以来,已有超过 13500 名来自 1300 多家公司的开发者参与贡献。Akamai 将为全球开发者提供稳定的 Git 环境支持,确保他们能快速获取内核源代码。
原文链接:https://lwn.net/Articles/1015555/
#Linux#开源#软件开发#基础设施
#AIGC
Read more
[$] Compact formats for debugging—and more
在2025年东京Linux Plumbers大会上,Stephen Brennan发表了一场关于调试信息格式的演讲。他探讨了当前包含调试所需符号等信息的debuginfo格式及其替代方案。他指出,debuginfo文件通常体积庞大,且名称中的“debug”一词有时会让用户感到不安。通过重新思考debuginfo及其相关工具的设计,他希望自由软件开发者能够“为我们已在使用的工具增添新的、有趣的功能,或者构建出全新的有趣工具”。
原文链接:https://lwn.net/Articles/1057295/
#Linux#调试#软件开发#工具
#AIGC
Read more