You are on page 1of 27

Mtodos Computacionais da Fsica I (FIS1005)

AULA 1: comandos UNIX e programas bsicos

Mini-info de comandos UNIX e programas (mail, editores) SUGESTO: a melhor maneira de aprender testar cada comando no micro. A esquerda do <- o comando, a direita do <- o que ele faz, em itlicoos argumentos.
Vrios: date who finger nome ping mquina clear locate file which comando du -h dir

coloca

Comandos de arquivos: ls <- listagem do diretrio ls -l <- idem com mais informao ls --color <- idem com esquema de cores ls -a mkdir cd pwd cd cd rmdir cp rm rm

d data e hora diz quem est logado d informaes do usurio nome informa se mquina est acessvel na rede limpa a tela mostra todos os arquivos do disco onde aparece file responde onde (em que diretrio) se encontra comando <- lista o espao ocupado pelos diretrios abaixo do dir, a opo -h os volumes em formato "legvel para humanos".
<<<<<<<-

dir dir .. ~

(diretrio: azul, executveis: verde, etc) <- mostra arquivos ocultos do sistema (os .*) <- cria o diretrio dir <- troca para o diretrio dir <- responde onde voc est (qual diretrio) <- volta ao diretrio que est em cima <- vai para o nosso diretrio de partida: /home/eu
<- apaga o diretrio (se ele estiver vazio) <- copia o arquivo file1 no file2 <- apaga o file <- PERIGO! Apaga tudo o que est no dir

dir file1 file2 file *

rm *.dat rm -i *

diretrio, melhor usar <- que apaga s os .dat <- apaga tudo no diretrio atual, mas perguntando

antes
cp file1 dir/file2 <- copia file1 no file2 no diretrio dir mv file1 file2 <- troca o nome de file1 para file2 mv file dir/ <- coloca o file no subdiretrio dir cat file <- mostra o contedo de file more file <- tambm, mas pgina por pgina O more pode ser usado para mostrar qualquer coisa na tela, uma pgina por Exemplo: se ls -l d muita informao, pode-se usar more. A aparece a

vez.

primeira pgina e espera por mais (dar <space> para continuar, <enter> avana uma linha, <q> para sair ou <ctrl>+<c> para interromper). ls -l | more <- d o diretrio atual pgina x pgina
Mais sobre arquivos: sort file <wc file <tail file <head file <diff file file1 <split file <lpr file <-

ordena alfabeticamente o arquivo file conta as linhas, palavras e bytes do arquivo file mostra as ltimas 10 linhas de file mostra as primeiras 10 linhas de file compara e mostra as diferenas entre file1 e file2 separa file em pedaos iguais imprime file

Programas:
Correio Eletr.: mutt <enter> d <enter> q <enter> <- para ler e responder, e depois <- vai mostrando as mensagens <- apaga a mensagem <-sai, apaga as

...

marcadas com "d" e pergunta sobre a mbox. x <enter> <- caso mude de idia (sai sem tocar nada) r <enter> <- para responder g <enter> <- para responder para um grupo de pessoas da mensagem original inclusive voc mutt fulano@dominio.rede <- mensagem para fulano@dominio.rede e depois responda
Subject: assunto abre o "vi" para escrever a mensagem .. .. :wq para fechar o "vi"

envia a mensagem cc: se quiser mandar para mais algum


mutt fulano@dominio.rede < file fulano@dominio.rede <-

manda o arquivo file para

Este ltimo prtico quando a mensagem j est escrita. Mas use apenas quando sua mensagem for apenas texto! Tambm existem pine, mail, exmh, evolution ou mozilla-thunderbird para gerenciar correio de maneira mais amigvel. Porm, bom saber o bsico do simples mutt porque ele pode ser usado em qualquer mquina com Unix ( ou Windows via um programa de ssh como o putty ) a partir de qualquer lugar. exmh e mozilla-thunderbird precisam de uma interface grfica e o ltimo muito lento para se fazer remotamente.
Editores:

H o emacs que fornece um ambiente especializado por tarefa ( manual mnimo em html ou nos formatos pdf e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/). H tambm editores mais simples como jed, verso reduzida do emacs, e o pico, o mesmo usado pelo pine para escrever as mensagens. Porm o velho e simples vi funciona em qualquer Unix partir de qualquer lugar.
vi: vi a <esc> <<<-

/palavra <enter> <x <dd <:w <:q <:q! <:wq <Voltando a comandos: write colega <- estabelece man

chama o vi e depois ... para inserir texto para desativar a funo Ou seja no vi voc no pode comear a digitar sem antes fazer digitar a para procurar palavra para apagar por letra apaga uma linha para salvar para sair para sair sem salvar para sair salvando

comunicao on-line com o colega, se estiver logado na mesma mquina comando <- d informao a respeito do comando

Comandos especiais
grep: grep kk file <-

verifica se tm kk no arquivo file

Muito til quando se procura aquele arquivo perdido com um dado assunto. Exemplo: voc no sabe qual o arquivo com o relatrio sobre "decaimento", ento digita: grep decai * <- que vai mostrar os arquivos (se tiver algum), contendo a palavra decai . Se voc procura duas palavras juntas deve usar aspas.
grep "pi =" *.tex <-

mostra os arquivos *.tex contendo pi =


<-

sed: sed 's/word1/word2/g' file

troca word1 por word2 no arquivo file. O resultado vai para a tela sed 's/word1/word2/g' file > file2 <- faz o mesmo salvando o resultado no arquivo file2
vrios: echo alo, alo <-

um eco mesmo, devolve o que se manda para ele

cal cal 2000 comunicao: ssh mquina

<<<-

mostra um calendrio, teste agora e ver aqui ter o ano inteiro

programa para entrar em mquina e fazer sesso remota para troca

scp

mquina pode ser um nome ou um nmero (ex pclief10.if.ufrgs.br) mquina:arquivo-remoto arquivo-local <- comunicao password: xxxxx

de arquivos
NOTA:

por questes de segurana o telnet e ftp esto sendo desativados. Em seu lugar o ssh e o scp so usados, (a senha transmitida encriptada).

