如何删除带有感叹号的文件! 使用emacs的删除
我试图让emacs的delete-file
功能删除名称中带有感叹号的文件。
特殊的用例是我设置了emacs将所有备份文件保存在一个目录中,并删除旧的备份文件。 但是,当所有备份文件都放在一个目录中时,目录separator /
被替换为!
。
当名称中带有感叹号的文件调用delete-file时,它将返回零,并且文件不会被删除。 它不表示任何错误。 通常,删除文件返回nil。 无论如何,emacs的备份系统使用删除文件进行删除,我宁愿不重新定义整个功能只是为了更改一行。
我试着反斜杠感叹号和shell引用文件名字符串,都没有工作。 我发现在我的配置中有一些东西导致了这一点,但我还没有弄清楚什么。 我已经将问题的来源追踪到我的自定义system-move-file-to-trash
功能,我现在必须进行调试。
那么,我该如何做这项工作?
Emacs版本:GNU Emacs 23.1.50.1
emacs-snapshot:已安装:1:20090730-1〜jaunty1
M-x delete-file
然后只需输入文件的名称,不要转义任何东西,只是名称,
!home!blah!filename
它只是工作。 对于lisp调用也是如此,
(delete-file "!home!blah!filename")
我找到了答案。 我的自定义system-move-file-to-trash
功能将删除文件自动使用,对文件名称不恰当地称为shell-quote-argument
。 显然,使用call-process
运行命令的参数不需要用shell引用。
上一篇: How to delete files with exclamation marks! using emacs' delete