Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Dica: Mágica do Prompt

Aprimorando o Prompt do Sistema

Daniel RobbinsGentoo Technologies
Residindo em Albuquerque, Novo México, Daniel Robbins é o Presidente/CEO da Gentoo Technologies, Inc., o criador do Gentoo Linux, um Linux avançado para o PC, e o sistema Portage, um sistema de portas de nova geração para Linux. Ele também serviu como um autor contribuinte para os manuais de Macmillan Caldera OpenLinux Unleashed, SuSE Linux Unleashed e Samba Unleashed. Daniel se envolveu com computadores de alguma maneira desde o segundo grau, quando foi exposto pela primeira vez à linguagem de programação. Logo, assim como a uma dose potencialmente perigosa de Pac Man. Isso provavelmente explica por que ele desde então teve a função de Artista Gráfico Principal na SONY Electronic Publishing/Psygnosis. Daniel gosta de passar o tempo com a esposa, Mary, e sua filha recém-nascida, Hadassah. É possível entrar em contato com o Daniel em drobbins@gentoo.org.

Resumo:  Por que manter-se fiel à linha de comando do shell entediante quando é possível tornar isso colorido e mais informativo? Nessa dica, Daniel Robbins mostrará como obter sua linha de comando do shell simplesmente da maneira que você gosta, bem como a forma de atualizar dinamicamente sua barra de título do terminal X.

Data:  01/Set/2000
Nível:  Introdutório
Atividade:  3208 visualizações
Comentários:  


Como as pessoas do Linux/UNIX, nós passamos muito tempo trabalhando no shell e, em muitos casos, isso é o que recebemos de volta:

bash-2.04$

Se você é root, tem o direito à versão "prestígio" desse belo prompt:

bash-2.04#

Esses prompts não são exatamente bonitos. Não é de se estranhar que várias distribuições do Linux atualizaram seus prompts padrão que incluem cor e informações adicionais ao boot. No entanto, mesmo que você tenha uma distribuição moderna fornecida com um prompt bom e colorido, ela pode não ser perfeita. Talvez você queira incluir algumas cores ou incluir (ou remover) informações do próprio prompt. Não é difícil projetar seu prompt colorido e especializado a partir do zero.

Informações Básicas do Prompt

Sob o bash, é possível configurar seu prompt alterando o valor da variável de ambiente da PS1, como segue:

$ export PS1="> "
>

As alterações têm efeito imediatamente e podem ser feitas permanentes colocando-se a definição "exportar" em seu arquivo ~/.bashrc. A PS1 pode conter qualquer quantidade de texto simples que você quiser:

$ export PS1="Este é meu superprompt > "
Este é meu superprompt >

Embora isso seja, talvez, interessante, não é exatamente útil ter um prompt que contenha muitos textos estáticos. A maioria dos prompts customizados contêm informações como o nome de usuário atual, o diretório de trabalho ou o nome do host. Essas migalhas de informações pode ajudá-lo a navegar em seu universo shell. Por exemplo, o seguinte prompt exibirá seu nome de usuário e nome do host:

$ export PS1="\u@\H > "
drobbins@freebox >

Esse prompt é especialmente prático para pessoas que efetuam login em várias máquinas sob várias contas, nomeadas de modo diferente, já que ele age como um lembrete de qual máquina você está realmente e que privilégio possui no momento.

No exemplo acima, nós instruímos o bash para inserir o nome de usuário e o nome do host no prompt utilizando seqüências de caracteres de escape com barra invertida que o bash substitui por valores específicos quando eles aparecem na variável de PS1. Nós utilizamos as sequências "\u" (para nome de usuário) e "\H" (para a primeira parte do nome do host). Aqui está uma lista completa de todas as sequências especiais que o bash reconhece (é possível localizar essa lista na página de instrução do bash, na seção "PROMPTING"):

