我已经创建了简单的脚本并将其放入~/.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"