Search
Archives

You are currently browsing the archives for the Programação category.

Bookmarks

Archive for the ‘Programação’ Category

256 cores no shell

Quem leu os posts [Deixando o prompt colorido] e [Usando cores e efeitos no shell] gostou da idéia de colorir os caracteres do shell e o prompt com 16 cores.

Porém, é possível que o seu shell tenha 256 cores, sendo as 16 que já vimos até então (do padrão ANSII) e mais 240 novas.

Para explicar novamente o que expliquei em [Usando cores e efeitos no shell], é mais cômodo você ler o artigo que citei antes, pois o uso das 256 cores é mais complexo (sem saber o básico, você terá dificuldades de compreender), e depois volte a partir daqui para continuar de onde parou :D

Vamos aos exemplos agora.

Para imprimirmos o nome “Alice” apenas em violeta, ou seja,  Alice 

echo -e "\033[0;38;5;129m Alice \033[0m"

"Alice" com fundo verde-limão e texto em negrito:  Alice 

echo -e "\033[1;48;5;118m Alice \033[0m"

Para entender melhor:
echo -e "\033[1;48;5;118m Alice \033[0m"

O número 1 é o código do negrito. Se ele for 0, não é negrito. Os demais efeitos estão em [Usando cores e efeitos no shell].

O número 48 é para que a cor seja especificada como plano de fundo. Se for 38 a cor é especificada para o texto.

Não sei qual é a finalidade desse número 5, mas ele deve estar ali. Se for omitido ou colocar outro número no lugar, não vai funcionar.

O número 118 é o código da cor verde-limão. O código do violeta é 129. A tabela completa com todos os códigos de cores está no final desse artigo.

E é possível combinar as cores de textos e de plano de fundo também.

"Alice" com texto em violeta com fundo verde-limão sem efeitos, ou seja,  Alice 

