Programa em Shell Script para personalizar o prompt do Bash

1. Programa em Shell Script para personalizar o prompt do Bash

Jeferson Corrêa
BarbaVerde

(usa Ubuntu)

Enviado em 31/05/2015 - 17:05h

Não sei vocês, mas eu tenho duas (dentre várias) convicções. A primeira, de que ODEIO Shell/Bash/Terminal/Console monocromático. A segunda, de que na escola eu SEMPRE conseguia entender melhor as questões de matemática se a professora utilizasse diversas cores para diferenciar elementos nas equações e saber quais poderiam ser relacionados entre si.

Foi pensando nisso que eu criei o "uniqShell", que nada mais é que um script personalizador de prompt para o Bash. Ele funciona por meio de um menu, onde você escolhe o que quer que apareça no prompt ("nome do host", "nome do usuário", "data", "hora" etc) e ainda permite que cada um desses elementos tenha uma cor diferente dos outros.

Quem já tentou fazer isso "na unha" sabe o saco que é mudar a variável PS1, por causa dos diversos códigos disponíveis... isso sem falar nas tags de cores, que não são nem um pouco intuitivas (pelo menos para mim). O uniqShell facilita isso também ;)

Vamos ao código! =)

#!/bin/bash
# VETORES ######################################################################
######### vetor dos códigos de prompt do shell #################################
code[0]="\d" # data
code[1]="\h" # nome da máquina (host)
code[2]="\j" # processos
code[3]="\n" # nova linha
code[4]="\t" # relógio em formato 24 horas (c/seg)
code[5]="\T" # relógio em formato 12 horas (c/seg)
code[6]="\u" # nome do usuário
code[7]="\w" # diretório atual
code[8]="\!" # número do comando no histórico do usuário
code[9]="\#" # número do comando na instâmcia atual
code[10]="\$" # ID do usuário
code[11]="\@" # relógio em formato 12 horas (s/seg)
######### vetor das cores para os códigos de prompt do shell ###################
color[0]="\e[0;30m" # preto
color[1]="\e[1;30m" # cinza
color[2]="\e[0;31m" # vermelho
color[3]="\e[1;31m" # vermelho claro
color[4]="\e[0;32m" # verde
color[5]="\e[1;32m" # verde claro
color[6]="\e[0;33m" # marrom
color[7]="\e[1;33m" # amarelo
color[8]="\e[0;34m" # azul
color[9]="\e[1;34m" # azul claro
color[10]="\e[0;35m" # roxo
color[11]="\e[1;35m" # roxo claro
color[12]="\e[0;36m" # ciano
color[13]="\e[1;36m" # ciano claro
color[14]="\e[0;37m" # cinza claro
color[15]="\e[1;37m" # branco
color[99]="\e[m" # FECHA a cor escolhida
# FUNÇÕES ######################################################################
######### função de escolha de cores ###########################################
function fChooseColor()
{
reset
echo -ne "Escolha a cor para a opção selecionada

CORES

0 -\e[0;30m Preto\e[m 8 -\e[0;34m Azul\e[m
1 -\e[1;30m Cinza\e[m 9 -\e[1;34m Azul claro\e[m
2 -\e[0;31m Vermelho\e[m 10 -\e[0;35m Roxo\e[m
3 -\e[1;31m Vermelho claro\e[m 11 -\e[1;35m Roxo claro\e[m
4 -\e[0;32m Verde\e[m 12 -\e[0;36m Ciano\e[m
5 -\e[1;32m Verde claro\e[m 13 -\e[1;36m Ciano claro\e[m
6 -\e[0;33m Marrom\e[m 14 -\e[0;37m Cinza claro\e[m
7 -\e[1;33m Amarelo\e[m 15 -\e[1;37m Branco\e[m

COR: "
read chosenColor
}
######### função de menu #######################################################
function fMenu()
{
reset
echo -ne " uniqShell

PROMPT\n$shellPrompt

OPÇÕES

0 - data 7 - diretório atual
1 - nome do host 8 - número histórico do comando
2 - jobs ativos 9 - número corrente do comando
3 - nova linha 10 - ID de usuário
4 - hora (24h) [HH:MM:ss] 11 - hora [HH:MM]
5 - hora (12h) [HH:MM:ss] 12 - literal
6 - usuário 13 - espaço em branco



f - FINALIZAR (salvando) s - SAIR (sem salvar)

OPÇÃO: "
read chosenCode
case $chosenCode in
0 | 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 )
fChooseColor
shellPrompt=`echo "$shellPrompt${color[$chosenColor]}${code[$chosenCode]}${color[99]}"`
;;
3 )
shellPrompt="$shellPrompt\n"
;;
12 )
echo -n "Digite a string literal: "
read literalString
fChooseColor
shellPrompt=`echo "$shellPrompt${color[$chosenColor]}$literalString${color[99]}"`
;;
13 )
shellPrompt="$shellPrompt "
;;
f )
echo PS1=\"$shellPrompt\" >> ${HOME}/.bashrc
reset
echo " Você precisará abrir uma nova instância do terminal"
echo "para as mudanças terem efeito."
echo -e "\n\nObrigado por usar o uniqShell =)"
sleep 7
reset
exit
;;
s )
exit
;;
esac
}
# INÍCIO #######################################################################
while true
do
fMenu
done


Eu adicionaria umas imagens de antes e depois da personalização do prompt, mas os tópicos (pelo que eu sei) não têm essa opção. E eu não me entendi muito com a ferramenta de criação de Artigos =/

Espero que gostem do programa ;)

ps: dúvidas? Sugestões? Mandem abaixo =)


  


2. Re: Programa em Shell Script para personalizar o prompt do Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/05/2015 - 18:24h

Publique essa sua dica na sessão DICAS do VoL, ou na sessão SCRIPTS.
Como sugestão, tem também esse site aqui:
http://bashrcgenerator.com/
Bem legal para personalizar o PS1.


3. Re: Programa em Shell Script para personalizar o prompt do Bash

Jeferson Corrêa
BarbaVerde

(usa Ubuntu)

Enviado em 31/05/2015 - 19:49h


Hahah, legal =D

Não conhecia esse "bashrcgenerator", é uma opção bem legal mesmo. Mas ele não tem (pelo que eu vi) a opção das cores que o meu programa dá =P

Vou mudar de tópico aqui ;)


4. Re: Programa em Shell Script para personalizar o prompt do Bash

edps
edps

(usa Slackware)

Enviado em 31/05/2015 - 20:22h

PauloHAC escreveu:

Publique essa sua dica na sessão DICAS do VoL, ou na sessão SCRIPTS.
Como sugestão, tem também esse site aqui:
http://bashrcgenerator.com/
Bem legal para personalizar o PS1.


Boa sugestão!

Ontem, criei uma dica com essa finalidade em meu blog:

https://edpsblog.wordpress.com/2015/05/30/how-to-vcprompt/

Mas não mexi muito no mesmo, pois já parti para o shell zsh, estando usando o mesmo desde então e tendo passado ao mesmo todos os aliases usandos no shell BASH.

MInha sugestão é que envie o seu material como dica, com imagens se possível, caso não, que envie como um script.


5. Re: Programa em Shell Script para personalizar o prompt do Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/05/2015 - 20:53h

BarbaVerde escreveu:


Hahah, legal =D

Não conhecia esse "bashrcgenerator", é uma opção bem legal mesmo. Mas ele não tem (pelo que eu vi) a opção das cores que o meu programa dá =P

Vou mudar de tópico aqui ;)


Sim, tem como adicionar cores. É só clicar duas vezes em cada elemento para personalizar cores e negrito.




6. Re: Programa em Shell Script para personalizar o prompt do Bash

Jeferson Corrêa
BarbaVerde

(usa Ubuntu)

Enviado em 01/06/2015 - 13:54h

PauloHAC escreveu:

BarbaVerde escreveu:


Hahah, legal =D

Não conhecia esse "bashrcgenerator", é uma opção bem legal mesmo. Mas ele não tem (pelo que eu vi) a opção das cores que o meu programa dá =P

Vou mudar de tópico aqui ;)


Sim, tem como adicionar cores. É só clicar duas vezes em cada elemento para personalizar cores e negrito.



Opa, Valeu =D







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts