Ubuntu 14.04 Cron 以 ^M 结尾输出文件名
Posted
技术标签:
【中文标题】Ubuntu 14.04 Cron 以 ^M 结尾输出文件名【英文标题】:Ubuntu 14.04 Cron outputs file names with ^M at the end 【发布时间】:2015-08-17 15:56:39 【问题描述】:当我使用 > 操作符将输出通过管道传输到 cron 作业中的文件时,它总是将 ^M 附加到文件名的末尾。这显示为 ?当我在目录中运行 ls 但当我在 nano 中编辑文件并保存时显示为 ^M 时。
例如这个命令:
locale > locale.txt
输出一个名为“locale.txt?”的文件(即“locale.txt^M”)
我不知道它为什么会这样,但我猜它与环境变量有关。当我从终端使用 > 时,它的行为正常。我在谷歌上搜索过这个问题,但显然它不喜欢查询中的所有这些特殊字符,所以我什么也没找到。
我尝试使用 mv 将文件名改回正常,但它无法识别 ?或输入文件名时的 ^M 字符。
我已经看到这可能是回车“\r”字符,但我不知道为什么 cron 会在我的文件名末尾放置一个 Windows 换行符。感谢所有帮助。谢谢!
【问题讨论】:
【参考方案1】:问题在于 cron 或脚本文件本身:它具有 DOS 行分隔符 (CRLF) 而不是 Unix(仅 LF)。您可以使用dos2unix
修复它。
【讨论】:
这修复了它! Cron 仍然不能直接使用以 ^M 结尾的文件名,所以我只是将文件输出操作的结果通过管道传输到 dos2unix,如下所示:locale > locale.txt | dos2unix
以上是关于Ubuntu 14.04 Cron 以 ^M 结尾输出文件名的主要内容,如果未能解决你的问题,请参考以下文章