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 结尾输出文件名的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 未在 Ubuntu 14.04 上运行

Ubuntu14.04终端主机名+用户名修改配色方案

在 Ubuntu 14.04 上配置 apache 2.4 以启用 CORS

Ubuntu14.04切换内核以安装锐速

ubuntu14.04 忘记root密码

ubuntu 14.04 以root权限启动chrome