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
相关产品推荐
相关产品推荐

