如何通过 Nemo for Linux Mint 中的应用程序“打开方式”列表运行以空格命名的脚本?

如何通过 Nemo for Linux Mint 中的应用程序“打开方式”列表运行以空格命名的脚本?

长话短说

Exec=gnome-terminal -- bash -c 'script="%u";if [[ -e "$script" ]] ; then "$script" ; else exec bash ; fi'GNOME 桌面文件中的行运行脚本,但名称中仅不含空格。如何运行任意名称的脚本?

“我想要什么”和我尝试过的完整描述:

我想默认从 Nemo (基于 Nautilus 的文件管理器 AFAIK)在编辑器中打开脚本,但仍然能够在终端中打开,作为 Nemo 中打开这些文件的另一个选项。

网络搜索发现https://askubuntu.com/questions/286621/how-do-i-run-executable-scripts-in-nautilus。对我来说并不新鲜,但是当我将文件管理器中的选项设置为“查看”时,没有选项可以在“打开方式”中运行,我必须单独打开终端并输入脚本名称。

我打开了/usr/share/applications/org.gnome.Terminal.desktop,运行Exec=gnome-terminal --window了我发现了https://askubuntu.com/questions/974756/how-can-i-open-a-extra-console-and-run-a-program-in-it-with-one-commandExec=gnome-terminal --window使用示例行更改了行Exec=gnome-terminal -- bash -c 'script="%u";if [[ -e "$script" ]] ; then "$script" ; else exec bash ; fi',它适用于名称中没有空格的脚本,但对于包含空格的脚本,它不会产生预期的脚本输出。也许没什么大不了的,但我想要更好。

%u此处确认eg的含义:https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html

答案1

免费桌面页面你链接清楚地说

字段代码不得在带引号的参数内使用,带引号的参数内的字段代码扩展的结果是未定义的。

我会将 URL 作为参数传递给 bash:

gnome-terminal -- bash -c 'script="$1"; if [[ -e "$script" ]] ; then "$script" ; else exec bash ; fi' bash %u

相关内容