comandos do ftp (ou sftp: dir <- mostra o diretrio remoto bin <- ativa modo binrio para transmisso de arquivos binrios put <- transmite do diretrio local ao remoto get <- puxa do diretrio remoto ao local prompt <- desativa o modo interativo permitindo a transmisso de vrios

arquivos de uma so vez mput <- ativado o prompt permite usar * para transmitir vrios arquivos mget <- idem para puxar
monitoramento de processos: ps x <- mostra seus processos, incluindo ssh, etc ps aux <- o mesmo do sistema todo top <- o mesmo com mais informao kill -9 <- mata o processo que no est dando certo compactado e armazenado de arquivos: gzip file <- comprime os arquivos tar cvf todos_meus_dados.tar *.dat arquivos (no exemplo todos os .dat) tar cvfz todos_meus_dados.tgz *.dat

<<<<-

arquiva um conjunto de faz o mesmo criando um desarquiva (explode) o faz o mesmo de um arquivo

arquivo ja comprimido
tar tar xvf todos_meus_dados.tar xvfz todos_meus_dados.tgz <<<<-

conjunto de dados comprimido


chmod +x file ln -s file dir/ alias alias dir='ls -l --color'

d a file permisso para ser executado cria um atalho (link) de file no diretrio dir/ mostra os alias que esto definidos define um alias

Caracteres de significado especial no UNIX > redirecionando a sada padro (tela) < redirecionando a entrada padro (teclado) >> adicionando a sada padro um arquivo existente | pipe (duto) passa a sada padro de um comando para o prximo & coloca o programa em "background" devolvendo controle do terminal $ para referir-se a variveis

Programas de uso corrente: (requerem de sesso grfica -> startx) xterm <- abre um terminal de comandos rxvt <- o mesmo com outra aparncia latex exemplo.tex <- programa que compila

xdvi dvips exemplo.ps gview exemplo.ps exemplo.ps) xv tif, gif, jpg, etc xfig <-

um exemplo.tex (verifica se no tem erros, etc) e gera um arquivo exemplo.dvi exemplo.dvi <- visualiza um latex que foi compilado sem erros exemplo.dvi -f exemplo.ps <- transforma o exemplo.dvi em
<<-

visualiza um arquivo postscript (ex: visualizador de arquivos grficos:

programa para fazer desenhos simples (tipo paintbrush programa para fazer grficos (2 e 3 dimenses, e programa para fazer grficos com interface amigvel, programa para tratamento de imagens gerenciador de arquivos, tipo norton de win gerenciador de arquivos com transferncia via ftp interface tipo netscape para help programa navegador
ex.f -o ex <<-

do win)
gnuplot <<<<<<<-

animaes)
xmgr

menus)
gimp mc fr kdehelp netscape

g77 (ou f90 para fortran 90) o ex.f e cria um executvel ex gcc (ou cc) ex.c -o ex o executvel ex

compilador fortran: compila

compilador c: compila o ex.c e cria

Verso original: Sebastin Gonalves Reviso em 15/03/2005 : Leonardo Gregory Brunnet.

Netstat
Origem: Wikipdia, a enciclopdia livre.

O ttulo dado a este artigo encontra-se incorrecto devido a limitaes tcnicas. O ttulo correcto netstat . netstat (network estatistic) uma ferramenta, comum ao Windows, unix e Linux, utilizada para se obter informaes sobre as conexes de rede (de sada e de entrada), tabelas de roteamento, e uma gama de informaes sobre as estatisticas da utilizao da interface na rede. Netstat.exe linha de comando que mostra todas as portas abertas para: Transmission Control Protocol (TCP) e User Datagram Protocol (UDP).

ndice

1 Sintaxe 2 Exemplo 3 Ver tambm

4 Ligaes

externas

Sintaxe
NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] onde:

-a. Mostra todas as conexes e portas abertas (listening ports) -e. Mostra as estatsticas da Ethernet. Este comando pode ser combinado com a opo -s. -n. Mostra o endereo e o nmero de portas na forma numrica. -p proto. Mostra as conexes para o protocolo especificado pelo proto; proto pode ser TCP ou

UDP. Se usado com a opo -s para mostrar por estatstica do protocolo, proto pode ser TCP, UDP ou Internet Protocol (IP)

-r. Mostra a tabela de rotas (routing table) -s. Mostra por estatstica de protocolo . Por padro, as estatsticas so mostradas por TCP, UDP e

IP; A opo -p pode ser usada para especificar um subconjunto padro

interval. Mostra novamente as estatsticas selecionadas, pausando interval segundos entre cada

display. Use CTRL+C para interromper. Se omitido, Netstat mostrar a informao corrente em uma nica vez.

Exemplo
Exemplo de netstat para informaes sobre estatisticas:

netstat -s -p tcp netstat -s -p udp netstat -an |find /i "listening" //Portas a escuta netstat -an |find /i "established" //Portas com ligao estabelecida netstat -an |find /i "3306" //Definir porta especfica "3306"

Unix: Conceitos e Comandos Bsicos


Este documento um tutorial de introduo ao Unix. fundamentalmente prtico, e deve ser acompanhado por testes e exerccios. Para no tornar o texto pesado, fugiu-se da exausto, por isso as descries dos comandos so sempre parcias, e devem ser completadas pela documentao on-line da plataforma em uso.

Contedo

Ligando e Desligando a Mquina Manipulando arquivos e diretrios Shell Scripts Variveis de Environment Uso de Metacaracteres Uso de Expresses Regulares Manipulando processos Configurando o terminal Diretrios Principais do Sistema Atributos e Nomes de Arquivos Intercambiando Disquetes com o MS-DOS O Kernel Redirecionamento da Entrada e da Sada; Pipes Comunicao Serial e Paralela Configurao do TCP/IP Servios TCP/IP Disparo do Xwindows e das suas aplicaes Procedimentos de boot e o init Referncias

Ligando e Desligando a Mquina


Salvo orientao especfica do hardware em uso, ligar uma mquina Unix no costuma envolver maiores detalhes do que o acionamento de um boto liga/desliga no console da mquina e uma eventual interveno humana logo em seguida, solicitando o boot efetivo do sistema a partir de um menu de opes.

O boot costuma gerar uma razovel quantidade de mensagens que aparecem no console da mquina. Normalmente elas referem-se aos diferentes estgios do reconhecimento e inicializao do hardware. interessante conhec-las, no obstante, salvo contingncias, podem ser ignoradas at que surja o prompt ou a janela de login. O desligamento um processo mais delicado. O Unix utiliza parte da memria principal como cache de disco, a fim de acelerar as operaes de leitura e gravao de arquivos. Antes de se desligar a mquina, necessrio assegurar que os discos estejam sincronizados com o cache, o que feito pelo comando sync, que deve ser precedido do encerramento de todos os processos, a fim de que no ocorra uma dessincronizao em seguida. Todos esses passos so tomados pelo comando shutdown:
$ shutdown -y -g 1 -i 5 $ shutdown -h now (Solaris) (Linux)

Em sistemas baseados em PC, o shutdown por vezes acionvel atravs do ctrl-alt-del.

Manipulando arquivos e diretrios

