我正在尝试制作emacs'delete-file
函数删除名称中带有惊叹号的文件。
具体的用例是我设置了emacs将所有备份文件保存在一个目录中并删除旧的备份文件。但是,当所有备份文件都放在一个目录中时,目录分隔符/
将替换为!
。
如果在名称中带有感叹号的文件上调用delete-file,则返回零并且不删除该文件。它没有发出任何错误信号。通常,delete-file返回nil。无论如何,emacs的备份系统使用delete-file进行删除,我宁愿不重新定义整个函数只是为了改变一行。
我试过反斜杠感叹号和shell引用文件名字符串,但两者都没有用。我发现我的配置中的某些内容导致了这一点,但我还没弄清楚到底是什么。我已经将问题的根源跟踪到我的自定义system-move-file-to-trash
函数,我现在必须调试它。
那么,我怎样才能做到这一点?
Emacs版本:
GNU Emacs 23.1.50.1
emacs的快照:
安装时间:1:20090730-1~jaunty1
答案 0 :(得分:3)
M-x delete-file
然后只需输入文件名,不要转义任何内容,只需输入名称
!home!blah!filename
它只是有效。对于lisp调用也是如此,
(delete-file "!home!blah!filename")
答案 1 :(得分:1)
我找到了答案。我的自定义system-move-file-to-trash
函数,删除文件将自动使用,在文件名上不恰当地称为shell-quote-argument
。显然,使用call-process
运行而不是的命令的参数需要被shell引用。