~/.local/share/nautilus/scripts/ 中的 Nautilus 脚本不显示任何终端窗口或输出

~/.local/share/nautilus/scripts/ 中的 Nautilus 脚本不显示任何终端窗口或输出

我已经创建了简单的脚本并将其放入~/.local/share/nautilus/scripts/(脚本位于帖子末尾)。

我可以通过右键单击 Nautilus->Scripts->myScript.sh 来运行,到目前为止一切顺利。

问题是没有显示终端窗口或任何输出。我只收到了正确填充了所选文件路径的通知发送消息,无需等待。

我希望会有一些终端窗口打印“这是测试!”,然后打印“请输入...”并等待按下 Enter 键。最后,应该会收到通知发送。

我在这里遗漏了什么?

#!/usr/bin/bash

echo "THIS IS TEST!"
read -r -p "PLEASE ENTER TO EXIT! Waiting..."

notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

答案1

终端窗口不会自动创建。您必须自己创建。我修改了您的脚本,如下所示:

#!/usr/bin/bash

function commands-to-be-run {
  echo "THIS IS TEST!"
  read -r -p "PLEASE ENTER TO EXIT! Waiting..."
}

export -f commands-to-be-run

gnome-terminal --title="Testing..." --wait -- bash -c commands-to-be-run

notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

我已将所有语句(要在终端内运行的命令)放入bash 功能export编辑它,以便子进程可以使用它。

然后,我使用该gnome-terminal --title="Testing..."命令创建一个具有适当标题的终端窗口。该--wait选项将强制gnome-terminal命令在选项之后要运行的命令--完成之前不返回。

请阅读man gnome-terminal以获得更多选项。


根据您的需要,较短的版本可能是这样的:

#!/usr/bin/bash
gnome-terminal --title="Testing..." --wait -- bash -c '
  echo "THIS IS TEST!" ;
  read -r -p "PLEASE ENTER TO EXIT! Waiting..."
'
notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

另请参阅zenity命令以获取更多选项来从 nautilus 脚本进行输入/输出。这是一个非常基本的示例:

#!/bin/bash
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sed -z 's/.$//' | xsel -b -i
zenity --info --no-wrap --no-markup --title="File name(s) copied to Clipboard:" --text="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"

相关内容