O shell o programa que l e executa os comandos que voc passa a digitar logo aps logar no sistema, como cd ou ls. Via de regra voc estar usando o Bourne shell (sh), ou o C shell (csh), ou aperfeioamentos desses, como o Korn shell (ksh) ou o Bourne again shell (bash). Via de regra voc poder descobrir qual deles est usando ao executar um ps ou um finger com o seu username com argumento. Obsoleta ou no, a interface de linha de comandos possui caractersticas ainda no suficientemente reproduzidas nas interfaces grficas, como a possibilidade de uso remoto com baixa banda, e a programabilidade. No caso do Unix, h ainda a vantagem dela estar melhor estandardizada que as interfaces grficas. Em boa parte dessas notas estaremos nos referindo interface de linha de comandos, mas abordaremos tambm a interface grfica ao final. Vejamos alguns tpicos comandos dos sistemas Unix-like:
cat [-r] arquivo1 arquivo2 ...

Concatena os vrios arquivos, na ordem especificada, copiando o resultado para a sada padro. Se no houver argumentos, copia a entrada padro para a sada padro.
cd diretrio

Troca o diretrio corrente para o diretrio especificado, ou para o diretrio home, se no houver argumento.
cp [-r] argumento1 argumento2 ...

Copia um ou mais arquivos, trocando seu nome ou criando a cpia num outro diretrio, conforme a quantidade e o tipo dos argumentos. Se o primeiro argumento for um diretrio, faz uma cpia recursiva de toda a subrvore iniciada nele, desde que a opo -r (recursive) tiver sido especificada.
chmod nnn argumento1 argumento2 ...

Troca os atributos do(s) argumento(s) para nnn (veja atributos de arquivos). Ao invs de nnn, a alterao pode ser especificada por exemplo como a+r ou g-w (a, g e o significam all, group e owner; + significa adicionar e - remover; r,w, x e s indicam respectivamente atributos de leitura, escrita, execuo e setuid).
ls [-la] diretrio1 diretrio2 ...

Lista o contedo do(s) diretrio(s) especificado(s), ou do diretrio corrente se no houver argumento. Opes principais: -a Inclui arquivos com nome iniciado por ``.'' (tais arquivos normalmente armazenam configuraes de aplicativos). -l Formato longo (veja atributos de arquivos).
ln -s argumento1 argumento2

Cria um link simblico cujo nome o primeiro argumento, apontando para o segundo argumento. A opo -s no pode ser omitida, ou o link criado ser um hard link, ao invs de simblico.
man [-k] nome

Invoca a man-page associada ao nome, ou exibe uma lista das man pages associadas ao nome, no caso da opo -k (de key) ter sido especificada. As man pages Unix so referncias tcnicas sumrias por vezes difceis de compreender. Elas so exibidas atravs do more ou de algum outro paginador semelhante, por isso os comandos do more indicados mais adiante valem para a leitura de man pages, e so teis para ajudar a localizar informaes dentro de uma man page. As man pages so divididas em sees, que tradicionalmente so referidas atravs de parnteses. Por exemplo, a man page shutdown(2) a man page do system call chamado shutdown, ao passo que a man page shutdown(8) a man page do comando administrativo shutdown. Alm dessas, a seo 1 contm manuais de comandos comuns, a 3 contm manuais de servios de bibliotecas, a 4 descreve device special files, a 5 descreve formatos de arquivos de configurao, a 6 os jogos eventualmente instalados, e a 7 contm tudo o mais que no couber nas anteriores.
mkdir diretrio1 diretrio2 ...

Cria os diretrio(s) especificado(s).


more arquivo

Exibe de forma paginada o arquivo especificado, ou a entrada padro no caso de no haver argumento. Aceita vrios comandos, entre eles
ESPAO, C-b Avana/recua uma pgina. / Busca. ? Exibe relao de comandos.
mv argumento1 argumento2

Renomeia o primeiro argumento, que pode ser um arquivo ou um diretrio, para o nome dado como segundo argumento. Se ao tentar executar esse comando a mensagem de erro cannot move across filesystems for exibida, porque a origem e o destino esto em filesystems diferentes. Nesse caso deve-se copiar a origem para o destino usando cp, e depois remover a origem com rm.
rm [-r] argumento1 argumento2 ...

Remove os arquivo(s) especificado(s). Se um argumento for um diretrio, remove toda a subrvore iniciada nele, desde que a opo

-r (recursive) tenha sido especificada. Via de regra no h modo em sistemas Unix-like de recuperar (undelete) um arquivo removido.
rmdir diretrio1 diretrio2 ...

Remove os diretrio(s) especificado(s), desde que estejam vazios.


vi arquivo

O vi uma ferramenta obsoleta, mas est est presente em virtualmente qualquerr plataforma Unix-like, e constitui por vezes a nica alternativa para edio de arquivos, por isso convm conhec-lo ao menos de forma minimal. No uso quotidiano, entretanto, normalmente preferir-se- outras ferramentas, como o emacs ou o pico ou outras.
h, j, k, cursor para esquerda/baixo/cima/direita. l Pgina seguinte/anterior. C-f,C-b Remove caracter atual/anterior. x,X Remove n linhas (default 1). [n]dd Entra/sai do modo insero. i,ESC Insere aps caracter atual/final da linha. a,A Concatena linha seguinte atual. J entra comando, entre eles w (salva), q (sair) e / (busca). :
wc arquivo1 arquivo2 ...

Obtm o total de linhas, palavras e caracteres de cada um dos arquivos estipulados, ou da entrada padro no caso de no haver argumentos.

Shell Scripts
Seqncias de comandos que se necessita repetir com grande frqncia podem ser colocados num arquivo que, ao ser ``executado'', ocasiona o disparo de cada um dos comandos da seqncia, na ordem indicada. Um arquivo desses um shell script, cujo equivalente no MS-DOS so os arquivos ``.BAT''. Mesmo que nunca se escreva nenhum, com certa freqncia necessrio analisar shell scripts a fim de elucidar o modo de uso de determinados comandos, ou de realizar diagnsticos. Suponhamos por exemplo que voc no se lembre como usar um comando chamado xpatgen, mas esteja com um shell num diretrio que contm scripts, que usam entre outros o xpatgen. Basta ento buscar ocorrncias dele nos scripts:
$ grep xpatgen * patgen: xpatgen -cal_bl

Com isso sabemos que o script patgen executa o xpatgen, e relembramos o modo de executar esse comando, o que talvez j seja suficiente para a necessidade do momento. Shell scripts utilizam com freqncia de variveis de environment e de parmetros de linha de comando. Assim, se ao analisar um script voc se deparar com algo como $HOST, lembre-se de que nesse ponto ser substitudo o valor da varivel HOST, e que $1 significa o primeiro parmetro da linha de comandos, $2 o segundo, e assim por diante.

Variveis de Environment
Alm dos parmetros de linha de comandos como -l ou outros, pode-se tambm passar parmetros a um programa atravs do uso de variveis de environment. As mais comuns so:

PATH - Lista os diretrios (separados por ``:'') onde os executveis sero procurados, tipicamente /bin, /usr/bin e /usr/X11/bin, entre outros. TERM - Tipo do terminal, por exemplo xterm ou vt100 (veja Configurando o Terminal). DISPLAY - Display default para as aplicaes Xwindows.

