Menu em bash
Publicado por Perfil removido (última atualização em 23/04/2013)
[ Hits: 4.875 ]
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 adicionar chave pública
Localizador não interativo do Mozilla Firefox para Slackware
Gravar uma imagem ISO em um CD-RW
Instale o Samba 2.2.9 no DSL e DSL-N com o script install-samba
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (9)
Boot do PosRog so funciona em notebook (1)