You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nautilus Python扩展安装脚本:如何无需重下载即可保存自身?

解决方案

Shell 小技巧

不用大幅修改原有curl命令,借助tee命令在传递脚本内容给Python的同时,先把脚本保存到临时文件:

curl 'https://example.org/my-extension/script.py' | tee /tmp/nautilus-extension-temp.py | python

之后在Python脚本的__main__逻辑中,直接读取这个临时文件的内容,复制到Nautilus扩展的标准安装路径(比如~/.local/share/nautilus/extensions/),完成后可选择删除临时文件。

Python 内置方案

完全不需要修改curl命令,直接在脚本内读取标准输入的完整内容(也就是脚本自身的代码),再写入到目标安装路径:

import sys
import os

# 根据你的系统调整Nautilus扩展的目标路径
TARGET_PATH = os.path.expanduser("~/.local/share/nautilus-python/extensions/my-custom-extension.py")

if __name__ == "__main__":
    # 读取stdin中的完整脚本代码
    script_content = sys.stdin.read()
    # 确保目标目录存在
    os.makedirs(os.path.dirname(TARGET_PATH), exist_ok=True)
    # 将脚本写入到安装路径
    with open(TARGET_PATH, "w", encoding="utf-8") as f:
        f.write(script_content)
    
    # 可选:添加后续安装步骤,比如设置执行权限、提示重启Nautilus
    os.chmod(TARGET_PATH, 0o644)
    print("扩展安装完成,请执行 `nautilus -q` 重启文件管理器生效")

执行时依然用原有命令:

curl 'https://example.org/my-extension/script.py' | python

这种方案的核心是利用curl | python的执行逻辑——Python解释器从标准输入读取并执行代码,而脚本本身可以捕获这份输入内容,完成自我复制。

内容的提问来源于stack exchange,提问作者theoamonteiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:48:16