自动加密/解密:检测文件在Mate/Gnome应用程序中关闭



我正在编写一个bash脚本来自动解密文件进行编辑,并在文件关闭后将其加密回。文件类型可以是任何类型:纯文本、办公文档等。我使用的是Linux Mint和Mate。

我被卡住了:无法可靠地检测文件是否在应用程序中关闭,这样脚本就可以继续对其进行加密并删除解密的版本。

该脚本的第一个版本只是将vim与文本文件一起使用。脚本直接调用它,直到vim关闭后才继续执行。现在,由于我希望能够对其他文件进行处理,我尝试了以下操作:

xdg-open:在调用与文件类型关联的应用程序后立即退出。因此,脚本继续,并没有任何好处。

xdg-open用于调用关联应用程序的修改函数:在当前脚本中运行它,所以现在我看到程序退出。仅当应用程序尚未运行时才有效。若有,那个么新的进程就结束了,脚本继续。

所以我现在要做的是观察那个文件在已经运行的应用程序中以某种方式被关闭。目前正在试验pluma/gedit和inotifywait。它也不起作用——在文件打开后,它立即检测到CLOSE_NOWRITE,CLOSE事件。

在没有针对不同应用程序的特定挂钩的情况下,是否有可能检测到这种情况?可能是一些X钩?

谢谢。

您可以使用lsof来确定文件是否由进程打开:

myFile="/home/myUser/myFile"
/usr/sbin/lsof "$myFile" | grep "$myFile"    

您可以使用1秒的循环,等待lsof响应为空。我用它来帮助防止脚本打开一个新发现的仍在编写或下载中的文件。

并非所有进程在使用文件时都会打开文件。例如,vim会打开一个临时文件(/home/myUser/.myFile.swp),并且可能只在加载或保存时打开真实文件。

您可能会这样做。

decrypt "TheFile"&
pluma "TheFile"
encrypt "TheFile"

一行末尾的&将执行该行,然后下降到Pluma。脚本将暂停,直到pluma关闭。

如果你发布你的剧本,我可以提供更多帮助。

相关内容

  • 没有找到相关文章

最新更新