我刚刚从Linux Mint(17.3)切换到基本OS(0.3.2 Freya)。

在Mint上,当我双击外壳程序脚本时,被询问是否要“在终端中运行” ,“显示”,“取消”或“运行”脚本。


现在,我经常不小心执行脚本,因为我只是双击它们。 (至少我认为它们是在执行但没有终端。)

在从Pantheon Files运行shell脚本之前,是否可以通过某种方式得到类似的问题?

评论

bugs.launchpad.net/pantheon-files/+bug/1669996

#1 楼

据我所知,这种对话是内置在nemo和caja中的,所以不是,不是来自万神殿文件。您可以尝试使用另一个文件浏览器(有很多),或在bug跟踪器中提交错误(每天看到此对话都是我的个人地狱,尽管要求一个gsettings密钥)。

同时您可以使用以下脚本来解决它:

#!/bin/bash

zenity --question --text="Do you wish to run '', or display its contents?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)pantheon-terminal -e ""
    ;;
    1)scratch-text-editor 
    ;;
esac


,尽管我不确定它在终端之外是否可以正常工作,并且我不确定采用哪种最佳方法使其成为打开Shell脚本的默认方法。

评论


我刚刚意识到,您可以将我的脚本用作样本,以便将对话添加到自己的自定义脚本中,以防止意外执行。 zenity还可以做更多工作,请查看文档。它是大多数linux系统中存在的隐藏的宝石。

–九
16-2-5在15:22

我已经发布了有关如何使用您的脚本的答案

–user170
17年1月25日在13:48

可以修改脚本,以便用ESC或关闭按钮关闭禅宗窗口吗?因为它们都触发了在文本编辑器中打开选项

–user170
17 Mar 2 '17 at 14:40



现在按esc或关闭窗口有什么作用?如果不起作用,则switch语句有问题,请添加echo $?行。 zenity之后,运行脚本并按esc,然后为该返回值创建新的大小写。

–九
17 Mar 4 '17 at 22:19

好的,在这种情况下,zenity返回的值与关闭窗口和取消操作的值相同,并且如果不修补zenity或在文件中或作为单独的项目编写新对话框,则无法修复。将hacks集成到您的工作流程中就是一个问题:您实际上无法获得支持或错误修正。

–九
17 Mar 5 '17 at 23:02

#2 楼

当前,唯一的选择方法是右键单击脚本-上下文菜单将提供“运行”或“使用...打开”选项。后者应提供包括文本编辑器在内的应用程序列表。

我目前无法找到与此相关的错误,但这似乎是一个合理的要求,所以我建议您在https处引发一个错误: //bugs.launchpad.net/pantheon-files。

#3 楼

我不确定Pantheon文件是否可行,但是如果您愿意使用常规的Nautilus(实际上与Pantheon Files非常相似),则有一种简单的配置方法:


安装Nautilus
以使Nautilus在Slingshot中可见,请按照此处的说明进行操作:为什么某些GNOME应用程序不显示在Slingshot中? (不要混淆,Pantheon文件和Nautilus在Slingshot中都将被称为“文件”。在我的系统中,Nautilus将是两个图标中的第一个,我想是因为它是按字母顺序排序的)。
安装dconf-编辑器(例如,通过软件中心)

打开dconf,您将拥有许多通常隐藏在系统设置中的设置。路径是org> gnome> nautilus>首选项。在这里,您会找到一个名为“可执行文本激活”的选项。单击该值,您将获得三个选项:


“启动”将直接启动shell脚本。这将是您当前的设置
“显示”将始终在文本编辑器中显示脚本
“询问”将运行您从Mint熟悉的提示-这是您要寻找的选项


#4 楼

单击可执行文件将始终在Pantheon文件中执行,无论该类型文件的默认应用程序是什么。 (错误报告:https://bugs.launchpad.net/pantheon-files/+bug/1669996)。
答案的解决方案(在意外单击脚本时避免启动脚本)在Nautilus上,是要使用另一个在处理这些脚本时具有所需选项的文件管理器。
从Zenity的答案中使用脚本创建一个run_zenity.sh
#!/bin/bash

zenity --question --text="Do you wish to run '', or display its contents?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)pcmanfm ""
    ;;
    1)scratch-text-editor 
    ;;
esac

并为其创建合同文件
gedit ~/.local/share/contractor/runoredit-zenity.contract

,内容如
[Contractor Entry]
Name=RUN OR EDIT
Icon=terminal
MimeType=application/x-sh;application/x-executable;
Exec=bash -c '/path/to/the/script/run_zenity.sh %f' 

,您将在Pantheon Files中获得一个新的上下文菜单;但这不是很有用,因为它仅提供“运行并打开”条目已提供的选项。

无论如何,该条目将打开“ Zenity”对话框,该对话框将按预期工作:

可以将zenity对话框脚本添加到desktop文件(~/.local/share/applications中的启动器),并且可以将启动器设置为默认的“应用程序”,以用于Pantheon文件中的所有可执行脚本(以便显示该对话框,避免了意外执行脚本的风险),但是无论设置Pantheon File为可执行文件,都将始终执行该文件。另一方面,对于.desktop文件也可以。 (有关Thunar的更多信息,请参见此处。)因此,考虑其他文件管理器:
PCManFM
除了Nautilus之外,更轻巧的文件管理器PCManFM可以提供此功能默认情况下。

“打开”将使用默认应用程序。
可以在设置中更改

Thunar
与PCManFM,Thunar文件不同管理器似乎没有用于可执行文件的对话框,但是在Thunar中,可以将Zenity脚本设为所示脚本的默认应用程序,然后,在Thunar中单击脚本时,将显示Zenity对话框。为此,创建一个desktop文件:
然后,无论文件管理器是什么,都设置名为“运行”的新“应用程序”,或者在文件属性下编辑脚本文件的默认设置。
,在Pantheon文件中保持不变,但在Thunar中,单击以打开脚本时将打开Zenity对话框。
要确保在尝试设置为默认时,“运行或编辑”应用程序出现在列表中,您可以在~/.local/share/applications/mimeinfo.cache下的[MIME CACHE]
~/.local/share/applications/mimeapps.list下的[Default Applications]中添加以下行
gedit ~/.local/share/applications/run-or-edit.desktop



Zenity脚本存在一些故障:显示对话框之后,使用Esc或窗口关闭按钮(x)将其关闭,仍会在文本编辑器中打开文件。 (因为它是一个“是或否”对话框,所以“否”是文本编辑器。)要改善这种行为,请看这里。