为什么控制bash命令后附加的字符?

时间:2012-11-15 13:17:44

标签: linux file bash

我使用bash命令将多行添加到多个配置文件中:

> for filename in *.ovpn; do
> printf 'configurationscript-security 2\nup /etc/openvpn/update-resolv-conf\ndown /etc/openvpn/update-resolv-conf' >> $filename; 
> done

但是控制字符“^ M”出现在配置文件中每行的末尾: enter image description here

我在vim中打开文件,bash命令之前的文件如下所示: enter image description here

我很好奇为什么“^ M”出现在每一行的末尾?感谢。

2 个答案:

答案 0 :(得分:3)

是Windows“carriage return,使用dos2unix转换文件。 Vim识别file format并正确显示。

答案 1 :(得分:3)

^M如果vim不可用,也可以通过dos2unix中的正则表达式删除。

:%s/^M//g,输入为: Esc :%s/ ctrl + V ctrl + M < / KBD> //g

不知道为什么在Linux系统上只使用简单的printf命令就可以实现这一点,也许看看你是否正在使用正确版本的printf。我已经在Linux系统上使用了这个,并且本地printf保持正确的行结尾,正如您所期望的那样。