SequênciaDescrição
\aO caractere bell do ASCII (também é possível digitar \007)
\dData no formato "Qua Set 06"
\eO caractere de escape do ASCII (também é possível digitar \033)
\hPrimeira parte do nome do host (como "mybox")
\HNome do host integral (como "mybox.mydomain.com")
\jO número de processos que você suspendeu nesse shell pressionando ^Z
\lO nome do dispositivo de terminal do shell (como "ttyp4")
\nNova linha
\rRetorno de linha
\sO nome do executável shell (como "bash")
\tTempo no formato 24 horas (como "23:01:01")
\TTempo no formato 12 horas (como "11:01:01")
\@Tempo no formato 12 horas com am/pm
\uSeu nome de usuário
\vVersão do bash (como 2.04)
\VVersão do bash, incluindo patchlevel
\wDiretório de trabalho atual (como "/home/drobbins")
\WO "nome básico" do diretório de trabalho atual (como "drobbins")
\!Posição do comando atual no buffer de histórico
\#Número do comando (este irá contar a cada prompt, desde que seja digitado algo)
\$Se você não for root, insere um "$"; se você for root, obtém um "#"
\xxxInsere um caractere ASCII com base no número de três dígitos xxx (substitui dígito não utilizados por zeros, como "\007")
\\Uma barra invertida
\[Essa sequência deve aparecer antes de uma sequência de caracteres que não move o cursor (como seqüências de escape de cor). Isso permite ao bash calcular o agrupamento de palavras corretamente.
\]Essa sequência deve aparecer após uma sequência de caracteres não imprimíveis.

Portanto, aí você tem todas as seqüências de escape com barras invertidas especiais do bash. Divirta-se um pouco com elas para perceber como elas funcionam. Após ter feito um pouco de teste, é hora de incluir alguma cor.


Colorização

Incluir cor é bem fácil; a primeira etapa é projetar um prompt sem cor. Então, tudo o que precisamos é incluir seqüências de escape especiais que serão reconhecidas pelo terminal (em vez do bash) e fazê-lo exibir certas partes do texto em cores. Terminais Linux e terminais X padrão permitem configurar a cor (texto) do primeiro plano e a cor do primeiro plano e também ativar caracteres "em negrito" se desejado. Temos oito cores para escolher.

Cores são selecionadas incluindo sequências especiais na PS1 -- basicamente colocando valores numéricos entre um "\e[" (escape abrir parêntese) e um "m". Se especificarmos mais de um código numérico, separamos cada código com um ponto e vírgula. Aqui está um código de cor de exemplo:

"\e[0m"

Quando especificamos um zero como código numérico, ele instrui o terminal para reconfigurar o primeiro plano, plano de fundo e as configurações de negrito para seus valores padrão. Você desejará utilizar esse código no final de seu prompt, de forma que o texto que digitar não seja colorido. Agora, vamos examinar os códigos de cor. Verifique essa captura de tela:


Gráfico de Cor
Cor do gráfico

Para usar esse gráfico, encontre a cor que deseja utilizar e localize os números de primeiro plano (30-37) e de plano de fundo (40-47) correspondentes. Por exemplo, se você deseja a cor verde em um fundo preto, os números são 32 e 40. Em seguida, utilize sua definição de prompt e inclua os códigos de cor apropriados. Esse:

export PS1="\w> "

torna-se:

export PS1="\e[32;40m\w> "

Até o momento, tudo bem, mas ainda não está perfeito. Após o bash imprimir o diretório de trabalho, é necessário configurar a cor de volta ao normal com uma sequência "\e[0m":

export PS1="\e[32;40m\w> \e[0m"

Essa definição fornecerá um bom prompt verde, mas é necessário incluir alguns retoques finais. Não precisamos incluir a configuração de cor do plano de fundo 40, já que isso configura o plano de fundo como preto, que é a cor padrão de qualquer maneira. Além disso, a cor verde é bem escura; podemos corrigir isso incluindo um código de cor "1", que ativa o texto mais claro, em negrito. Além dessa mudança, precisamos cercar todos os caracteres não imprimíveis com seqüências de escape de bash especiais, "\[" e "\]". Essas sequências instruirão o bash que os caracteres delimitados não absorvem nenhum espaço na linha, o que permitirá ao agrupamento de palavras continuar a funcionar corretamente. Sem elas, você acabará com um prompt de boa aparência que desarrumará a tela se for digitado por acaso um comando que se aproxime da extrema direita do terminal. Aqui está nosso prompt final:

