插入回车 return 个字符,从 dos 文件复制
Carriage return characters inserted, copying from dos file
我遇到了 ^M
个字符被插入脚本文件的问题。我有一个 Bash 脚本:
#!/bin/bash
# Do something
echo "hello world"
我使用 PowerCLI 将脚本文件从 Windows 复制到 Ubuntu 虚拟机:
Copy-VMGuestFile -Source "C:\test.sh" -Destination /tmp/test.sh -LocalToGuest -GuestUser root -GuestPassword p@ssword -VM VM001
复制后,用vi
打开文件时显示格式为:
#!/bin/bash^M
^M
# Do something^M
echo "hello world"^M
有没有办法在复制文件时停止添加^M
?我可以使用 sed
替换字符,但这不是一个干净的解决方案。
副本未添加控制字符,它们是 Windows 文件的一部分。
在 Windows 行以回车 return 和换行结束。在 Unix 上,它只是换行符,因此您会在文件中看到多余的回车 return 字符。
根据您在 Windows 上选择的编辑器,您可以更改行为以使其对 Unix 更友好。例如,对于 sublime,它是
查看->行尾->Unix
或者您可以 运行 通过翻译器 before/after 复制脚本。这与您使用 sed 所做的一样。
我遇到了 ^M
个字符被插入脚本文件的问题。我有一个 Bash 脚本:
#!/bin/bash
# Do something
echo "hello world"
我使用 PowerCLI 将脚本文件从 Windows 复制到 Ubuntu 虚拟机:
Copy-VMGuestFile -Source "C:\test.sh" -Destination /tmp/test.sh -LocalToGuest -GuestUser root -GuestPassword p@ssword -VM VM001
复制后,用vi
打开文件时显示格式为:
#!/bin/bash^M
^M
# Do something^M
echo "hello world"^M
有没有办法在复制文件时停止添加^M
?我可以使用 sed
替换字符,但这不是一个干净的解决方案。
副本未添加控制字符,它们是 Windows 文件的一部分。
在 Windows 行以回车 return 和换行结束。在 Unix 上,它只是换行符,因此您会在文件中看到多余的回车 return 字符。
根据您在 Windows 上选择的编辑器,您可以更改行为以使其对 Unix 更友好。例如,对于 sublime,它是
查看->行尾->Unix
或者您可以 运行 通过翻译器 before/after 复制脚本。这与您使用 sed 所做的一样。