Ich habe ein einfaches Skript erstellt und es in ~/.local/share/nautilus/scripts/ abgelegt (Skript am Ende des Beitrags).
Ich kann es mit einem Rechtsklick in Nautilus->Scripts->myScript.sh ausführen, soweit alles gut.
Das Problem besteht darin, dass kein Terminalfenster angezeigt wird und auch keine Ausgabe erfolgt. Ich erhalte nur die ordnungsgemäß ausgefüllte Benachrichtigungsnachricht mit dem Pfad zur ausgewählten Datei, ohne dass ich warten muss.
Ich würde erwarten, dass es ein Terminalfenster gibt, das „DIES IST EIN TEST!“ ausgibt, dann „BITTE EINGEBEN...“ und auf das Drücken der Eingabetaste wartet. Danach sollte schließlich die Benachrichtigung empfangen werden.
Was übersehe ich hier?
#!/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}"
Antwort1
Das Terminalfenster wird nicht automatisch erstellt. Sie müssen es selbst erstellen. Ich habe Ihr Skript wie folgt geändert:
#!/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}"
Ich habe alle Ihre Anweisungen (Befehle, die im Terminal ausgeführt werden sollen) in einbash
FunktionUndexport
bearbeitet, sodass es von untergeordneten Prozessen verwendet werden kann.
Anschließend habe ich den gnome-terminal --title="Testing..."
Befehl verwendet, um ein Terminalfenster mit einem entsprechenden Titel zu erstellen. Die --wait
Option erzwingt, dass der gnome-terminal
Befehl erst zurückkehrt, wenn die nach der Option auszuführenden Befehle --
abgeschlossen sind.
Bitte lesen Sie dieman gnome-terminal
Seitefür weitere Optionen.
Je nach Bedarf könnte eine kürzere Version wie folgt aussehen:
#!/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}"
Schauen Sie sich auch diezenity
Befehl für weitere Optionen zur Eingabe/Ausgabe aus Ihren Nautilus-Skripten. Hier ist ein sehr einfaches Beispiel:
#!/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"