Arquivos de Tags: Programação

[Vim] Fechando caracteres pares automaticamente no vi

Dica rápida para os vim users! Baixem o script que está nesse link, é copiem o script para o diretório:

/usr/share/vim/vim7x/plugin/

Pronto, só abrir seus código que com o script o vim vai autocompletar caracteres como: ‘(‘, ‘[', '{', ", ' entre outros :)

[]‘s

[Bash] Aprendendo a usar o bc + conversor de base

Segue abaixo o src de algumas funções que estava trabalhando hoje a tarde, elas efetuam a conversão de bases, como decimal para binário, octal para hexadecimal. Utilizei a “calculadora” bc para efetuar as conversões.

Não vou entrar muito nos detalhes sobre as funções. Só precisa compreender o funcionamento do bc. No caso pegaremos como exemplo a primeira função a bin2hex.

Utilizei as “” ao chama o bc de calculadora, pois o bc e bem mais que uma calculadora e um linguagem de programação (sim ele tem suporte a for, if-else, funções). Não vou entrar agora no por menores do bc, isso fica para um artigo no futuro. O bc possui algumas variáveis padrões ou especiais (como preferir), como por exemplo: ibase, obase, scala.

Para realizamos uma operação matemática com o bc basta jogar uma string contendo a operação para ele. por exemplo:

$ echo "2+2" | bc

Opa então se posso jogar uma string que ele resolve então é bem fácil de usar!

Lembram que falei agora pouco sobre as variáveis especiais que ele trabalha? Pois é delas iremos precisar somente de 2 a ibase e obase.

  • Na ibase, você define a base da entrada (por isso o i no inicio da variável, i vem de input significa entrada em inglês) ou seja se os números inseridos serão na base 10 (decimal), 2 (binária) e etc.
  • Na obase, você define a base da saída da operação, por exemplo se você deseja que o resultado da operação 2 + 2 não seja dado em base 10, seja dado em binário, então vai utilizar essa variável.

Então se resolvemos uma operação fazendo um echo “2+2″ | bc podemos setar a variáveis especiais via echo também! Por exemplo:

$ echo "ibase=16" | bc

Viram como e simples trabalhar com o bc? Agora que conhece o minimo dele podemos prosseguir. Existe outra forma de utilizar o bc, e atrás do próprio bc! Executando o bc temos acesso ao seu shell. O funcionamento dele não tem mistério basta digitar 1+1 e pressionar enter que ele vai jogar a resposta da operação na linha seguinte.

Opa temos algo interessante agora, se precisamos pressionar enter então precisamos jogar um \n pelo echo para o bc entender o comando passado. O echo já faz isso naturalmente, por default (padrão) ele salta uma linha ou seja u ultimo caractere que o echo escreve e um \n.

Se explorar mais um pouco o bc, vai perceber que as variáveis especiais precisam ser setadas um por linha! Então quando formos usá-las precisamos colocar somente uma por linha. Como fazemos isso pelo echo? Simples! Usamos o parâmetro -e do echo, ele permite que o echo utilize caracteres de controle como \t, \n, \r e etc.

Então vai ficar assim o echo:

$ echo -e "ibase=$ENTRADA\nobase=$SAIDA"

Setando ENTRADA=1 e SAIDA=2 teremos a seguinte saída:

v0rtex@0fx66:~/Source/shellscript$ ENTRADA=1
v0rtex@0fx66:~/Source/shellscript$ SAIDA=2
v0rtex@0fx66:~/Source/shellscript$ echo -e "ibase=$ENTRADA\nobase=$SAIDA"
ibase=1
obase=2

v0rtex@0fx66:~/Source/shellscript$ ENTRADA=10
v0rtex@0fx66:~/Source/shellscript$ SAIDA=2
v0rtex@0fx66:~/Source/shellscript$ VAR=30
v0rtex@0fx66:~/Source/shellscript$ echo -e "ibase=$ENTRADA\nobase=$SAIDA\n$VAR"
ibase=10
obase=2
30

Viram o resultado echo: Então agora que ele está bonito e o melhor de tudo no formato certo só joga a saída dele no bc.

v0rtex@0fx66:~/Source/shellscript$ ENTRADA=10
v0rtex@0fx66:~/Source/shellscript$ SAIDA=2
v0rtex@0fx66:~/Source/shellscript$ VAR=30
v0rtex@0fx66:~/Source/shellscript$ echo -e "ibase=$ENTRADA\nobase=$SAIDA\n$VAR"
ibase=10
obase=2
30
v0rtex@0fx66:~/Source/shellscript$ echo -e "ibase=$ENTRADA\nobase=$SAIDA\n$VAR" | bc
11110

Pronto, agora só usar a criatividade, eu transportei isso para um pequeno script.

 

########################
## CONVERSAO DE BASE  ##
########################

# bin2hex - Converte binario para hexadecimal.
function bin2hex () {
	echo -e "obase=16\nibase=2\n$1" | bc
}

# bin2dec - Converte binario para decimal.
function bin2dec() {
	echo -e "obase=10\nibase=2\n$1" | bc
}

# bin2oct - Converte binario para octal.
function bin2oct () {
	echo -e "obase=8\nibase=2\n$1" | bc
}

# dec2bin - Converte decimal para binario.
function dec2bin () {
	echo -e "obase=2\nibase=10\n$1" | bc
}

# dec2oct -Converte decimal para octal.
function dec2oct () {
	echo -e "obase=8\nibase=10\n$1" | bc
}	

# dec2hex - Converte de decimal para hexadecimal
function dec2hex () {
	echo -e "obase=16\nibase=10\n$1" | bc
}

# oct2bin - Converte octal para binario.
function oct2bin () {
	echo -e "obase=2\nibase=8\n$1" | bc
}

# oct2dec - Converte octal para decimal.
function oct2dec () {
	echo -e "obase=8\nibase=10\n$1" | bc
}

# oct2hex - Converte octal para hexadecimal.
function oct2hex () {
	echo -e "obase=8\nibase=16\n$1" | bc
}

# hex2bin - Converte hexadecimal para binario.
function hex2bin () {
	echo -e "obase=16\nibase=2\n$1" | bc
}

# hex2oct - Converte hexadecimal para octal.
function hex2oct () {
	echo -e "obase=16\nibase=8\n$1" | bc
}

# hex2dec - Converte hexadecimal para decimal.
function hex2dec() {
	echo -e "obase=16\nibase=10\n$1" | bc
}

Poderia otimizar o uso das funções passando a base original e a resultando por parâmetros, mas preferi dessa forma, não sei por que, mas achei mais divertido assim e melhor para praticar a sintaxe do bc + echo.

Bom por hoje e só pessoal, bom final de semana e excelentes estudos. É lembre-se o shell é poder!

[VI/VIM] Guia de consulta

Para quem tem dificuldade em decorar os comandos, sintaxes, machetes do vi/vim segue abaixo um excelente guia, recomendo imprimir e sempre deixa-lo do lado na mesa, no meu caso eu preguei embaixo do teclado :P

Guia vim

cheet sheet for vim

Isso sim e um cheet sheet para Vim

[]‘s

[Bash] Efeito matrix no bash

Abre o seu bash e execute o comando:

echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) ;sleep 0.05; done|gawk '{ letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'

É ainda tem gente que acha shellscript inútil…

[SED] Introdução ao sed

Introdução ao sed

Afinal o que é sed e para que ele serve? O sed é uma ferramenta muito interessante, considero junto com cut e tr as ferramentas mais sensacionais dos sistemas unix-like, ele nos permite substituir, remove, modificar, adicionar strings ou caracteres em determinadas posições. Complicou? Vamos simplificar então!

Imagine que você tem um texto enorme de 15 mil linhas e você precisa trocar todas as ocorrências da palavra chuchu por abacate! O que fazer? Vai tentar trocar termo por termo na mão? Obvio que você não é masoquista para tentar algo como isso.

O exemplo acima pode ser solucionado de uma forma muito simples, assumindo que o arquivo de 15 mil linhas se chama arquivo-sacana.txt vamos executar:

$ cat arquivo-sacana.txt| sed 's/chuchu/abacate/'

Explicando o comando assim:

$ → cifrão indica que você está logado com um usuário não root

cat → comando que exibi um arquivo-sacana

arquivo-sacana.txt → o arquivo que tem 15 mil linhas

| → joga o resultado do comando antes da | para o próximo comando, no caso o sed

sed – > o comando sed, dã

s/chuchu/abacate/ → aqui está a mágica!

Para realizamos trocas simples com sed, basta s/troca-isso/por-este/.

Pronto viram como foi simples? Nem tanto o comando acima faz algo que talvez não é o desejável, o que nos queremos e mudar TODAS as ocorrências da palavra chuchu por abacate então precisamos adicionar o parâmetro ‘g’ no final do sed ficando assim:

$ cat arquivo-sacana.txt| sed 's/chuchu/abacate/g'

Pronto agora toda vez que aparecer a palavra chuchu o sed irá mudar para abacate. Quando não executa com o parâmetro ‘g’ o sed vai apenas aplicar a mudança a primeira vez que a palavra chuchu aparecer na linha ou seja apenas na primeira ocorrências por linha.

Isso é apenas uma introdução ao uso do sed, afinal de contas é o começo da sessão sobre sed. Esse carinha é tão especial que vai ganhar até uma sessão só para ele.

[]‘s

Pagina 1 of 1212345678910Fim »
SEO Powered by Platinum SEO from Techblissonline