¿Cómo crear un cuadro de mensaje desde la línea de comando?

65

Cuadros de mensaje de GUI o cuadros de mensaje que se muestran dentro del terminal.

También sería interesante poder recibir una entrada simple del usuario, por ejemplo, sí / no o botones de radio.

usuario62511
fuente
8
¿Qué quieres decir con "cuadro de mensaje"? ¿Un cuadro de alerta gráfica, un cuadro de mensaje emergente? ¿Algo más?
polym

Respuestas:

110

Para un "cuadro alrededor de un mensaje" estándar, use boxes:

echo 'This is a test' | boxes

boxesse verá así (Primero. El segundo es una costumbre como cowsay):

Captura de pantalla de una caja de asterix y un perro de arte ASCII con un cartel de texto


Si te refieres a un cuadro de alerta, usa notify-send:

notify-send 'title' 'message'

notify-send Se ve como esto:

Mensaje emergente que dice "Hola Ashframe ..."


También puede usar zenitypara una ventana emergente:

zenity --error --text="An error occurred\!" --title="Warning\!"

Zenity es más gráfico y tiene más opciones, como hacer que la ventana aparezca como una pregunta, usando:

zenity --question --text="Do you wish to continue/?"

o incluso barras de progreso, usando:

find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."

zenity Se ve como esto:

cuadros de diálogo de error, pregunta, información y advertencia con botones


O use dialog, para un cuadro de mensaje de línea de comandos solamente:

dialog --checklist "Choose OS:" 15 40 5 \
1 Linux off \
2 Solaris on \
3 'HP UX' off \
4 AIX off

dialog Se ve como esto:

cuadro de diálogo TUI con 4 opciones


Otra opción es whiptail:

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78

whiptail Se ve como esto:

cuadro emergente whiptail con dos botones de texto


Y si estás realmente loco, usa toilet:

toilet -F border -F gay "CRAZY"

toilet Se ve como esto:

cuadro de texto colorido que dice "LOCO"

polimero
fuente
3
Respuesta realmente completa, ¡es útil! ¡Gracias!
Excelente redacción, @polym - Voy zenitya ponerme nervioso una vez al mes en el departamento de actualización y actualización ...
Frank Nocke,
27

xmessage

Este es el abuelo de las alertas de GUI:

xmessage -center "Hello, World!"

Pura bondad retro.

También apuesto a que debería estar ampliamente disponible en los sistemas X11.

Hilo SO: ¿Cómo mostrar un cuadro de mensaje GUI desde un script bash en Linux? El | Desbordamiento de pila

Probado en Ubuntu 18.04.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
Salió de la caja en mi instalación de Openbox. ¡Gracias!
aexl
xmessageincluso está instalado en Ubuntu Server por defecto. Entonces puedo usar ssh -Y <host> para iniciar sesión en la máquina mientras reenvío x conexiones y luego ejecutar some-command; xmessage "some-command is done"para abrir una notificación en mi escritorio cuando finalice el comando de ejecución prolongada.
Stephen Ostermiller
@StephenOstermiller sí, ¡es un buen consejo!
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Comando genial. Para automáticamente borrar el mensaje después de unos segundos: xmessage -timeout 10 "Goodbye in 10s!".
AlainD
8

Y luego solo porque @ polym's completamente por encima de la respuesta superior perdió el mensaje clásico:

write <username> [<terminal>]- Enviar un mensaje a otro usuario. Interactivamente o como parte de una tubería conecho "message" | write username

escribir


Y el complemento para escribir, wallpara enviar un mensaje a todos los usuarios.

pared

HBruijn
fuente
1

Si está dispuesto a canalizar el texto a un contenedor Python, puede usar terminaltables:

pip3 install colorclass
pip3 install terminaltables

Luego, en el repositorio de GitHub , puede usar uno de los ejemplos para escribir un contenedor de python.

ingrese la descripción de la imagen aquí

not2qubit
fuente