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

Mac系统下如何用sed在Python脚本开头添加shebang且保留原有内容?

Mac下用sed给Python脚本添加shebang的正确方法

你的问题出在误用了替换命令,直接覆盖了第一行内容。要保留原有代码并在脚本开头添加shebang,需要使用插入命令而非替换命令,具体解决方法如下:

正确命令

在Mac的BSD环境下,执行这条sed命令即可实现需求:

sed -i '.bak' '1i\
#!/usr/bin/env python2\
' file.py

关键说明

  • -i '.bak':执行时会自动生成原文件的备份file.py.bak,避免误操作丢失数据;如果不需要备份,可写成-i ''(注意空引号不能省略)。
  • 1i\:代表在第1行之前插入新内容,Mac版sed要求i命令后必须紧跟反斜杠和换行,这是它和GNU sed的语法差异。
  • 中间的#!/usr/bin/env python2就是要添加的shebang,末尾的反斜杠是语法要求,确保命令正确执行。

原命令丢失内容的原因

你之前使用的s替换命令:

sed -i '.bak' '1 s|^.*$|#!/usr/bin/env python2|g' file.py

作用是把第1行的所有内容(即import os)完全替换成shebang,自然会丢失原有第一行的代码。

简化写法(适合bash/zsh终端)

如果觉得换行的写法繁琐,也可以用bash的ANSI-C转义字符串简化命令:

sed -i '.bak' $'1i\\\n#!/usr/bin/env python2\n' file.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:12