export PS1="\[\e[32;1m\]\w> \[\e[0m\]"

Não tenha medo de utilizar várias cores no mesmo prompt, dessa maneira:

export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H> \[\e[0m\]"


Diversão no Xterm

Eu mostrei como incluir informações e cor em seu prompt, mas é possível fazer bem mais. É possível incluir códigos especiais em seu prompt que farão a barra de título de seu terminal X (como rxvt ou aterm) ser dinamicamente atualizada. Tudo o que você precisa fazer é incluir a seguinte sequência em seu prompt da PS1:

"\e]2;titlebar\a"

Simplesmente substitua a "barra de título" da subcadeia pelo texto que gostaria que aparecesse em sua barra de título do xterm e está tudo definido! Não é necessário utilizar texto estático; também é possível inserir seqüências de escape do bash em sua barra de título. Verifique esse exemplo, que coloca o nome de usuário, nome do host e diretório de trabalho atual na barra de título, assim como define um prompt curto e verde claro:

export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

Esse é o prompt específico que estou utilizando na captura de tela da tabela de cores, acima. Eu gosto muito desse prompt, porque ele coloca todas as informações na barra de título ao invés de no terminal onde ele limita a quantidade que pode caber em uma linha. A propósito, certifique-se de cercar sua sequência da barra de título com "\[" e "\]", porque, no que se refere ao terminal, essa sequência é não imprimível. O problema com a colocação de muitas informações na barra de título é que não será possível ver as informações se estiver utilizando um terminal não-gráfico, como o console do sistema. Para corrigir isso, talvez você queira incluir isso em seu .bashrc:

if [ "$TERM" = "linux" ]
then
	#nós estamos no console do sistema ou talvez utilizando telnet em
	export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
	#nós não estamos no console, assuma um xterm
	export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi

Essa instrução condicional do bash irá configurar dinamicamente seu prompt com base em suas configurações do terminal atuais. Para consistência, você desejará configurar seu ~/.bash_profile de forma que ele dê origem a seu ~/.bashrc na inicialização. Certifique-se de que a seguinte linha esteja em seu ~/.bash_profile:

source ~/.bashrc

Dessa maneira, você obterá a mesma configuração do prompt se iniciar um shell de login ou de não-login.

Bem, ai está. Agora, divirta-se e utilize alguns prompts elegantes e coloridos!


Recursos

  • rxvt é um ótimo xterm pequeno que tem, por acaso, uma boa quantidade de documentação relacionada a seqüências de escape mantidas no diretório "doc" incluído na tarball de origem.

  • aterm é um outro programa de terminal, com base em rxvt. Ele suporta diversos recursos visuais bons, como transparência e coloração.

  • bashish é um mecanismo de tema para todos os tipos diferentes de terminais.

Sobre o autor

Residindo em Albuquerque, Novo México, Daniel Robbins é o Presidente/CEO da Gentoo Technologies, Inc., o criador do Gentoo Linux, um Linux avançado para o PC, e o sistema Portage, um sistema de portas de nova geração para Linux. Ele também serviu como um autor contribuinte para os manuais de Macmillan Caldera OpenLinux Unleashed, SuSE Linux Unleashed e Samba Unleashed. Daniel se envolveu com computadores de alguma maneira desde o segundo grau, quando foi exposto pela primeira vez à linguagem de programação. Logo, assim como a uma dose potencialmente perigosa de Pac Man. Isso provavelmente explica por que ele desde então teve a função de Artista Gráfico Principal na SONY Electronic Publishing/Psygnosis. Daniel gosta de passar o tempo com a esposa, Mary, e sua filha recém-nascida, Hadassah. É possível entrar em contato com o Daniel em drobbins@gentoo.org.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=382599
ArticleTitle=Dica: Mágica do Prompt
publish-date=09012000
author1-email=drobbins@gentoo.org
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).