如何解决跨平台移至垃圾箱
是否存在一种将文件移至回收站的跨平台方法? file delete
会完全删除文件,并且在unixen上不可撤消。即使仅在Linux上,也不容易找出垃圾目录,因为它通常取决于文件管理器。
我采取了以下行动:
exec gio trash $file
问题在于这仅适用于Gnome,因此即使在Linux上也无法跨平台使用。
而且由于我没有Windows计算机,因此弄清楚Windows中的垃圾回收站的工作方式更加困难
解决方法
FreeDesktop.org Trash specification说:
对于每个用户,必须有一个“家庭垃圾”目录。它的名字 和位置为$ XDG_DATA_HOME /废纸;; $ XDG_DATA_HOME是基础 用户特定数据的目录,如Desktop Base中所定义 目录规范。
如果$ XDG_DATA_HOME未设置或为空,则默认为$ HOME / .local / share。
但是,您不能只将文件移入或移出〜/ .local / share / Trash。其中涉及一些元数据文件,这些文件存储了原始位置和时间戳。这些元数据文件是纯文本,因此可以在Tcl中轻松处理。
所以这听起来很容易在Tcl模块中实现。但是,如果这样的模块已经存在,我就不会意识到。对于学习Tcl的人来说,这可能是一个不错的项目。
添加的信息:
与往常一样,TWAPI用于Windows。 twapi_shell软件包有一个recycle_file
命令。
这是在macOS上执行操作的方法。这需要Tclapplescript扩展程序包:
package require Tclapplescript
proc trash args {
set TRASH_CMD {
tell application "Finder" to delete POSIX file "%s"
}
foreach file $args {
set fullFilename [file normalize $file]
set quoted [string map {\\ \\\\ \\" \\\\"} $fullFilename]
AppleScript execute [format $TRASH_CMD $quoted]
}
}
在最新版本的macOS上,您需要在运行时授予适当的权限才能使其正常运行(或者至少在测试时必须这样做)。
另请参阅:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。