Supongamos que tengo un script como este:
(El ejemplo muestra un caso de uso de rysnc)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
La idea aquí es pedirle al usuario que ingrese los directorios "Origen" y "Destino" para que rsync trabaje. Tal como está, el usuario tendrá que ingresar manualmente a /path/to/directory/
través de la línea de comandos.
En cambio , quiero pedirle al usuario que ingrese las rutas a través de una interfaz GUI .
Algo como esto:
¿Qué comandos puedo usar para solicitar al usuario una ventana de selección de GUI que devuelva la ruta del archivo a la línea de comandos?
command-line
gui
prompt
Pandya
fuente
fuente
Respuestas:
Puede usar esto para archivos:
y esto para carpetas:
para uso, ejecute:
Generalmente coincide con el tema actual (para los gestores de ventanas GTK de todos modos), en mi máquina con una versión modificada de Zukitwo 3.8 se ve así:
Una forma de usarlo es así:
Lo que resultaría en
you selected /path/to/file
.También puede usar las opciones para establecer un título apropiado y el directorio en el que comienza: con su caso de uso de rsync, por ejemplo:
Para los archivos, también puede especificar un tipo de archivo para seleccionar, por ejemplo:
NOTA: También puede usar YAD , una bifurcación de Zenity que tiene muchas más funciones.
Fuente
En su mayor parte, puede usarlo de la misma manera: para el explorador de archivos:
y para la página de ayuda:
Aunque en ese momento (¿alrededor de la versión 26?), No se había actualizado para que coincida con la nueva interfaz GTK 3.14+ (zenity tenía): tiene más funciones, pero verifica la compatibilidad (según la documentación, debería funcionar en GTK +> = 2.16. 0 0
fuente
Solo para el registro, puede usarlo
dialog
para una solución de interfaz de usuario basada en texto (TUI).Sintaxis:
Ejemplo:
La salida será algo como esto:
Como señaló @Wilf, puede usar las variables
$LINES
y$COLUMNS
para que llene el terminal:fuente
$LINES
y$COLUMNS
, por lo que debe ejecutar$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
para llenar la ventana de terminal / pantalla.Sé que esto tiene 8 meses y también que la pregunta del OP ha sido respondida. Sin embargo, se ha mencionado yad pero no se ha ofrecido ningún ejemplo. Aquí está mi solución usando yad.
La forma en que funciona es así. Ponemos yad en un bucle for, configurando la variable
$location
ensource
para el primer pase ydestination
para el segundo. La salida se coloca en la matrizselection[]
para la quei
se utiliza la variable como índice. Esto se establece en 0 al comienzo y se incrementa con cada pase. Por lo tanto, la fuente se guarda como${selection[1]}
y el destino${selection[2]}
.DIR = "/ home" en la primera línea establece el diálogo predeterminado. Las opciones de comando yad se pueden encontrar desde la terminal escribiendo
yad --help
.fuente
Aquí está la solución más corta (y mejor) para la respuesta:
Yad
proporciona la opción exacta al igual que lozenity
hace:Esto abre un diálogo de selección de directorio. Sin el argumento adicional
--directory
, será un cuadro de diálogo de selección de archivos.fuente