Linux 为什么在bash命令后附加控制字符?
我使用bash命令向多个配置文件追加了几行:Linux 为什么在bash命令后附加控制字符?,linux,file,bash,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出现在配置文件中每行的末尾: 我在vim中打开了这些文件,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出现在配置文件中每行的末尾:
我在vim中打开了这些文件,bash命令之前的文件如下所示:
我很好奇为什么^M出现在每行的末尾?谢谢。这是Windows,请使用dos2unix转换文件。Vim识别并正确显示。这是Windows,使用dos2unix转换文件。Vim可以识别并正确显示。如果dos2unix不可用,也可以通过Vim中的正则表达式删除^M
:%s/^M//g,可输入为:Esc:%s/ctrl+Vctrl+M//g
不知道为什么在linux系统上只使用一个简单的printf命令就会出现这种情况,也许可以看看您使用的是正确的printf版本。我已经在linux系统上对此进行了尝试,本地printf保留了正确的行尾,正如您所期望的那样。如果dos2unix不可用,也可以通过vim中的正则表达式删除^M
:%s/^M//g,可输入为:Esc:%s/ctrl+Vctrl+M//g
不知道为什么在linux系统上只使用一个简单的printf命令就会出现这种情况,也许可以看看您使用的是正确的printf版本。我已经在linux系统上尝试过了,本地printf保留了正确的行尾,正如您所期望的那样