Para exibir o valor de uma delas pode-se usar echo, antepondo o operador $ ao nome da varivel, por exemplo:
$ echo $TERM

Existem dois estilos de atribuio de valores a variveis de environment, o do Bourne shell, usado pelo sh, ksh e bash:
$ TERM=vt100; export TERM % setenv TERM vt100

e o do C shell, usado pelo csh e pelo tcsh:

Uso de Metacaracteres
O metacaracter mais utilizado provavelmente o ``*''. Por exemplo,
$ rm *

ir remover todos os arquivos do diretrio corrente. necessrio prestar ateno a dois detalhes quando se usa metacaracteres:
1. O caracter ``.'' no tem o significado de separador entre nome e sufixo que possui no MS-DOS, por isso ``*.*'' significa todos os arquivos em cujo nome ocorre ao menos um ponto. 2. A expanso do metacaracter feita pelo shell, e no pela aplicao, por isso o comando

$ mv *.txt *.bak

no ir surtir o efeito esperado de renomear todos os arquivos que terminam com ``.txt'' para ``.bak'' (para essa operao deve-se usar o comando for).
Os shells Unix aceitam tambm o metacaracter ``?'', que significa qualquer caracter e tambem intervalos, como [0-9] (qualquer dgito decimal), entre outros.

Uso de Expresses Regulares


Aplicativos Unix via de regra aceitam expresses regulares como argumentos de busca. Os usos mais freqentes delas so bem ilustrados atravs do aplicativo grep. Nos casos abaixo ele ser utilizado para buscar uma dada expresso em todos os arquivos do diretrio corrente: 1. Busca de ocorrncias de algum dos anos da dcada de 80:
$ grep "198[0-9]" *

2. Busca de uma ocorrncia da palavra "yellow" seguida de uma ocorrncia da palavra "page", separadas por zero ou mais caracteres quaisquer:
$ grep -i "yellow.*page" *

3. Busca de uma das palavras "roget" ou "thesaurus":


$ grep -i "roget\|thesaurus" *

A sintaxe das expresses regulares pode variar um pouco, dependendo da plataforma e da ferramenta. Via de regra as diferenas consistem em proteger-se ou no alguns caracteres especiais, e nas extenses que algumas ferramentas introduzem. Note por exemplo, o uso do egrep, em comparao com o uso do grep acima:
$ egrep -i "roget|thesaurus" *

Via de regra todas as ferramentas Unix que lidam com texto, como o more, o sed, e o vi, entre outros, aceitam expresses regulares como argumento de buscas.

Manipulando processos
Um processo um programa em execuo. Num computador que possui apenas uma cpu, na verdade apenas um processo pode estar sendo executado em cada instante. O que se faz executar um processo durante uma frao fixa de segundo, congel-lo e passar a executar um outro, e assim por diante, criando a iluso de simultaneidade. Atravs do comando ps pode-se examinar os processos correntes. Por exemplo:

$ ps PID TTY STAT 45 v02 S 105 v02 R

TIME COMMAND 0:00 -bash 0:00 ps

O ps em geral omite muitos processos a fim de exibir uma sada limpa. Atravs das opes a e x (ou e no Solaris), pode-se exibir todos os processos correntes. O nmero de um processo usado, por exemplo quando necessrio interromper prematuramente a sua execuo, atravs do comando kill. A finalidade primria do comando kill no matar um processo, mas enviar um sinal para ele. O Unix possui diversos sinais predefinidos, como SIGHUP, SIGPIPE, SIGTERM, etc. O atendimento a um sinal entretanto responsabilidade do processo, ou do programador que fez o programa, e por isso a forma com que cada processo reagir a cada sinal poder variar. A fim de se interromper a execuo de um processo, deve-se enviar para ele o sinal SIGKILL:
$ kill -SIGKILL 45 $ kill -9 45

As duas formas acima em geral so equivalentes (o nmero associado a cada sinal pode variar com a plataforma). O caracter ``&'' colocado ao final da linha de comandos instrui o shell para disparar o comando em background, a fim de que se possa continuar usando o shell mesmo antes desse comando encerrar a sua execuo. O comando nice faz com que um processo seja disparado com baixa prioridade.
$ nice gzip -9 *

O comando nohup faz com que o processo sendo disparado se torne imune ao sinal SIGHUP. Em combinao com o &, ele permite o disparo de programas que permanecero em execuo mesmo aps o logout do usurio. Exemplos:
$ nohup gzip -9 * &

Atravs do comando at pode-se programar a execuo de um comando para um horrio determinado. Por exemplo:
$ at now + 1 minute ls ctrl-d

O comando ls ser dessa forma executado daqui a um minuto. Note que na linha seguinte do comando at o que se escreve na verdade um shell script, terminado com control-d. Ao invs de digit-lo, poder-se-ia l-lo de um arquivo atravs do redirecionamento da entrada:
$ at now + 1 minute <meuscript

A execuo peridica de um comando se faz atravs do cron, que disparado no boot do sistema e monitora as tabelas de execuo peridica de comandos de todos os usurios (a cada usurio corresponde uma tabela). Uma tal tabela chamada crontab. Atravs dela pode-se especificar que um comando seja executado a cada hora, ou diariamente, ou semanalmente, etc. A edio, inspeo e remoo da crontab de um usurio feita atravs do comando crontab, e opes -e, -l e -d. Cada linha da crontab indica um comando e a periodicidade com que ele deve ser executado (minutos, horas, dias do ms, meses e dias da semana). Por exemplo:
$ crontab -l 40 07 * * * updatedb 0 22 5 * * pagamento 0 6,12,15,18 * * * fetch 0 0 * * 6 backup

No caso a crontab contm trs comandos. O updatedb dever ser executado todos os dias s 7:40. O comando pagamento dever ser executado s 22:00 do dia 5 de cada ms, e o backup ser executado zero hora de cada sbado. Note que a crontab um arquivo texto simples, e quando se executa o comando crontab com a opo -e, entra-se num editor de textos para edit-la. O editor de textos utilizado normalmente ser o vi, ou aquele especificado na varivel de environment EDITOR.

Configurando o terminal
O terminal pode ser um terminal no sentido estrito do termo, conectado ao computador por uma linha serial, ou ento o prprio console da mquina, ou uma aplicao como o xterm emulando um terminal dentro do Xwindows, A configurao do terminal necessria para executar aplicativos como editores de texto visuais, ou para os comandos de teclado como backspace serem corretamente reconhecidos. Essa configurao envolve a configurao do driver do sistema, feita atravs do comando stty e o informe da aplicao, normalmente feito atravs da varivel TERM. Vejamos exemplos de situaes onde uma delas ou ambas so necessrias, e como realiz-la:
1. Ao pressionar a tecla backspace, ao invs de ser apagado o caracter anterior, surge na tela os caracteres ``^H''. Soluo:
$ stty erase ^H

