Angenommen, ich habe ein Skript wie das folgende:
(Das Beispiel zeigt einen rysnc-Anwendungsfall.)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
Die Idee hier ist, den Benutzer aufzufordern, die "Quell" - und "Ziel" -Verzeichnisse einzugeben, damit rsync damit arbeiten kann. Wie es ist, muss der Benutzer manuell /path/to/directory/
über die Befehlszeile eingeben .
Stattdessen möchte ich den Benutzer auffordern, die Pfade über eine GUI-Schnittstelle einzugeben .
Etwas wie das:
Welche Befehle kann ich verwenden, um den Benutzer mit einem GUI-Auswahlfenster aufzufordern , das den Dateipfad zur Befehlszeile zurückgibt?
command-line
gui
prompt
Pandya
quelle
quelle
Antworten:
Sie können dies für Dateien verwenden:
und das für ordner:
Führen Sie zur Verwendung Folgendes aus:
Im Allgemeinen entspricht es dem aktuellen Thema (für GTK-Fenstermanager sowieso), auf meinem Computer mit einer modifizierten Version von Zukitwo 3.8 sieht es so aus:
Eine Möglichkeit, es zu benutzen, ist wie folgt:
Was dazu führen würde
you selected /path/to/file
.Sie können auch Optionen verwenden, um einen geeigneten Titel und das Verzeichnis festzulegen, in dem er beginnt. Beispiel für Ihren rsync-Anwendungsfall:
Für Dateien können Sie auch einen Dateityp angeben, der ausgewählt werden soll, z. B .:
HINWEIS: Sie können auch YAD verwenden , einen Zweig von Zenity, der mehr Funktionen bietet.
Quelle
Zum größten Teil können Sie es auf die gleiche Weise verwenden - für den Dateibrowser:
und für die Hilfeseite:
Obwohl es zu der Zeit (um die Version 26?) Nicht aktualisiert wurde, um mit der neuen GTK 3.14+ -Oberfläche übereinzustimmen (zenity hatte) - es hat mehr Funktionen, aber prüfe die Kompatibilität (basierend auf der Dokumentation sollte es mit GTK +> = 2.16 funktionieren). 0
quelle
Nur für den Datensatz können Sie
dialog
für eine textbasierte Benutzeroberflächenlösung (TUI) verwenden.Syntax:
Beispiel:
Die Ausgabe wird ungefähr so aussehen:
Wie durch @Wilf wies darauf hin, können Sie die Verwendung
$LINES
und$COLUMNS
Variablen zu dem Terminal machen füllen:quelle
$LINES
und definiert.$COLUMNS
Sie müssen also ausführen$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
, um das Terminal- / Bildschirmfenster auszufüllen.Ich weiß, dass dies 8 Monate alt ist und dass die Frage des OP beantwortet wurde. Es wurde jedoch darauf hingewiesen, aber es wurde kein Beispiel angeführt. Hier ist meine Lösung mit yad.
So funktioniert es. Wir setzen yad in einer for - Schleife, Setzen der Variable
$location
aufsource
für den ersten Durchlauf unddestination
für den zweiten. Die Ausgabe wird in das Array gestellt,selection[]
für das die Variablei
als Index verwendet wird. Diese wird zu Beginn auf 0 gesetzt und mit jedem Durchgang erhöht. Daher wird die Quelle als${selection[1]}
und das Ziel gespeichert${selection[2]}
.Das DIR = "/ home" in der ersten Zeile legt die Standardeinstellung für den Dialog fest. Die yad-Befehlsoptionen finden Sie im Terminal, indem Sie Folgendes eingeben
yad --help
.quelle
Hier ist die kürzeste (und beste) Lösung für die Antwort:
Yad
genau die Option wiezenity
folgt:Dies öffnet einen Verzeichnisauswahldialog. Ohne das zusätzliche Argument
--directory
wird stattdessen ein Dateiauswahldialog angezeigt.quelle