Como criar uma caixa de mensagem na linha de comando?

65

Caixas de mensagens da GUI ou caixas de mensagens exibidas dentro do terminal.

Também seria interessante poder receber de volta informações simples do usuário, por exemplo, sim / não ou botões de opção.

user62511
fonte
8
O que você quer dizer com "caixa de mensagem"? Uma caixa de alerta gráfico, uma caixa de mensagem pop-up? Algo mais?
polym 16/07

Respostas:

110

Para uma "caixa ao redor de uma mensagem" padrão, use boxes:

echo 'This is a test' | boxes

boxesterá a seguinte aparência (a primeira. A segunda é personalizada cowsay):

Captura de tela de uma caixa de asterisco e um cachorro de arte ASCII segurando um sinal de texto


Se você quer dizer uma caixa de alerta, use notify-send:

notify-send 'title' 'message'

notify-send se parece com isso:

Mensagem pop-up com a mensagem "Olá, Ashframe ..."


Você também pode usar zenitypara uma janela pop-up:

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

O Zenity é mais gráfico e tem mais opções, como exibir a janela como uma pergunta, usando:

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

ou mesmo barras de progresso, usando:

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

zenity se parece com isso:

caixas de diálogo de erro, pergunta, informações e aviso com botões


Ou use dialog, para uma caixa de mensagem somente da linha de comando:

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

dialog se parece com isso:

caixa de diálogo TUI com 4 opções


Outra opção é whiptail:

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

whiptail se parece com isso:

caixa pop-up de chicote com dois botões de texto


E se você é realmente louco, use toilet:

toilet -F border -F gay "CRAZY"

toilet se parece com isso:

caixa de texto colorido com a mensagem "LOUCO"

polym
fonte
3
Resposta realmente completa, é útil! Obrigado!
Excelente redação, @polym - eu vou zenityme irritar uma vez por mês no departamento de atualizações e atualizações ...
Frank Nocke 18/09
27

xmessage

Este é o avô dos alertas da GUI:

xmessage -center "Hello, World!"

Pura bondade retrô.

Aposto também que ele deve estar amplamente disponível nos sistemas X11.

Segmento SO: Como mostrar uma caixa de mensagem da GUI a partir de um script bash no linux? | Estouro de pilha

Testado no Ubuntu 18.04.

Ciro Santilli adicionou uma nova foto
fonte
Trabalhou fora da caixa na minha instalação do Openbox. Obrigado!
aexl
xmessageestá instalado no Ubuntu Server por padrão. Para que eu possa usar o ssh -Y <host> logon na máquina enquanto encaminha x conexões e executar some-command; xmessage "some-command is done"para exibir uma notificação na minha área de trabalho quando o comando de execução longa estiver concluído.
Stephen Ostermiller
@StephenOstermiller sim, essa é uma boa dica!
Ciro Santilli fez
11
Comando legal. Para auto-apagar a mensagem após alguns segundos: xmessage -timeout 10 "Goodbye in 10s!".
AlainD 11/09
8

E então, apenas porque a resposta @ polym completamente exagerada perdeu as mensagens clássicas:

write <username> [<terminal>]- envie uma mensagem para outro usuário. Interativamente ou como parte de um tubo comecho "message" | write username

Escreva


E o complemento para escrever, wallpara enviar uma mensagem a todos os usuários

parede

HBruijn
fonte
1

Se você deseja canalizar o texto para um wrapper Python, pode usar terminaltables:

pip3 install colorclass
pip3 install terminaltables

Em seguida, no repositório GitHub , você pode usar um dos exemplos para escrever um wrapper python.

insira a descrição da imagem aqui

not2qubit
fonte