Search
Archives

You are currently browsing the archives for the Manipulação de Dados category.

Bookmarks

Archive for the ‘Manipulação de Dados’ 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.

TrueCrypt – Aumente a segurança das suas informações

O TrueCrypt é um utilitário que é capaz de montar volumes criptografados. Estes volumes podem ser partições ou arquivos e o suporte é tanto em modo texto quanto em modo gráfico.

Neste tutorial, mostrarei como utilizá-lo no modo gráfico:

Acesse a página do TrueCrypt e faça o download dele, conforme o sistema que você utiliza.

Talvez você esteja na dúvida para descobrir qual a arquitetura do seu sistema (32 bits ou 64 bits) rode o comando:

uname -a
# Algumas distribuições exigirão que você rode este comando como root

Se nessa informação conter x86_64 seu sistema é de 64 bits.
Se retornar i686, i586, i486 ou i386, seu sistema é 32 bits.
Qualquer informação diferente desta, é porque não há suporte ainda já empacotado, então você terá que baixar o source code para Mac OS X / Linux e compilá-lo.

Assim que estiver baixado, alterne seu usuário para o root para executar a instalação dele:

$ sudo su - root
# cd /home/DIRETÓRIO/QUE/VOCÊ/EXTRAIU/O/ARQUIVO
# chmod +x truecrypt-6.3a-setup-x86
# ./truecrypt-6.3a-setup-x86

Esta é a tela de instalação, basta concordar com o contrato e iniciar a instalação.

Pronto, agora é só executá-lo, abaixo está uma imagem de como localizá-lo no Ubuntu.

A seguir a tela do TrueCrypt, para criar um volume novo, clique no botão “Create Volume”.

Vamos usar o exemplo mais simples, o de criar um volume a partir de um arquivo criptografado.

Escolha o Standard TrueCrypt volume

Nesta tela, clique no botão Select File…

… escolha em qual pasta o arquivo ficará armazenado, e informe também qual será o nome do arquivo.

Aqui são os algoritmos de criptografia que este arquivo terá, quanto mais algoritmos forem implementados melhor (opção AES-Twofish-Serpent e Serpent-Twofish-AES).

E aqui estão os algorítimos de hash disponíveis, qualquer um deles podem ser escolhidos.

Escolha o tamanho desse arquivo. No exemplo está apenas 5MB porque o intuito é guardar apenas pequenos documentos e TXTs.

Aqui você define a segurança para acesso a este novo volume que você criará.

Você pode definir uma senha, ou se preferir pode usar um arquivo de chave. Como eu sou muito desconfiado, eu usei os dois :-D.

Clique no botão “Key files…” para criar um novo arquivo de chave, e na nova janela, clique no botão “Generate Random Keyfile…”

Você pode escolher qualquer tipo de algorítimo de hash também.

Agora é só clicar no botão “Generate and Save Keyfile…” e salvar o arquivo de chave.

Ao voltar na tela anterior, clique em “Close” para voltar para a outra janela, para clicar no botão “Add Files…”

Escolha o arquivo da chave que você acabou de salvar e clique em OK.

Obs: Se a senha que você colocar possuir poucos caracteres, o TrueCrypt chamará a sua atenção.

Estamos quase no final. Escolha o formato do volume, se for FAT ele ficará compatível com Windows, mas não será possível determinar as permissões e owner/grupo dos arquivos e diretórios dentro do volume. Escolhendo EXT2 ou EXT3, somente os sistemas em Linux conseguirão ler este arquivo caso ele seja portado para outros computadores. O formato EXT3 é o mais confiável de todos.

Essa tela aparece se você não escolher o FAT, se você escolher a primeira opção ele vai voltar à tela anterior e sugerir que você mude o formato para FAT.

Nessa parte, passe o cursor do mouse sobre a janela para ele mudar o hash do volume, quanto mais você passar o mouse, mais ele vai mudar :-D

E finalmente, clique no botão “Format”. A senha de root do seu computador será solicitada.

Aqui é só clicar em Exit.

De volta à janela principal, clique em “Select File…” e escolha o arquivo de volume que você acabou de criar.
Clique em um dos números acima e em seguida no botão “Mount”.

Uma janela aparecerá pedindo que você digite a senha e/ou especifique o arquivo de chave. Neste exemplo, você terá que especificar tanto a senha quanto o arquivo de chave. Clique em “Keyfiles…” para usar o arquivo de chave que você criou.

Se o caminho do arquivo aparecer na linha correspondente ao número que você clicou, é porque seu volume foi montado com sucesso.

A partir daí ele fica acessível como um volume montado igual a qualquer outro dispositivo, como pen drive.

Para desmontar o volume basta clicar em Dismount.

Acertando a data e a hora

Com conexão à internet:

É bem mais fácil. Com o usuário root rode:

ntpdate -u IP_ou_HOST_do_SERVIDOR_NTP

Você pode usar qualquer servidor NTP, a seguir estão os três do NTP.br:

