在Linux中执行脚本的时候,有时候会遇到/bin/bash^M这样的错误,有时就是会报“坏的解释器: 没有那个文件或目录”这样的错误,但是找来找去,不知道什么原因。 那此时你就要心里有个底了,可能是这个脚本被人从windows上改变过,导致在Linux下出现了无法识别、无法执行的特殊字符。 具体是什么样的特殊字符呢? 在windows下使用某些文件编辑器进行批量替换后,文件中会产生一些隐藏字符,其实是ascii中的'\r'对于windows下使用不影响,但是上传到Linux后会出现 ^M 这样的字符。 如果是空格,则可能会出现 M-BM- 这样的字符。 识别方法有二: 1、vi -b 2、cat -A 修正方法有三: 1、vim 替换 ^M vim [文件] # 打开文件 :%s/^M//g # 替换为空字符 注意,^M 需要使用 ctrl + m打出 2、sed替换 M-BM- sed 's/\xc2\xa0/ /g' -i [文件] # 替换其十六进制编码 3、dos2unix转换 这个工具不是内置命令,需要额外安装 yum install -y dos2unix dos2unix [文件] # 转换windows文件为unix格式文件 其他特殊字符: ^H 是ascii中的'\b' :表示按 Backspace(退格)键。 @ 空字符,ascii码是0,在程序里一般写作”\0”,在 vim 里就显示成 @。