【问题标题】:Ubuntu 14.04 Cron outputs file names with ^M at the endUbuntu 14.04 Cron 以 ^M 结尾输出文件名
【发布时间】:2015-08-17 15:56:39
【问题描述】:

当我使用 > 操作符将输出通过管道传输到 cron 作业中的文件时,它总是将 ^M 附加到文件名的末尾。这显示为 ?当我在目录中运行 ls 但当我在 nano 中编辑文件并保存时显示为 ^M 时。

例如这个命令:

locale > locale.txt

输出一个名为“locale.txt?”的文件(即“locale.txt^M”)

我不知道它为什么会这样,但我猜它与环境变量有关。当我从终端使用 > 时,它的行为正常。我在谷歌上搜索过这个问题,但显然它不喜欢查询中的所有这些特殊字符,所以我什么也没找到。

我尝试使用 mv 将文件名改回正常,但它无法识别 ?或输入文件名时的 ^M 字符。

我已经看到这可能是回车“\r”字符,但我不知道为什么 cron 会在我的文件名末尾放置一个 Windows 换行符。感谢所有帮助。谢谢!

【问题讨论】:

    标签: cron ubuntu-14.04 carriage-return


    【解决方案1】:

    问题在于 cron 或脚本文件本身:它具有 DOS 行分隔符 (CRLF) 而不是 Unix(仅 LF)。您可以使用dos2unix 修复它。

    【讨论】:

    • 这修复了它! Cron 仍然不能直接使用以 ^M 结尾的文件名,所以我只是将文件输出操作的结果通过管道传输到 dos2unix,如下所示:locale > locale.txt | dos2unix
    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 2022-01-20
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多