smenu es un filtro de selección al igual que sed
es un filtro de edición.
Esta herramienta lee palabras de una entrada estándar o de un archivo y las presenta en la pantalla del terminal en diferentes diseños en una ventana de desplazamiento. Un cursor, fácil de mover con el teclado y/o el ratón , permite seleccionar una o más palabras.
Tenga en cuenta que la pantalla no se borra al inicio y al final de la ejecución del menú . La ventana de selección se muestra en la posición del cursor y el contenido anterior del terminal no se modifica ni se pierde.
He intentado que su uso sea lo más fácil posible. Debería funcionar en todos los terminales administrados en la base de datos terminfo
.
Se admite la codificación UTF-8
. Este soporte incluye caracteres de doble ancho y grupos de grafemas extendidos. Sin embargo, este último aún es experimental y funciona mucho mejor si se utilizan terminales adecuados como WezTerm o iTerm.
La codificación de los glifos UTF-8
también debe estar en forma canónica, ya que no se hará ningún esfuerzo por ponerlos en esta forma.
Consulte la página de manual incluida para obtener más información sobre este pequeño programa.
La wiki contiene capturas de pantalla y animaciones que detallan algunos conceptos y características de smenu .
Algunas distribuciones de Linux ya proporcionan smenu como paquete; de lo contrario, smenu se puede crear en cualquier sistema en el que esté disponible una plataforma de desarrollo terminfo
funcional. Esto incluye todos los sistemas Unix y similares que conozco.
Utilice el script build.sh
proporcionado para crear el ejecutable. Este script usa y acepta los mismos argumentos que el script configure
de GNU, escriba build.sh --help
para verlos.
Una vez que se completa el proceso de compilación, bastará con una simple make install
con los privilegios adecuados.
He habilitado las discusiones en este repositorio.
Soy consciente de que puede haber cierta confusión al decidir dónde debe comunicarse al informar problemas, hacer preguntas o solicitar funciones, por lo que esta sección tiene como objetivo ayudarnos a alinearnos con eso.
Plantee un problema si:
Por favor abra una discusión si:
Este programa debería funcionar en la mayoría de Unix, pero si estás usando Linux, intenta escribir la siguiente línea en el símbolo del shell (aquí: "$ "
):
$ R=$(grep Vm /proc/$$/estado | menú -n20 -W $':tn' -q -c -b -g -s /VmH) $ eco $R
Ahora debería mostrarse algo como esto con el programa esperando comandos: (los números son míos, los tuyos serán diferentes)
VmPico¦ 23840 kB TamañoVM¦ 23836 kB VmLck ¦ 0 kB VmHWM ¦ 2936kB VmRSS ¦ 2936kB VmDatos¦ 1316 kB VmStk ¦ 136kB VmExe ¦ 28kB VmLib ¦ 3956kB VmPTE ¦ 64kB VmSwap¦ 0kB
Un cursor debe estar debajo de "VmHWM "
.
Después de haber movido el cursor a " 136 kB"
y finalizado el programa con
, la variable de shell R debería contener: " 136 kB"
.
El siguiente comando, que es independiente de la marca Unix, debería mostrarle una ventana de desplazamiento si tiene más de 10 cuentas en su Unix con un UID inferior a 100:
$ R=$(awk -F: '$3 < 100 {imprimir $1,$3,$4,$NF}' /etc/passwd | menú -n10 -c) $ eco $R
En el mío ( LANG
y LC_ALL
configurados en POSIX
) se muestra:
en 25 25 /bin/bash sistema 0 3 /usr/bin/ksh + contenedor 1 1 /bin/bash | demonio 2 2 /bin/bash | ftp 40 49 /bin/bash | juegos 12 100 /bin/bash | lp 4 7 /bin/bash | correo 8 12 /bin/false | llamado 44 44 /bin/false | ntp 74 108 /bin/falso v
Tenga en cuenta la presencia de una barra de desplazamiento.
Simplemente agregue lo siguiente en su .bashrc
EOL=$'n' enlazar -x '"Cr": READLINE_LINE=$(fc -lr 1 | sed "s/[1-9][0-9]*..//" | menú -Q -l -ac:7/4,b -W"$EOL") READLINE_POINT=${#READLINE_LINE}'
Inicie o reinicie bash y presione CTRL-R
( CTRL-C
o q
para salir), ¡disfrútelo!
También puede agregar el parámetro -d para indicarle al menú que limpie la ventana de selección después de seleccionar una entrada.
Estas versiones utilizan un nuevo sistema de opciones llamado ctxopt que puede contener errores. Infórmalos para que puedan solucionarse en la próxima versión de smenu o ctxopt (https://github.com/p-gen/ctxopt).
Es posible que en algunos casos también sea necesario reorganizar los argumentos de la línea de comandos debido a este nuevo sistema de gestión de opciones. Perdón por el trabajo extra que esto podría implicar.
No se respeta la alineación a la derecha de las líneas escritas en idiomas de derecha a izquierda, como el farsi o el hebreo.
El sistema de prueba incluido es relativamente nuevo, sea indulgente.
IMPORTANTE , el sistema de prueba tiene algunas dependencias; lea test/README.rst
antes de continuar.
NOTA, ejecutar todas las pruebas ejecutando ./tests.sh
en el directorio tests
llevará algún tiempo (alrededor de 21 minutos por ahora).
NOTA en algunos sistemas como *BSD algunas pruebas pueden fallar. Esto puede explicarse por diferencias en las implementaciones de posix/libc/.... Esto puede ocurrir especialmente cuando se utilizan algunas expresiones regulares específicas o secuencias de bytes UTF-8
poco comunes.
Si una prueba falla por un motivo desconocido, envíeme el nombre de su directorio y el archivo .bad
correspondiente.
Si sufre un error que ninguna prueba cubre, puede crear una nueva prueba en el directorio tests
en un directorio nuevo o existente: lea el archivo tests/README.rst
, use una prueba existente como modelo, cree un .in
y un archivo .tst
y envíamelos junto con los archivos producidos.
Las contribuciones son bienvenidas, pero primero discuta su propuesta en un número o con el mantenedor.
Quiero agradecer a quienes se tomaron el tiempo de empaquetar smenu para su sistema operativo o distribución preferido. Encontrarás sus nombres aquí: https://repology.org/project/smenu/information