Я создал простой скрипт и поместил его в ~/.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"