我正在尝试打印当前在或djvu
上运行的文件名,但是当我这样做时,我在终端中没有得到任何输出,其中相同的命令适用于文件。okular
atril
lsof | grep ".djvu$"
pdf
答案1
如果应用程序以不同用户身份运行,您将需要
sudo
:sudo lsof | grep ".djvu$"
如果某些文件扩展名是大写,则需要
-i
忽略grep
大小写:sudo lsof | grep -i ".djvu$"
开头的点将
.djvu$
匹配任何字符(尽管这可能不会在您的情况下导致误报);你的意思可能是\.djvu$
我建议将正则表达式放在单引号而不是双引号中,因为美元符号对于 Linux shell 有特殊含义:
sudo lsof | grep -i '\.djvu$'
(更新自
ps
至pgrep
感谢 qubert 的评论)如果应用程序将文件读入内存然后关闭它,则lsof
不会看到它,但ps
(进程列表)会;pgrep
是搜索正在运行的进程的正确工具;尝试:pgrep --list-full --full --ignore-case '\.djvu'