我正在使用org-mode,并希望将我的日程表(日程表示例)导出到文本文件中,以便我可以在conky中显示它。 org-mode手册提供了以下命令行示例来实现此目的:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
我已经进行了如下修改:
我已经进行了如下修改:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "e")' \
> ~/org/aux/agenda-export.txt
我将此设置为cron作业,每5分钟运行一次。它很好用,除非我实际上打开了emacs。然后我注意到文件agenda-export.txt
是空的。在从命令行手动运行此操作与通过cron运行时,我会收到此错误(或类似错误,具体取决于我打开的文件):
...~/org/file.org locked by jwhendy (pid 10935): (s, q, p, ?)?
我打算编写一个脚本,可能导出到
agenda-export-test.txt
,然后检查空文件或没有行(wc -l == 0
可能?)。如果是真的,保留现有文件并删除agenda-export-test.txt
。如果不是,则将agenda-export-test.txt
移动到agenda-export.txt
。但是...当我尝试运行这样的脚本时,我遇到了同样的emacs询问是否窃取锁定、继续或退出。我可以继续,因为我认为org-agenda对文件没有任何影响,因此它不会损坏任何东西...但我不知道如何告诉emacs在遇到问题时“强制”或选择“继续”。我需要一些非交互式的东西。
因此,总结一下,我的想法是尝试:
- 传递一个--force选项或类似的选项给emacs,使其在暂停时继续
- 查看导出的tmp文件是否有任何行,并相应地处理它
- 告诉emacs以“只读模式”运行(但我不认为它存在)
我也尝试在邮件列表上询问,但没有得到有效的结果。[1]我想知道这里是否有人有想法。
[1]http://www.mail-archive.com/emacs-orgmode@gnu.org/msg45056.html
wc -l
来测试空文件的无用性的旁注。如果要查找非空行或其他内容,可以参考man test
(具体来说是test -s
)或者grep
。 - tripleee