控制 cron/mailx 中的字符处理

控制 cron/mailx 中的字符处理

我有一个 cron 作业,它运行一个长脚本,产生大量输出。一些输出是由单个回车符分隔的行;当从命令行运行时,这些会使连续的行相互覆盖,提供进度输出,而不会过度污染反向滚动。但是,当查看 cron 作业的输出时,我希望看到所有这些行而不遗漏任何行。

直到最近,当我mailx从 cronjob 打印输出报告时,它会用反相视频替换控制字符以^M突出显示它们。这是我想要的行为,因为它使所有线条都可见。然而现在,一些未知的事情发生了变化(版本升级?),并按mailx原样打印控制字符,导致它们在打印邮件时相互覆盖。我怎样才能逆转这种行为并mailx再次替换控制字符?

答案1

tr您可以在进一步处理或发送输出之前通过管道传输输出。

./your-script | tr "\r" "\n" | mail

这应该用换行符替换所有回车符。

在 crontab 中也可以实现同样的效果:

* * * * 2 /path/to/your-script --args | tr "\r" "\n"

答案2

原来问题出在mailx寻呼机设置上。它more由于某种原因开始使用,而之前它已经使用过less(这会进行转义)。more再次链接less恢复了旧的行为。

相关内容