有时我xdg-open somefile.ext
来自终端会话,但随后我希望能够关闭稍后打开的应用程序或查看器。我希望可能有类似的东西xdg-close
,它检查现有的窗口以查看其中哪些报告已somefile.ext
打开,然后关闭/终止该应用程序。
类似的东西是否以不同的名称存在?
答案1
假设您打开的文件未被删除,以下命令将强制关闭所有打开该文件的应用程序:
fuser -k -TERM FILE
替换FILE
为相关文件的名称。
请注意,这可能是非常如果你不小心,就会很危险。例如,如果您不小心传递了主目录,它将终止您在系统上的所有当前登录会话(图形和文本),并终止大多数后台进程。
假设您知道哪个应用程序打开了该文件,还有其他一些更安全的桌面环境特定方法可以执行此操作,但我对它们的了解不够,无法在这里为您提供好的建议。
现在,至于为什么没有xdg-close
命令:
xdg-open
存在,以便文件管理器或网络浏览器等工具可以确保用户尝试打开给定文件时调用其首选应用程序。换句话说,它的出现是为了当您想要更改用于打开文件的内容时,您不必遍历系统上的每个应用程序,而是可以在一个位置设置默认值,并且应用程序没有当他们想要在另一个应用程序中打开某些内容时,关心您正在使用的桌面环境。可以从命令行手动调用它,但这并不是它的设计目的。
自动化关闭打开特定文件的应用程序并不完全是用户友好的。您的网络浏览器无权关闭您打开的 PDF 查看器来查看您下载的 PDF,那么为什么它需要一个工具来执行此操作呢?此外,您的桌面环境不会跟踪哪些应用程序打开了哪些文件(操作系统会跟踪哪些进程(不与应用程序 1:1 映射)打开了哪些文件),因此实际上没有任何简单的方法可以实现这个也可以。
就其价值而言,xdg-open
作为命令存在的唯一原因是它起源于 DBus 成为 FreeDesktop.org 规范的一部分之前,否则它几乎肯定是另一个不必要的后台进程提供的 DBus API 调用。