Archive for janeiro, 2008

Cores

janeiro 19, 2008

0    Reset atributos
1    Brilhante
2    Dim
4    Underline
5    Piscante
7    Reverso
8    Oculto

Cores de Frente
30    Preto
31    Vermelho
32    Verde
33    Amarelo
34    Azul
35    Magenta
36    Cinza
37    Branco

Cores de Fundo
40    Preto
41    Vermelho
42    Verde
43    Amarelo
44    Azul
45    Magenta
46    Cinza
47    Branco

Usando:

export GREP_OPTIONS=”–color=auto”
export GREP_COLOR=”2;32″

export LS_COLORS=$(echo $LS_COLORS |perl -lne ‘s/fi=00/fi=01/g; print’)
export LS_COLORS=$(echo $LS_COLORS |perl -lne ‘s/deb=01;31/deb=02;32/g; print’)

Divertido!

Anúncios

I/O

janeiro 5, 2008

Os macros de acesso das portas I/O (entrada e saída), estão descritos no arquivo io.h , geralmente em /usr/include/asm. Neste biblioteca encontra-se as rotinas necessárias para a acesso as portas de seu PC.

A chamada ioperm(), declarada em unistd.h, quando executada por um programa, necessita de privilégios de root. Para execução deste exemplo, você precisa ter estes privilégios na execução do programa gerado, por isso cuidado com o que você vai criar.

A sintaxe do ioperm() é:

ioperm(porta, número, permissão)

Onde:

porta : é a porta
número: é o número consecutivo de acesso a porta, por exemplo:
  ioperm(0x170,2,1)
Você terá acesso a porta 0x170 até 0x172, ou seja, terá acesso a 3 portas.
permissão: é especificado para se dar permissões do programa a portas (true(1), false(0)).

Uma outra forma de se acessar as portas é por meio da chamada open(), informando o endereço da porta (/dev/porta).

/proc/ioports

No arquivo /proc/ioports, estão descritas os endereços das portas em seu computador, nesse caso para saber o endereço de sua porta paralela:

cat /proc/ioports | grep parport

Isso irá exibir algo como:

0378-037a : parport0

Com esse dado, sua porta paralela esta em: 0x378.

Obtendo status de sua porta:

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>
#include <stdlib.h>

#define PORTA 0x378 /* usando a porta pararela */

int main ()
{
/* obtendo acesso a porta */
if (ioperm(PORTA, 3, 1))
{
perror(“Erro na chamada ioperm()”);
exit(1);
}

/* obtendo status da porta */
printf (“Status da Porta é %d \n”, inb(PORTA+1));

return(0);
}

Devido algumas restriçoes do gcc na compilação é necessário passar parametros de otimização (-O2), por exemplo:

gcc -O2 -o porta porta.c

As vezes eu me arrependo de nunca ter feito eletrônica, mas René Descartes fala em um de seus livros, para ser um bom filosofo nunca faça filosofia. Se levar para o lado da informatica, então estou no caminho certo.

Opções de linha de comando do Perl

janeiro 5, 2008

Aqui vai algumas dicas de como utilizar o perl em linha de comando de forma a facilitar o seu dia-a-dia.

perl -e ‘ print “Olá Mundo \n”; ‘

-e permite a execução de programas em linha.

perl -le ‘ print ( 1 + 1 ); ‘

-l adiciona uma nova linha no final.

Substituindo textos em arquivos

perl -i -pe ‘s/termoum/termodois/g’ arquivo.txt

-i edita arquivos locais, inclusive arquivos de backup .bak

-p assume loop como o -n, porém imprime linhas também; como o sed

perl -n

-n assume “while (<>) { … }” entrando em looping

Utilize -pe ou -ne  se desejar que os dados sejam impressos na saída padrão ou não.

Aqui iremos imprimir as primeiras colunas do arquivo /etc/passwd

perl -F: -lane ‘print $F[0]’ /etc/passwd

-a permite a divisão para um array @F

-F separa por um delimitador

$F[n] array “contendo colunas”

echo “zero um dois tres quatro” |perl -lane ‘ print $F[0]; ‘

echo “zero um dois tres quatro” |perl -lane ‘ print @F[0..2]; ‘

echo “zero um dois tres quatro” |perl -lane ‘ print @F[0,4]; ‘

Checando a sintaxe de um script em perl

perl -c script.pl