3 我需要定期清空文本文件而不删除它(我知道它有多少行)。 我尝试了这个: 创建一个执行以下脚本的cron other lines from the script here sed '1,14d' file.txt>file.txt 如果我从终端运行它,则可以正常工作,但是当我运行cron时,它将执行第一部分(“脚本的其他行”部分),但不会清空文件。 注意:该文件具有777权限,因此我认为它与权限无关。 bash cron scripting — 佐佐 source 1 我很惊讶您这么说sed 1,14d file > file:在执行sed命令之前,shell将看到重定向并截断文件。 — 格伦·杰克曼
4 也许当前工作目录不是cron执行脚本时所期望的目录。尝试指定file.txt的完整路径。同样,这也应该清空文件,以防sed命令出现问题: echo > file.txt — db2 source 指定完整路径,并用echo替换sed,现在工作正常。谢谢 — zozo 2011年 很酷,很高兴这是一个简单的修复。 — db2 5 只是以为我要提到的是,即使这可以解决您的问题,它也不会清空文件,而是在文件中保留换行符。 — 豆子
10 您可以尝试一个简单的> file.txt $ cat file.txt this is a test $ >file.txt $cat file.txt $ — 用户名 source 2 这是最相关的,因为它清空了文件。 — Fish Monitor
2 传统的un * x方法“清空”文件: $ cat /dev/null > myfile 移动文件并触摸新文件(因此,更改文件描述符)可能会阻止现有应用继续写入文件,因此通常不希望这样做。如果需要现有文件,则可以执行类似的操作(尽管请注意,它不是原子的,所以两个文件中的某些日期可能会重复): $ cp myfile myfile-$(date '+%F') && cat /dev/null > myfile 而且,如上所述,“ cron”作业通常不在您期望的目录中运行;但是您可以在脚本中“ cd”到所需的目录来完成工作,并且仍然使用相对路径。 — 迈克尔 source
sed 1,14d file > file
:在执行sed命令之前,shell将看到重定向并截断文件。