2. Ao executar o more ou o vi, algumas linhas permanecem escondidas, ou o scroll comporta-se de forma errtica. Soluo: cheque quantas linhas (vamos supor: 24) e quantas colunas (vamos supor: 80) o seu terminal/emulador possui e execute
$ stty rows 24 cols 80

3. Aps o uso de alguma aplicao, os caracteres aparecem trocados ou o eco deixou de funcionar, ou quando pressiono enter o cursor permanece na mesma linha. Tentativa de soluo:
$ stty sane

4. Ao tentar executar uma aplicao, a mensagem de erro terminal capability cm required, ou Terminal type is not defined, ou Terminal type is not powerful enough, ou outra semelhante foi exibida. Soluo: cheque o tipo de terminal que voc est usando ou emulando (dificilmente ser algo diferente de xterm ou vt100) e atribua para a varivel de environment TERM esse valor.

Diretrios Principais do Sistema


No Unix no h o conceito de nomes de drives, como C:, mas todos os paths partem de uma raiz comum, o root directory ``/''. Quando a mquina possui vrios discos diferentes (ou ao menos vrias parties diferentes de um mesmo disco), cada uma delas em geral corresponder a uma subrvore do filesystem, como /usr, /var ou ainda nomes no standard como /disco2, que so chamados de seus pontos de montagem. O comando mount executado sem parmetros listar os diferentes dispositivos fsicos montados (discos locais e remotos e suas parties) e a subrvore correspondente a cada um deles. A tabela que indica todas essas montagens o arquivo /etc/fstab. Apesar de algumas pequenas diferenas de plataforma para plataforma, os diretrios principais do sistema so: /bin /sbin /etc /home /lib /proc /tmp /usr Binrios bsicos, como sh e ls. Binrios bsicos de administrao do sistema. Arquivos de configurao do sistema e scripts de boot. Os diretrios dos usurios residem aqui. Bibliotecas bsicas. Estado corrente do sistema e dos processos. Arquivos temporrios. Demais binrios e bibliotecas.

O termo bsico aplicado acima aos diretrios /bin e /lib quer significar principalmente essenciais para o boot e operao mnima do sistema. A separao desses elementos bsicos, em contraposio aos que so deixados no /usr, deve-se a razes prticas, principalmente para facilitar a organizao de redes de mquinas compartilhando subrvores de diretrio. De fato, comum que o diretrio /usr ao invs de estar replicado em todas as mquina da rede esteja residindo fisicamente num nico disco, e sendo compartilhado por todas as mquinas.

Atributos e Nomes de Arquivos

No Unix cada arquivo (inclusive diretrios, que so casos particulares de arquivos), conta com um conjunto de atributos de leitura, escrita e execuo, que so setveis atravs do comando chmod, e podem ser exibidos pelo comando ls -l:
$ ls -l /bin/cat -rwxr-xr-x 1 root root 16584 Dec 16 20:09 /bin/cat

A string -rwxr-xr-x representa os atributos do arquivo /bin/cat. O primeiro caracter (-) significa que se trata de um arquivo regular, em contraposio aos diretrios (d), device special files (c) e links simblicos (l). Os 9 caracteres restantes informam as permisses de leitura, escrita e execuo desse arquivo relativas ao seu proprietrio, ao seu grupo, e a todos os demais. O proprietrio e o grupo so informados logo direita, e no caso so o usurio root e o grupo root. Note que no Unix no existem os atributos de arquivo oculto ("hidden") e do sistema ("system"), suportados no MS-DOS. No obstante, arquivos cujo primeiro caractere ponto (".") normalmente so omitidos pelo ls, a no ser que se utilize a opo -a (de "all"), conforme comentamos no incio. Um atributo importantssimo existente no Unix o chamado setuid, atravs do qual um processo adquire ao ser executado os privilgios do owner do arquivo. Isso frequentemente utilizado por programas que so disparados por usurios no privilegiados mas que por algum motivo necessitam dos privilgios do superusurio, por exemplo:
$ ls -l /usr/sbin/pppd -rwsr-xr-x 1 root bin 104876 Apr 27 1998 /usr/sbin/pppd

Sem os privilgios de superusurio, um usurio comum no conseguiria configurar a interface ppp e nem alterar a tabela de rotas do sistema, no momento em que se conecta ao provedor Internet. Assim, o pppd, ao ser executado, requisitar os privilgios do owner do arquivo, que no caso o superusurio, e dessa forma ele poder realizar essas operaes. No Unix via de regra so suportados nomes ``longos'' (at 64 ou s vezes at 256 caracteres), e o ``.'' no um separador entre o nome do arquivo e sua extenso, mas um caracter como os outros. No obstante, a noo de ``sufixo'' utilizada informalmente para facilitar a identificao de alguns formatos de arquivos, por exemplo:
.tar .zip .Z .gz Archive produzido com tar Archive comprimido produzido com zip Arquivo comprimido com compress Arquivo comprimido com gzip

Archives (o termo no tem correspondente em portugus) so concatenaes de vrios arquivos ou de subrvores inteiras num nico arquivo. Em Unix, tipicamente so produzidos com tar:
$ tar cvf /tmp/etc.tar /etc

$ tar tvf /tmp/etc.tar /etc $ cd /tmp; tar xvf etc.tar

O primeiro comando ir criar o archive /tmp/etc.tar, composto por toda a subrvore /etc. O segundo exibir o contedo desse archive. O terceiro ir extrair todo o seu contedo dentro do diretrio /tmp, ou seja, recriar aquela mesma subrvore como uma subrvore do diretrio /tmp.

Intercambiando Disquetes com o MS-DOS


Via de regra as plataformas Unix-like oferecem ferramentas para lidar com disquetes ``formatados'' no MS-DOS (ou, mais precisamente, disquetes que usam FAT). Um set de ferramentas bastante popular o mtools, que oferece clones das ferramentas do MS-DOS. Exemplos de uso:
$ mformat a: $ mcopy a:relat.txt . $ mdir a:

Verses recentes dessas ferramentas lidam tambm com o VFAT do Windows 95, que permite nomes de arquivos ``longos''.

O intercmbio de arquivos texto entre Unix e MS-DOS deve ser feito com cuidado. Por herana das antigas impressoras, o fim-de-linha no MS_DOS codificado atravs de dois caracteres (CR e LF), enquanto no Unix h apenas um (o LF), alm do que o final do arquivo sinalizado no MS-DOS por um CTRL-Z. O mcopy possui a opo -t para realizar essas converses quando copia de ou para disquetes.

