~/.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"

相關內容