Menu em bash
Publicado por Perfil removido (última atualização em 23/04/2013)
[ Hits: 4.892 ]
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]}"
Instalação de programas em Debian-like
Gerenciador de Conexões terminal server com Mysql
Faz uma busca no OpenSubtitles por um filme.
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
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
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (5)
E aí? O Warsaw já está funcionando no Debian 13? (2)
Dúvidas sobre a originalidade de conteúdos online (12)