Ubuntu 14.04 Cron输出文件名以^M结尾
Ubuntu 14.04 Cron outputs file names with ^M at the end
当我使用 > 运算符将输出通过管道传输到 cron 作业中的文件时,它始终会在文件名末尾附加一个 ^M。这显示为一个?当我在目录中 运行 ls 但在 nano 中编辑文件并保存时显示为 ^M。
例如这个命令:
locale > locale.txt
输出名为 "locale.txt?" 的文件(即 "locale.txt^M")
我不知道为什么会这样,但我猜它与环境变量有关。当我从终端使用 > 时,它的行为正常。我已经搜索了 Google 这个问题,但显然它不喜欢查询中的所有这些特殊字符,所以我没有找到任何东西。
我试过使用 mv 将文件名改回正常但它无法识别 ?或输入文件名时的 ^M 字符。
我看到这可能是回车 return "\r" 字符,但我不知道为什么 cron 会在我的文件名末尾放置一个 Windows 换行符。感谢所有帮助。谢谢!
问题出在 cron 或脚本文件本身:它有 DOS 行分隔符 (CRLF) 而不是 Unix(仅 LF)。您可以使用 dos2unix
.
修复它
当我使用 > 运算符将输出通过管道传输到 cron 作业中的文件时,它始终会在文件名末尾附加一个 ^M。这显示为一个?当我在目录中 运行 ls 但在 nano 中编辑文件并保存时显示为 ^M。
例如这个命令:
locale > locale.txt
输出名为 "locale.txt?" 的文件(即 "locale.txt^M")
我不知道为什么会这样,但我猜它与环境变量有关。当我从终端使用 > 时,它的行为正常。我已经搜索了 Google 这个问题,但显然它不喜欢查询中的所有这些特殊字符,所以我没有找到任何东西。
我试过使用 mv 将文件名改回正常但它无法识别 ?或输入文件名时的 ^M 字符。
我看到这可能是回车 return "\r" 字符,但我不知道为什么 cron 会在我的文件名末尾放置一个 Windows 换行符。感谢所有帮助。谢谢!
问题出在 cron 或脚本文件本身:它有 DOS 行分隔符 (CRLF) 而不是 Unix(仅 LF)。您可以使用 dos2unix
.