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™.
É 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 |
| 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 |
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].

