![Nautilus 操作仅显示文件夹中的文件](https://linux22.com/image/859450/Nautilus%20%E6%93%8D%E4%BD%9C%E4%BB%85%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
我想创建几个 nautilus 操作,只有当文件夹中有某个文件时才会显示。这些是位置操作,我想要的一个简单示例是“Make”选项,它make
在文件夹中运行,但只有当该文件夹包含 makefile 时才会显示。这样的事情可能吗?
我尝试过使用基本名称,但它们似乎只适用于选定的项目。我还研究了“环境”面板上的“执行环境”选项。我可能可以使用“如果命令输出‘true’则显示”选项来执行此操作,但我不知道如何将文件夹路径传递给该命令。
答案1
经过多次尝试我终于解决了这个问题。
首先,我发现,通过使用 zenity 查看其执行的操作,标准变量实际上可以传递到“环境”选项卡上的“如果命令输出“true”则显示”设置。我们在这里感兴趣的是%f
。还值得注意的是,命令必须向其标准输出输出“true”且不带换行符,而不是简单地使用零返回代码来表示 true。
然后我尝试输入以下命令:
ls '%f' | grep -q 'Makefile' && echo -n 'true'
它应该可以正常工作,但似乎该字段中必须有一个单一命令,管道和 && 将不起作用。
我最终创建了以下脚本,并将其标记为可执行文件并放在我的 bin 目录中
#!/bin/bash
# testexists
ls $1 | grep -q $2 && echo -n 'true'
然后我将以下内容放入“如果命令输出“true”则显示”字段
testexists '%f' 'Makefile'
并且一切都开始正常工作(例如,只有当文件夹包含 Makefile 时,我的 make 命令才会显示)。