Supposons que j'ai un script comme celui-ci:
(L'exemple illustre un cas d'utilisation rysnc)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
L'idée ici est d'inviter l'utilisateur à entrer dans les répertoires "Source" et "Destination" pour que rsync puisse travailler. En l'état, l'utilisateur devra entrer manuellement /path/to/directory/
via la ligne de commande.
Au lieu de cela , je veux inviter l'utilisateur à entrer les chemins via une interface graphique .
Quelque chose comme ça:
Quelles commandes puis-je utiliser pour inviter l'utilisateur avec une fenêtre de sélection d'interface graphique qui renvoie le chemin du fichier à la ligne de commande?
command-line
gui
prompt
Pandya
la source
la source
Réponses:
Vous pouvez l'utiliser pour les fichiers:
et cela pour les dossiers:
pour l'utilisation, exécutez:
En général, il correspond au thème actuel (pour les gestionnaires de fenêtres GTK de toute façon), sur ma machine avec une version modifiée de Zukitwo 3.8, il ressemble à ceci:
Une façon de l'utiliser est la suivante:
Ce qui entraînerait
you selected /path/to/file
.Vous pouvez également utiliser des options pour définir un titre approprié et le répertoire dans lequel il démarre - Avec votre cas d'utilisation rsync, par exemple:
Pour les fichiers, vous pouvez également spécifier un type de fichier à sélectionner - par exemple:
REMARQUE: vous pouvez également utiliser YAD , un fork de Zenity qui a beaucoup plus de fonctionnalités.
La source
Pour la plupart, vous pouvez l'utiliser de la même manière - pour le navigateur de fichiers:
et pour la page d'aide:
Bien qu'à l'époque (autour de la version 26?), Il n'avait pas été mis à jour pour correspondre à la nouvelle interface GTK 3.14+ (zenity avait) - il a plus de fonctionnalités, mais vérifiez la compatibilité (sur la base de la documentation, il devrait fonctionner sur GTK +> = 2.16. 0
la source
Juste pour mémoire, vous pouvez utiliser
dialog
pour une solution d'interface utilisateur basée sur du texte (TUI).Syntaxe:
Exemple:
La sortie sera quelque chose comme ceci:
Comme l'a souligné @Wilf, vous pouvez utiliser les variables
$LINES
et$COLUMNS
pour le faire remplir le terminal:la source
$LINES
et$COLUMNS
- alors vous exécutez$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
pour le faire remplir la fenêtre terminal / écran.Je sais que cela a 8 mois et aussi que la question du PO a été répondue. Cependant, yad a été mentionné mais aucun exemple n'a été proposé. Voici ma solution en utilisant yad.
La façon dont cela fonctionne est comme ça. Nous avons mis yad dans une boucle for, en définissant la variable
$location
sursource
pour la première passe etdestination
pour la seconde. La sortie est placée dans le tableauselection[]
pour lequel la variablei
est utilisée comme index. Il est défini sur 0 au début et incrémenté à chaque passage. Par conséquent, la source est enregistrée en tant${selection[1]}
que destination${selection[2]}
.Le DIR = "/ home" sur la première ligne définit la boîte de dialogue par défaut. Les options de la commande yad peuvent être trouvées à partir du terminal en tapant
yad --help
.la source
Voici la solution la plus courte (et la meilleure) à la réponse:
Yad
fournit l'option exacte tout commezenity
:Cela ouvre une boîte de dialogue de sélection de répertoire. Sans l'argument supplémentaire,
--directory
ce sera plutôt une boîte de dialogue de sélection de fichier.la source