Vamos printar o código do texto violeta primeiro (\033[0;38;5;129m) e depois o código do plano de fundo verde-limão (\033[0;48;5;118m):

echo -e "\033[0;38;5;129m\033[0;48;5;118m Alice \033[0m"

"Alice" com texto em violeta e negrito com fundo verde-limão, ou seja,  Alice 

Vamos printar o código do texto violeta primeiro (\033[0;38;5;129m) e depois o código do plano de fundo verde-limão com o código de negrito junto (\033[1;48;5;118m).

echo -e "\033[0;38;5;129m\033[1;48;5;118m Alice \033[0m"

Nada impede também de você querer printar primeiro o código do plano de fundo e depois o código do texto, porque o resultado final será o mesmo, independente da ordem, porém o código do efeito deve ser especificado na última tag, do contrário, não vai sair o efeito negrito (ou qualquer outro), porque você vai acabar ativando o negrito com 1 na primeira tag, mas já o desativa logo em seguida com o 0 na segunda tag.

A seguir está a tabela completa de todas as cores:

Quem usa o terminal do Mac vai se decepcionar, porque este terminal não suporta 256 cores, os demais sim, porém quem usa o Mac pode ter esperanças nos terminais alternativos, como o Zoc, o Terminator ou o iTerm. O terminal nativo do X que é utilizado pelo Mac e pelo Linux suporta todas essas cores.

Para saber quais são os efeitos e quais programas o suportam, veja [Usando cores e efeitos no shell].

Como compilar no Mac (gcc, g++, make etc)

Para deixar o Mac pronto para compilar novas aplicações a partir dos código-fontes, você deverá baixar o Xcode no site da Apple™.

http://connect.apple.com/

É necessário se cadastrar gratuitamente como um desenvolvedor Apple (Apple Developer) antes de efetuar o download, desça até o rodapé da página que acabou de abrir para se cadastrar como Apple Developer.

Após estar cadastrado, e logado naquele site, baixe a imagem do Xcode. Se não encontrar nada sobre Xcode, clique aqui para ir direto para a página de download dele.

Depois de baixado, não tem segredos, é só abrir a imagem de disco (.dmg) baixada e clicar duas vezes no programa de instalação.

Das opções disponíveis, as que vão realmente interessar são apenas a Xcode Toolset e a Unix Development.

Deixando o prompt colorido

A distribuição Gentoo possui um prompt colorido ao acessar o shell, veja aqui como deixá-lo para a sua distribuição também.

Abra o arquivo .bashrc (faça um backup dele antes ok?) que está no seu diretório home de usuário (geralmente /home/seunome ou /root se você estiver como root).

Vá ao final do arquivo e, conforme a tabela que está no tópico [Usando cores e efeitos no shell] você pode escolher as cores para seu prompt definindo-as na variável PS1 e PS2.

A variável PS1 é a que mostra o texto no seu prompt, como:

jose@jose-desktop:~$ _

E a variável PS2 é aquele “>” que aparece quando você digita um comando com mais de uma linha, por exemplo:

jose@jose-desktop:~$ echo "
 > Ola"

Geralmente a variável PS1 tem o seguinte conteúdo:

PS1="\u@\h:\w\$ "

onde:
\u Exibe o nome do usuário (username)
\h Exibe o nome da máquina (hostname)
\w Exibe o caminho atual

E a PS2 é simplesmente:

PS2=" > "

Para apenas o nome do seu usuário aparecer em vermelho, conforme o exemplo da tabela de código de cores [aqui], definiremos por exemplo:

PS1="\033[31m\u\033[0m@\h:\w\$ "

Resultado final:
jose@jose-desktop:~$

Se quiser algo como:
jose@jose-desktop:~$

em uma linha só ficará grande, então você pode fazer dessa forma:

PS1="\033[35m\u"
PS1="$PS1\033[34m@"
PS1="$PS1\033[36m\h"
PS1="$PS1\033[32m:"
PS1="$PS1\033[33m\w"
PS1="$PS1\033[31m\$\033[0m "

Teste antes abrindo um terminal novo para ver se está tudo ok, do contrário, restaure o backup do .bashrc

Outra forma mais rápida de ele atualizar o seu prompt após essa edição é rodar o comando

source .bashrc

Detalhe importante para quem usa distribuições baseadas no Red Hat, como o próprio Red Hat, CentOS, Mandriva e Fedora, O arquivo “.bashrc” em alguns casos é o “.bash_profile”, então substitua todos os exemplos com .bashrc por .bash_profile

O que acha de editar a variável PS2 para deixá-la algo como o exemplo abaixo?

jose@jose-desktop:~$ for x in {1..7}
>>>>>> do
>>>>>> echo $x
>>>>>> done

Divirtam-se :-)

Usando cores e efeitos no shell

É possível lidarmos com cores no shell e com efeitos também.

As cores comuns já estão padronizadas e alguns dos efeitos também, porém as cores brilhantes e alguns dos efeitos ainda estão passando por esse processo.

Na tabela abaixo os resultados foram testadas nos seguinte softwares:

- Terminal do Mac OS X
- Terminal do Gnome (gnome-terminal);
- Terminal do KDE (konsole);
- Shell nativo do Unix (quando nenhuma interface gráfica está carregada);
- PuTTY (conectado por SSH a partir de um computador com Windows);

[m] mac terminal – [g] gnome-terminal – [k] konsole – [n] native unix shell – [x] native X shell – [p] putty

Efeitos Cor dos caracteres Cor de fundo
0 Voltar tudo ao normal
m [OK] – g [OK] – k [OK] – n [OK] – x[OK] – p [OK]
 30 Preto  40 Preto
1 Negrito (com cor brilhante)
m [OK] – g [OK] – k [OK] – n [OK] – x [OK] – p [--]
 31 Vermelho  41 Vermelho
2 Escuro
m [--] – g [OK] – k [--] – n [OK] – x [--] – p [--]
 32 Verde  42 Verde
3 (indefinido)
m [--] – g [--] – k [--] – n [--] – p [--]
 33 Amarelo  43 Amarelo
4 Sublinhado
m [--] – g [OK] – k [OK] – n [--] – p [OK]
 34 Azul  44 Azul
5 Pisca
m [OK] – g [--] – k [OK] – n [OK] – p [--]
 35 Magenta  45 Magenta
6 (indefinido)
m [--] – g [--] – k [--] – n [--] – p [--]
 36 Ciano  46 Ciano
7 Invertido
m [OK] – g [OK] – k [OK] – n [OK] – p [OK]
 37 Branco  47 Branco
8 Invisível
m [OK] – g [OK] – k [--] – n [--] – p [--]
 90 Preto Brilhante 100 Preto Brilhante
9 Tachado
m [--] – g [OK] – k [--] – n [--] – p [--]
 91 Vermelho Brilhante 101 Vermelho Brilhante
   
 
 92 Verde Brilhante 102 Verde Brilhante
   
 
 93 Amarelo Brilhante 103 Amarelo Brilhante
   
 
 94 Azul Brilhante 104 Azul Brilhante
   
 
 95 Magenta Brilhante 105 Magenta Brilhante
   
 
 96 Ciano Brilhante 106 Criano Brilhante
   
 
 97 Branco Brilhante 107 Branco Brilhante

Exemplos:

Para imprimirmos o nome “Alice” apenas em verde, ou seja,  Alice 

echo -e "\033[32m Alice \033[0m"

Dá para fazer combinações de um ou mais efeitos com cores, e de cores com cores também.

"Alice" com fundo vermelho brilhante e texto em negrito:  Alice 

echo -e "\033[101;1m Alice \033[0m"

"Alice" com fundo Ciano Brilhante e texto Azul:  Alice 

echo -e "\033[106;34m Alice \033[0m"

"Alice" com fundo Verde, texto Amarelo, sublinhado e negrito:  Alice 

echo -e "\033[33;42;4;1m Alice \033[0m"

Mas por que tenho sempre que finalizar com "\033[0m" ?
Porque ele reseta (retira) a configuração de cores. Se essa sequencia não for colocada, todo o seu shell terá a cor e/ou o efeito aplicados até então.

É possível também [deixar o prompt do seu shell colorido] com estas mesmas informações.

Os formatos de arquivos UNIX, DOS e MAC e como convertê-los

Os arquivos de tipo texto puro (geralmente txt) basicamente ficam disponíveis em três formatos que serão explicados a seguir: UNIX, DOS e MAC, mas antes você deve entender o que é o CR (\r) e o LF (\n).

CR ou \r significa Carriage Return
LF ou \n significa Line Feed

Na época das impressoras matriciais, quando você mandava imprimir algo, o caractere CR era entendido pela impressora como Retornar o carro (cabeça de impressão) para o começo da linha e o caractere LF era entendido como subir a folha de modo que a impressão fosse para a próxima linha.

Formato Característica Descrição
UNIX LF \n Um caractere apenas caracteriza a quebra de linha. Um LF (\n) faz o Unix entender que se deve mandar um CR para a impressora antes.
- Não é recomendado que um arquivo do formato UNIX seja aberto pelo Bloco de Notas do Windows porque os LF que não são precedidos por CR serão trocados por quadrados. Recomenda-se usar o Wordpad.
DOS CR+LF \r\n - Dois caracteres caracterizam a quebra de linha nesse formato. Tanto o DOS quanto o Windows precisam que os caracteres CR (\r) e LF (\n) estejam especificados no arquivo.
- Somente agora o Windows está inserindo automaticamente:
  – um caractere CR quando este não está precedendo o LF;
  – um caractere LF quando este não está sucedendo o CR;
  – O DOS não faz estes ajustes automáticos.
- Os editores de textos do Unix, geralmente em modo de depuração, exibem o caractere CR como ^M.
MAC CR \r Este formato foi usado somente nos antigos Macintoshes. A partir do Mac OSX o formato de arquivos padrão passou a ser UNIX também porque o Mac OSX é baseado em Unix, assim como o Linux. Os Macintoshes automaticamente inseriam um LF após um CR caso o arquivo fosse enviado para a impressora.
- Os editores de textos do Unix, geralmente em modo de depuração, exibem o caractere CR como ^M.
- Não é recomendado que um arquivo do formato MAC seja aberto pelo Bloco de Notas do Windows porque os CR que não são sucedidos por LF serão trocados por quadrados. Recomenda-se usar o Wordpad.

Vários editores de textos conseguem converter o arquivo de um formato em outro formato. Para o Windows existe alguns, como os gratuitos Win32Pad e o Notepad++. No Mac e no Linux usaremos o próprio Vim.

Se você ainda não conhece o básico do Vim [clique aqui].

Em modo de comando usaremos :set fileformat ou, simplesmente, :set ff.

:set ff=unix # Converte o arquivo para o formato UNIX.
:set ff=dos  # Converte o arquivo para o formato DOS.
:set ff=mac  # Converte o arquivo para o formato MAC.

# Lembre de salvar o arquivo depois.

Usando o vi / vim

O vim é um editor de texto para o Unix com muitos recursos avançados capazes de surpreender qualquer editor de texto gráfico, no entanto, não espere editar um documento do Word nele (a não ser que você já tenha feito a engenharia reversa dele :-D).

Com o vim você pode criar um arquivo ou abrir um arquivo com o comando:

vim meuarquivo.txt
# Se o arquivo existe, o vim o abrirá.
# Se não existe, o arquivo é criado ao ser salvo.

O vim possui dois modos, o de comando e o de edição. Quando você abre o vim, ele carrega o modo de comando.

Para alternar do modo de comando para o modo de edição pressione a tecla i (“I” de Igreja), você verá que no rodapé aparecerá a palavra INSERT. O vim dessa forma ficará igual ao Bloco de Notas, Edit e qualquer outro editor de texto tradicional.

Para voltar ao modo de comando pressione a tecla ESC, perceba que a palavra INSERT do rodapé desaparecerá.

É somente no modo de comando que poderemos salvar o arquivo e sair do vim.

Se quisermos salvar um arquivo (ou criá-lo se ele não existir), deveremos.
- Pressionar o ESC para ir ao modo de comando (se você não estiver nele);
- Digitar :w (comando de salvar o arquivo, abaixo está a tabela com mais comandos);
- Pressionar o ENTER para executar o comando de salvar.

Tabela com mais comandos:

:w  # Salva o arquivo (ou cria e salva se ele não existe).
:w! # Salva forçado o arquivo (ou cria e salva forçado se ele não existe).
:q  # Sai sem salvar, mas não sai se o arquivo ter sido editado antes.
:q! # Sai forçado do vim, mesmo não tendo salvo o arquivo.
:x  # Salva o arquivo e sai do vim.
:x! # Salva o arquivo forçado (ou cria e salva forçado) e sai do vim.
:w arquivo2.txt  # É o "Salvar como" dando o nome de "arquivo2.txt".
:w! arquivo2.txt # É o "Salvar como" forçado.
:r arquivo2.txt  # Insere (como um include) o conteúdo de "arquivo2.txt"
                 # no local em que o cursor estiver posicionado.

Neste blog você verá mais coisas sobre o vim.

Se quiser, também pode consultar a [documentação online do Vim].