Скрипт Nautilus в ~/.local/share/nautilus/scripts/ не отображает окно терминала или вывод

Скрипт Nautilus в ~/.local/share/nautilus/scripts/ не отображает окно терминала или вывод

Я создал простой скрипт и поместил его в ~/.local/share/nautilus/scripts/ (скрипт в конце поста).

Я могу запустить его, щелкнув правой кнопкой мыши в Nautilus->Scripts->myScript.sh, пока все хорошо.

Проблема в том, что нет окна терминала или какого-либо вывода. Я получаю только сообщение notify-send, правильно заполненное путем к выбранному файлу, без какого-либо ожидания.

Я бы ожидал, что будет какое-то окно терминала, которое напечатает "THIS IS TEST!", затем "PLEASE ENTER..." и будет ждать нажатия клавиши 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"

Связанный контент