O Kernel
O Kernel do Unix (e de virtualmente qualquer outro sistema operacional) possui um papel de que convm ter noes, a fim de se poder compreender melhor o funcionamento do sistema, realizar diagnsticos e procedimentos administrativos como adio de componentes de hardware. Algum conhecimento do papel do kernel importante tambm para se ter uma noo mais clara do uso de arquivos especiais e do diretrio /proc. O Kernel ordinariamente reside no filesystem como um outro arquivo qualquer. No Linux, ele em geral o arquivo /vmlinuz ou /boot/vmlinuz, ou ainda /boot/vmlinuz2.0.36. Ele um programa, ainda que um pouco diferente dos programas de aplicao como o /bin/ls. O kernel carregado e posto em execuo no boot da mquina, e a sua execuo somente se encerra com o shutdown. De forma simplificada, o seu papel num primeiro momento reconhecer o hardware e inicializar os respectivos drivers. Em seguida ele entra num estado administrativo onde funciona como intermedirio entre as aplicaes e o hardware. Por exemplo, quando uma aplicao necessita alocar mais memria, ela solicita isso ao kernel. o kernel

que distribui o tempo de CPU aos vrios processos ativos. ele que habitualmente realiza a entrada e sada de dados nas diferentes portas de comunicao. por isso que a adio de hardware novo a uma mquina pode requerer a substituio ou ao menos a reconfigurao do kernel. Os kernels mais recentes do Linux oferecem vrios mecanismos de configurao que os tornam sobremaneira flexveis, a ponto de ser rara a necessidade de substituio do kernel. Os dois mecanismos fundamentais de se configurar a operao do kernel so a passagem de parmetros no momento do boot (realizada pelo LILO) e a carga de mdulos, feita manualmente ou por mecanismos automticos como o kerneld. O dilogo entre as aplicaes e o kernel realiza-se fundamentalmente atravs dos system calls, que so servios que o kernel oferece, como por exemplo read(2). Os device special files so maneiras de se referir ao kernel os dispositivos fsicos ou lgicos com que se pretende operar, por exemplo a primeira porta serial ou a segunda unidade de fita, ou o disco principal do sistema. Neles, o importante no o nome, mas sim os nmeros de dispositivo, ou mais precisamente o major e o minor device numbers. Device special files so criados atravs do comando mknod, ou atravs de interfaces mais amigveis, como o comando MAKEDEV. Os sistemas Unix-like mais recentes oferecem um outro mecanismo de comunicao com o kernel, que o filesystem /proc. As entradas desse filesystem so pseudoarquivos cujo contedo reflete o estado atual de inmeras estruturas de dados internas do kernel. Assim, um programa de aplicao passa a poder comunicar-se com o kernel atravs dos mecanismos ordinrios de leitura e escrita de arquivos. Em muitos casos a comunicao entre as aplicaes e o kernel intermediada por bibliotecas, principalmente a libc. Elas oferecem servios de mais alto nvel que os system calls do kernel, tornando mais simples o trabalho de programao.

Redirecionamento da Entrada e da Sada; Pipes


Processos num sistema Unix habitualmente possuem trs dispositivos de I/O ``padres'', a ``sada padro'', a ``entrada padro'' e a ``sada de erros''. O Unix permite que esses dispositivos (e outros) sejam definidos no momento da execuo, podendo escolher o console, um ``pipe'', a impressora, um circuito virtual de rede conectando duas mquinas, uma linha fsica serial ou outras coisas. Usurios de MS-DOS talvez j tenham feito coisas como
C> DIR >PRN:

para imprimir a sada de um comando. Essa sintaxe foi herdada do Unix da a semelhana:
$ ls -l >/dev/lp1

Naturalmente tanto no MS-DOS quanto no Unix existem formas mais apropriadas para se imprimir algo, mas no momento esse exemplo convm. Shells do estilo

``Bourne'' (sh, ksh, bash) permitem redirecionamento da sada de erros atravs da seguinte sintaxe:
$ rm /bin/ls 2>/tmp/error

O ``2'' deve-se a que, internamente, a sada de erros corresponde ao descritor 2 (o 0 a entrada padro e o 1 a sada padro).

A entrada pode ser redirecionada de forma semelhante:


$ wc </tmp/error

Os shells Unix oferecem um recurso para a ligao da sada padro de um processo com a entrada padro de outro, chamado pipe:
$ ls|wc

No exemplo a sada do ls est sendo usada como entrada do wc. Note que o shell dispara os dois processos ao mesmo tempo. Se o primeiro estiver produzindo sada numa taxa superior que o segundo l, o sistema operacional paralizar o primeiro sempre que o buffer que armazena o trfego estiver cheio. Isso significa, por exemplo, que um pipe pode ser usado mesmo quando o volume total da sada do primeiro processo extraordinariamente grande, por exemplo quando se tenta localizar informaes de arquivos deletados atravs de um dump de todos os setores do disco.

Comunicao Serial e Paralela


O Unix apresenta as portas de comunicao seriais e paralelas na forma de arquivos especiais. J vimos um exemplo do seu uso no tem Redirecionamento da Entrada e da Sada, em que fizemos a impresso da sada de um comando.

Na comunicao entre dois computadores, utiliza-se freqentemente portas seriais, e s vezes tambm as paralelas. Em muitos casos, quando a distncia entre os dois grande, haver uso de modems, e eventualmente tambm de uma linha telefnica. Atravs de trs exemplos prticos pode-se ter um bom panorama do uso de comunicao serial no Unix. Como os procedimentos variam um pouco dependendo das plataformas em uso, s possvel indic-los de forma genrica: a) Adio de um terminal
1. 2. 3. 4. Conectar a serial do terminal com a da mquina Unix. Disparar no Unix a variante do getty disponvel. Logar no terminal. Transferir arquivos se o terminal oferecer esse recurso.

b) Conexo a um sistema remoto


1. Disparar algum emulador de terminal disponvel. 2. Selecionar a serial em que o modem est conectado. 3. Configurar o modo de operao da serial (velocidade, bits).

4. 5. 6. 7.

Configurar o modem atravs de comandos AT, se necessrio. Instruir o modem para discar, com ATD Aguardar a negociao. Logar.

c) Estabelecimento de um link ppp


1. Executar a conexo ao sistema remoto como indicada acima. 2. Iniciar o ppp no sistema remoto. 3. Disparar o pppd localmente.

Em PCs, os conectores externos das portas seriais so conectores DB-9 ou DB-25 macho, e os das paralelas so DB-25 fmea.

Configurao do TCP/IP
Numa rede TCP/IP, a cada mquina est associado um nmero IP, que um inteiro de 32 bits, normalmente escrito na forma de octetos, como 192.168.0.5. A cada mquina est associado um nome, como por exemplo marte ou pimenta. A atribuio tanto do nmero quanto do nome feita durante o processo de boot, a partir da especificao deles feita atravs da edio manual de arquivos de configurao e/ou do uso de aplicativos de gerenciamento do sistema especficos de cada plataforma. Na verdade, o nmero IP no est associado mquina, mas a uma determinada interface dela. Via de regra, a interface envolvida a ethernet. Tanto para exibir quanto para setar manualmente o nmero IP de uma interface usa-se o comando ifconfig. Por exemplo, o comando:
$ ifconfig -a

