Nautilus-Skript in ~/.local/share/nautilus/scripts/ zeigt kein Terminalfenster oder keine Ausgabe

Nautilus-Skript in ~/.local/share/nautilus/scripts/ zeigt kein Terminalfenster oder keine Ausgabe

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 FunktionUndexportbearbeitet, 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 --waitOption erzwingt, dass der gnome-terminalBefehl erst zurückkehrt, wenn die nach der Option auszuführenden Befehle --abgeschlossen sind.

Bitte lesen Sie dieman gnome-terminalSeitefü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 diezenityBefehl 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"

verwandte Informationen