最近在接手其他人的项目,有些是用windows开发的,安装到linux发现执行不起来,出现了错误
-bash: /etc/init.d/tm: /bin/sh^M: bad interpreter: No such file or directory
(还有一些配置无法读取等等了), 后来想起来windows 和unix 的换行符不同导致的,windows下默认为\r\n
, mac和linux等类unix系统为\n
。
怎么看到这种现象呢, 简单的可以cat命令
▶ cat -v setup.py
__author__ = 'likun.mo'^M
from setuptools import setup^M
^M
注意这个 ^M
想要自己输入需要用组合键 ctrl+v ctrl+m
解决
怎么把文件中的 ^M
去掉呢?我开始用了比较老土的办法,把文件重命名,然后touch一个新文件,复制粘贴过来。后来发现整个目录都要这样修改很麻烦,找到了一个名为 dos2unix
的工具。
macos上安装 brew install dos2unix
使用也很简单
▶ dos2unix setup.py
dos2unix: converting file setup.py to Unix format...
▶ cat -v setup.py
__author__ = 'likun.mo'
from setuptools import setup
批量查找并替换
find . -name "*.py" -exec dos2unix {} \;