Menu em bash
Publicado por Perfil removido (última atualização em 23/04/2013)
[ Hits: 4.703 ]
Um "pretenso" sistema de menu nostálgico 100% em bash script.
Podem ser incluídos novos menus.
Serve para usar em uma agenda em bash, por exemplo.
Necessita de suporte a unicode no terminal.
Favor verificar.
Obs. [1]: Gostaria de saber se existe algo semelhante (ou melhor) feito (sempre há). Me poupará trabalho.
Obs. [2]: Se estiver tudo OK, funcionará com as setas do teclado (--> e <-- ). Gostaria também de descobrir em quais casos isto falhará em outras máquinas.
#!/bin/bash moldura() { LI=$1 CI=$2 LF=$3 CF=$4 CC=$5 SW=$6 ESC="{FONTE}33[" BOX=(2552 2550 2555 2502 2519 2501 2515 2502) # ╒ ═ ╕ │ ┙ ━ ┕ │ # 0 1 2 3 4 5 6 7 PLANO=2592; # ▒ echo -ne "$ESC""$CC" echo -ne "$ESC$LI;$CI""H""\u${BOX[0]}" echo -ne "$ESC$LI;$CF""H""\u${BOX[2]}" echo -ne "$ESC$LF;$CF""H""\u${BOX[4]}" echo -ne "$ESC$LF;$CI""H""\u${BOX[6]}" for ((coluna=$CI+1;coluna<=$CF-1;coluna++)); do echo -ne "$ESC$LI;$coluna""H""\u${BOX[1]}" echo -ne "$ESC$LF;$coluna""H""\u${BOX[5]}" done for ((linha=$LI+1;linha<=$LF-1;linha++)); do echo -ne "$ESC$linha;$CI""H""\u${BOX[3]}" echo -ne "$ESC$linha;$CF""H""\u${BOX[7]}" done echo -ne "$ESC""$SW" for ((coluna=$CI+2;coluna<=$CF+2;coluna++)); do echo -ne "$ESC$((LF+1));$coluna""H""\u$PLANO" done for ((linha=$LI+1;linha<=$LI+2;linha++)); do echo -ne "$ESC$linha;$((CF+1))""H""\u$PLANO""\u$PLANO" done } TECLA=("\x1b\x5b\x41" "\x1b\x5b\x42" "\x1b\x5b\x43" "\x1b\x5b\x44" "\x0a") for i in {0..4}; do TECLA[$i]=`echo -ne ${TECLA[$i]}` done ESC="{FONTE}33[" LIN=(3 3 3 3 3 21 0) COL=(12 24 36 48 60 26) TELA="$ESC"'44m' COR=('0m' '22m' '8m' '1;25;27;33;44m' '1;5;27;37;41m' '1;25;27;36;44m' '1;37;44m' '1;30m') opcao[0]="Inclusao"; opcao[1]="Alteracao"; opcao[2]="Exclusao"; opcao[3]="Consulta"; opcao[4]="Sair"; mess[0]=" Realiza uma inclusão "; mess[1]=" Realiza uma alteracao "; mess[2]=" Realiza uma exclusao "; mess[3]=" Realiza uma consulta "; mess[4]=" Sai do programa "; echo -ne "$TELA" clear moldura 2 4 4 76 "${COR[6]}" "${COR[7]}" moldura 20 20 22 60 "${COR[6]}" "${COR[7]}" op=0 cor=0 tecla=""; while true; do tecla="" for i in {0..4}; do COORD="$ESC${LIN[$i]};${COL[$i]}H" C_MESS="$ESC${LIN[5]};${COL[5]}H" [[ i -eq op ]] && cor=4 || cor=3; echo -ne "$ESC${COR[$cor]}""$COORD""${opcao[$i]}" echo -ne "$ESC${COR[5]}""$C_MESS""${mess[$op]}" done read -s -p "" -n 3 tecla; if [[ "$tecla" == "${TECLA[2]}" ]]; then let op++ let op%=5; elif [[ "$tecla" == "${TECLA[3]}" ]]; then let op-- let op%=5 fi; [[ op -lt 0 ]] && let op+=5 [[ "$tecla" = "" && op -eq 4 ]] && break done; echo -e "\n$ESC${COR[0]}"
Script para informar o IP válido
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)