ir listar todas as interfaces com informaes de cada uma. A interface ethernet costuma chamar-se le0 (Solaris) ou eth0 (Linux). Alm do ethernet, comum usar-se portas seriais para criar interfaces TCP/IP, principalmente para criar links com linhas telefnicas. As placas ethernet costuma oferecer dois ou mais tipos de conectores. Ela pode ou no descobrir automaticamente qual est em uso. Em caso negativo, voc dever inform-la, o que habitualmente feito atravs de um software de configurao que acompanha a placa. O passo seguinte a configurao das rotas. Atravs delas a mquina sabe por onde enviar datagramas a fim de que eles cheguem em seus destinos. Equivale de certa forma sinalizao do trfego urbano, com placas indicativas da direo a tomar para atingir cada destino (Ponte do Limo esquerda, ou Avenida Bandeirantes em frente, etc). Cada rota envolve um destino, uma mscara, um gateway e uma interface. Pode-se exibir todas elas atravs do comando netstat:

$ netstat -r Destination 192.168.1.0 127.0.0.0 default

Gateway * * 192.168.1.1

Genmask 255.255.255.0 255.0.0.0 0.0.0.0

Iface eth0 lo eth0

Suponha que voc deseja atingir a mquina 192.168.1.7. A aplicao da tabela de rotas indica, atravs de uma operao e bit-a-bit entre 192.168.1.7 e a mscara 255.255.255.0, que deve ser usada a primeira rota. Como no h gateway, a comunicao ser feita diretamente atravs do ethernet. Se o destino agora for 200.136.35.65, as duas primeiras rotas no nos serviro (experimente aplicar o e como no caso anterior). Portanto ser usada a rota default, e como ela especifica um gateway, a comunicao ter que ser feita atravs dele. Assim, toda vez que se pretender enviar alguma informao para o 200.136.35.65, esta ser enviada antes para o gateway 192.168.1.1, na esperana de que este consiga rote-la para o seu destino.

Servios TCP/IP
Atualmente comum as pessoas confundirem Internet com a teia mundial WWW, entretanto muito antes de surgir a teia, a Internet j usava um sem-nmero de servios construdos a partir dos protocolos de transporte TCP e UDP. Um circuito TCP entre duas mquinas equivale a um pipe duplo entre dois processos, cada um rodando em uma das mquinas. O telnet um tpico servio que se utiliza desse recurso, a fim de criar sesses remotas. Pode-se exibir todas os circuitos TCP ativos atravs do comando netstat:
$ netstat -t

O FTP, por sua vez, cria dois circuitos, utilizando um para envio de comandos e outro de dados. Atravs do uso de alguns comandos simples, permite transferir arquivos de ou para uma mquina remota. Os principais comandos do FTP so:
asc,bin hash get,put mget,m put prompt modo de transferncia texto/binrio faz o display de um ``#''a cada 1kb transferido transfere de/para a mquina remota o arquivo especificado idem, mltiplos arquivos liga/desliga o modo interativo

Disparo do Xwindows e das suas aplicaes


O disparo do X desnecessrio quando o sistema opera num runmode em que o X est permanentemente ativo. Nesse caso, o prprio login feito numa janela, ao invs de no console no modo texto.

Quando for necessrio disparar o X manualmente, via de regra haver dois ou trs scripts j preparados para isso, como o startx ou o openwin. O que eles fazem basicamente definir uma srie de parmetros e executar o xinit, que por sua vez dispara o Xserver e o Window Manager. Convm no perder de vista que o Xwindows um sistema cliente-servidor. O Xserver o programa que conhece o hardware grfico, capaz de colocar o display no modo desejado, e desenhar nele. As aplicaes conectam o Xserver atravs de um circuito TCP (por exemplo) e enviam a ele comandos atravs dos quais desenham as suas janelas e o contedo delas. O Window Manager responsvel por desenhar as molduras das janelas, criar menus de aplicaes, e controlar o foco. Assim, natural que no disparo de cada aplicao seja necessrio especificar qual o server a ser utilizado. Isso normalmente se faz atravs da opo de linha de comando -display, ou atravs da varivel de environment DISPLAY.
$ xterm -display 192.168.0.1:0.0 $ DISPLAY=192.168.0.1:0.0; export DISPLAY; xterm

Quando o Xserver est rodando numa mquina Unix, a permisso para um cliente uslo dada atravs do comando xhost:
$ xhost +192.168.1.5 $ xhost -192.168.1.5 $ xhost (autoriza o cliente 192.168.1.5) (desautoriza o cliente 192.168.1.5) (lista os clientes autorizados)

Pode-se autorizar permanentemente um cliente a usar um determinado Xserver adicionando-o ao arquivo /etc/X0.hosts (um cliente por linha). Ao longo dos anos foram sendo criados inmeros Window Managers diferentes para o Xwindows. Algumas vezes alm do window manager foram criadas tambm complexas bibliotecas oferecendo servios de alto nvel que alm de simplificar o trabalho de programao tamm permitem estandardizar o aspecto visual e os recursos das janelas das aplicaes. Um dos produtos mais conhecidos dessa linha o Motif. O advento do Free Software criou outras opes, sendo as mais em voga atualmente o GTK e o QT, que so utilizados respectivamente pelo GNOME e pelo KDE.

Procedimentos de boot e o init


O boot do Unix consiste inicialmente na carga e execuo do kernel. Em seguida, disparado o processo init, que segue as instrues do arquivo /etc/inittab, que portanto o ponto de partida para tudo o que se pretenda configurar a nvel de disparo de processos ao longo do boot. O inittab no um script como o AUTOEXEC.BAT, mas uma lista de aes, algumas delas de valor permanente para todo o curso da operao do sistema. Cada linha vlida representa um processo que o init deve disparar. O termo respawn significa que, alm de disparar, o init dever monitorar o processo e, se porventura ao longo da operao do sistema ele for encerrado, o init dever redispar-lo.