a.ntp.br
b.ntp.br
c.ntp.br

Exemplo:

ntpdate -u a.ntp.br

Sem conexão à internet:

É um pouco mais complicado. Com o usuário root rode:

date MMDDhhmmAA

Onde:
MM: Dois dígitos do mês
DD: Dois dígitos do dia
hh: Dois dígitos da hora
mm: Dois dígitos do minuto
AA: Dois dígitos do ano

E finalmente use o comando a seguir para salvar as alterações:

date -w

Um exemplo: Acertar para 23:45 do dia 15 de novembro de 2011.

date 1115234511
date -w

Veja como redefinir a senha de root caso a tenha esquecido (Red Hat, Fedora e distribuições baseadas).

Caso você precise recuperar a senha de root e não há mais forma de se logar com este usuário, nem usando o sudo su, ainda existe uma salvação:

Assim que você ligar o computador você irá para a tela de inicialização do Grub, escolha a opção que você costuma usar (como na imagem abaixo, usamos o exemplo do CentOS) e pressione a tecla E.
Como recuperar a senha de root no Red Hat

Escolha a opção do Kernel (imagem abaixo) e pressione E novamente.:
Como recuperar a senha de root no Red Hat

Acrescente no final a palavra single igual à imagem a seguir, e pressione o Enter em seguida:
Como recuperar a senha de root no Red Hat

Com isso você voltará à tela anterior mas com o parâmetro já editado, agora é só pressionar a tecla B:
Como recuperar a senha de root no Red Hat

Com o Linux carregado, basta rodar o comando passwd e definir a nova senha de root:
Como recuperar a senha de root no Red Hat

Agora reinicie seu computador e deixe-o carregar normalmente.

Veja como redefinir a senha de root caso a tenha esquecido (Debian, Ubuntu e distribuições baseadas).

Caso você precise recuperar a senha de root e não há mais forma de se logar com este usuário, nem usando o sudo su, ainda existe uma salvação:

Assim que você ligar o computador você irá para a tela de inicialização do Grub, escolha a opção que você costuma usar (como na imagem abaixo, usamos o exemplo do Debian) e pressione a tecla E.
Como recuperar a senha de root no Debian

Escolha a opção do Kernel (imagem abaixo) e pressione E novamente.:
Como recuperar a senha de root no Debian

Substitua ro por rw e acrescente no final init=/bin/bash igual à imagem a seguir, e pressione o Enter em seguida:
Como recuperar a senha de root no Debian

Com isso você voltará à tela anterior mas com o parâmetro já editado, agora é só pressionar a tecla B:
Como recuperar a senha de root no Debian

Com o Linux carregado, basta rodar o comando passwd e definir a nova senha de root:
Como recuperar a senha de root no Debian

Agora reinicie seu computador e deixe-o carregar normalmente.

Recortar, Copiar e Colar no VI / VIM

O Recortar também pode ser usado como Apagar.

Todos os comandos abaixo funcionam somente em modo de comandos (pressione ESC a qualquer momento para alternar para o modo de comando).

Copiar uma linha inteira:
Posicione o cursor sobre a linha desejada e pressione yy, esse comando copia a linha para a área de transferência do vim.

Recortar uma linha inteira:
Posicione o cursor sobre a linha desejada e pressione dd, esse comando move a linha para a área de transferência do vim.

Colar o conteúdo da área de transferência:
Pressione p.

Você também pode copiar ou recortar as linhas que estão acima ou abaixo também.

Copiar a linha atual e mais as dez linhas abaixo:
Posicione o cursor sobre a primeira linha desejada e pressione y, digite 10 e pressione seta para baixo.

Recortar a linha atual e mais as quinze linhas acima:
Posicione o cursor sobre a última linha desejada e pressione d, digite 15 e pressione seta para cima.

Salvando o resultado de um comando (sem erros e com erros juntos e separados) em arquivos.

Supondo que queiramos salvar em arquivo o resultado de “ls -l um_diretório”:

Salvando sem nenhuma mensagem de erro:

ls -l um_diretorio > resultado.txt

Você não verá nada na tela a não ser erros (se houverem, nesse caso, diretório não encontrado ou problema de permissão nele), pois tudo o que o comando acima deveria exibir na tela será salvo no arquivo “resultado.txt”.

Salvando os erros (se houverem) no mesmo arquivo:

ls -l um_diretorio > resultado.txt 2>&1

Nada será mostrado na tela, nem os erros, porque o argumento 2>&1 converte mensagens de erros em saídas normais e depois salva todo o resultado no arquivo “resultado.txt”.

Salvando os erros (se houverem) em um arquivo separado:

ls -l um_diretorio > resultado.txt 2>erros.txt

Salva o resultado do comando (sem erros) no arquivo “resultado.txt” e salva os erros no arquivo “erros.txt”. Comandos como o “find” podem retornar saídas normais e erros durante a sua execução, então esse exemplo te ajuda a filtrar todas as saídas válidas e os erros retornados por esse comando.

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.