Menu em bash
Publicado por Perfil removido (última atualização em 23/04/2013)
[ Hits: 4.878 ]
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]}"
Shell para extrair informações de impressoras Brother
Montando compartilhamentos windows
Colocar palavras em minúsculas
Script de compilação do kernel 3.3.2 com cflags -march=native e patch 3.3.0-ck1 para ubuntu 11.10
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
Proteja seu Linux Mint com o Timeshift: Restaure o sistema mesmo que ele não inicie!
Instalando Google Chrome no Debian 13
Alguém pode me recomendar um editor de textos? (0)
meus dois pen drives não são mais reconhecidos pelo meu PC apos tentar... (1)