Via de regra as linhas do inittab referem-se ou chamada de scripts de configurao inicial do sistema, que so executados apenas uma vez, ou aos processos de controle de login no sistema, que so redisparados sempre que ocorre um logout. O inittab inclui ainda o conceito de runlevel, o que cria a flexibilidade de se poder inicializar a mquina em um de vrios possveis modos de operao. Na prtica, costuma haver trs modos principais, o single-user, utilizado para manuteno, um grfico e um no grfico. Quanto aos scripts de configurao (normalmente so os arquivos e/ou diretrios /etc/rc.*, dependendo da plataforma a mecnica de disparo deles pode ser bastante complexa. Note que cada runlevel pode disparar ou deixar de disparar alguns scripts, a fim de estabelecer o modo de operao desejado. Em quase todas as verses mais recentes do Linux essa mecnica segue o padro dos diretrios /etc/rc.d/rcN.d, onde N cada um dos runlevels. O contedo desses diretrios so links para cada um dos scripts de ativao ou desativao de servios bsicos (interfaces de rede, servidor de email, etc), com nmeros embutidos nos nomes dos links, a fim de definir a ordem em que devem ser processados.

Referncias
Virtualmente qualquer informao tcnica sobre sistemas Unix-like pode ser obtida na Teia Mundial. Estou colocando aqui apenas um referncia clssica (o Livro do Bach), e um link para uma lista de pontos de entrada de documentao sobre Linux. [1] Bach, M. J. The Design of the Unix Operating System, Prentice-Hall, 1986. [2] Alguns links de Linux, inclusive para materiais em portugus, esto disponveis em http://www.ime.usp.br/~ueda/ldoc/links.html .

sed Um comando interessante o sed. At outro dia, para verificar a quantidade de linhas em um determinado script, utilizava o seguinte comando: wc -l arquivo | awk '{ print $1 }' Depois que descobr uma das muitas opes do comando sed, o comando acima eu resum assim: sed -n $= arquivo Bem mais fcil, no? Outro exemplo do sed: cat teste 1 um 2 dois

3 tres 4 quatro 5 cinco Para imprimir a linha onde contm a string um, o comando seria: sed -n '/um/'p teste um ou sed -n '/um/{p;}' teste um Se quisermos listar a string e a prxima linha aps esta string, usamos: sed -n '/1/{p;n;p;}' teste 1 um A opo p significa print, e o n significa next Note que dentro das chaves, podemos imprimir quantas linhas quizermos. uniq Outro dia deparei-me em resolver um problema em um arquivo com 598 registros. Neste arquivo deveria existir os seguinte lay-out: registros comeando com 00 (header) registros comeando com 01 (registros) registros comeando com 99 (trailler) (Neste exemplo, os registros esto em ordem sequncial numrica) (00......) (01......) (01......) (99......) (00......) (01......) ( ..............) Mas como saber em qual linha estava faltando um 99..? Resolv o problema com o seguinte comando: cat -n arquivo | cut -c1-9 | uniq -f1 sort Para saber qual o tamanho dos arquivos no diretrio corrente, e em ordem crescente, basta digitar: ls -l | sort -k5n bc s vezes precisamos fazer um clculo aritmtico e no achamos uma calculadora. No UNIX podemos fazer um clculo, bastando para isso digitar: bc

A s entrar com o clculo. Para sair, digitar quit Ex.: bc 90/3 30 quit Tambm pode usar o seguinte comando: echo '30+70' | bc 100 echo 'scale=2; 100/10' | bc 10.00 vi Geralmente quando precisamos alterar uma string em um arquivo, digitamos dentro do editor de texto (vi) assim: :1,$s/string_old/string_new/ Podemos abreviar assim: :%s/string_old/string_new/ A string % significa da linha 1 at a ltima linha ($) date Geralmente o resultado do comando date em ingls. Se quizer o resultado em portugus, podemos alterar a varivel LC_TIME para pt_BR. Basta digitar os seguintes comandos: # LC_TIME=pt_BR # set LC_TIME=pt_BR Ao digitar date, o resultado ser: tera-feira 20 janeiro 2004, 11:49:02 GMT Alterao de sufixos em arquivos Em um grupo de discuo ao qual participo, foi perguntado como poderia alterar o sufixo de vrios arquivos. Geralmente faramos um script onde colocaramos o famoso cut. Alguns usurios, inclusive eu, respondeu como criar um script, porm um deles, o Felipe Kellermann, enviou um script muito interessante, ao qual descrevo abaixo: #!/usr/bin/ksh for ARQ in *.lst do mv "${ARQ}" "${ARQ%.*}.txt" done Coloquei a idia do nosso colega Felipe neste site, por ach-la bem interessante. dir Um comando que nos faz muita falta o display somente dos diretrios.

Para isto, fiz um script muito fcil. Salvei-o com o nome de dir, e se quizer saber os nomes dos diretrios, eu executo-o. Basta inserir o seguinte comando no arquivo dir: ls -l | grep '^d' Salvei-o no /usr/bin Somando campos Para somar um determinado campo, podemos usar a poderosa linguagem de programao awk Ex.: >cat arquivo.txt 45 A 10 10 B 100 10 C 50 10 D 30 01 E 40 02 F 10 05 G 01 >241 No arquivo acima, queremos somar o campo 3 (10, 100, 50,... 01) Ento podemos utilizar o seguinte comando: > awk '{sum += $3} END { print sum; }' arquivo.txt >241 Como tirar todas as tags em um arquivo HTML, ou XML, deixando somente o texto? Fcil! sed s/<[^>]*>//g arquivo.htm Para deletar um arquivo cujo nome estranho, tipo "-arquivo estranho" bem complicado. Ento vamos deletar este arquivo sem problemas. Para isto, primeiro precisamos saber qual o nmero correspondente a este arquivo. Chamamos de i-node (index nodes). >ls -i 2367 -arquivo estranho 627064 opdr2014.003 timo! sabemos ento que o i-node do "-arquivo estranho" 2367 Agora vamos deletar atravz deste nmero. Basta deletar atravz do comando find. >find . -inum 2367 -ok rm '{}' \; O comando find ir procurar no diretrio corrente (.) o i-node (2367) e passar o resultado para a memria, ou buffer ({}),e o comando rm entrar em ao. Note que coloquei a opo -ok na linha de comando. Com esta opo, ser perguntado se queremos remover o arquivo, e a s digitar y Uma vez um DBA foi splitar um arquivo de tabela, e sem querer deu um comando errado. Foram gerados mais de 700 arquivos comeando com Fiz ento um script que para ele foi uma mo na roda. Este script est disponvel na seo ShellScript

Para procurar uma string a em um arquivo a partir do diretorio local find . -type f -print | xargs fgrep -i [STRING] Para quem usa o compactador ZIP, eis um dica legal: ZIP -9lTm output input Onde: 9 = comprime melhor l ( ELE ) = quebra linhas ( convert LF to CR LF ) T = testa a integridade do arquivo comprimido m = deleta o arquivo input aps compresso Para somar colunas numricas em um arquivo: Prompt> cat num 3 5 7 9 11 13 15 Prompt> paste -sd + num 3+5+7+9+11+13+15 Prompt> paste -sd + num | bc 63 Para separar um registro onde contm vrias strings separadas por um delimitador, em linhas, dar o seguinte comando: cut -f1- -d, teste | sed 's/,/\ /g' Note que a linha (/g)tem que ser quebrado. (ainda no entendi o porqu)