长话短说
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-command并Exec=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