You are on page 1of 11

Uma introduo ao shell-script

Imagine que, em um futuro distante, o Google decida transformar o Android em um sistema para
robs pessoais. Seu rob com o Android poderia ser ento instrudo a executar qualquer tipo de
tarefa, desde que voc conseguisse explicar para ele o que precisa fazer na forma de instrues
simples. Uma ida at a geladeira para pegar uma lata de refrigerante poderia ser explicada dessa
forma:
Ir at a cozinha.
Abrir a geladeira.
Olhar a prateleira da direita.
Se encontrar uma lata de coca-cola, trazer para mim.
Seno, trazer a lata de guaran.
Se no encontrar lata alguma, fechar a geladeira e voltar.
Object 1

Este mesmo princpio, de dividir a tarefa a ser feita em instrues simples, comum a todas as
linguagens de programao. Elas podem variar em complexidade, mas a ideia central sempre a
mesma: explicar ao sistema o que fazer, em uma linguagem que ele seja capaz de entender.
No caso do shell-script, voc precisa apenas pensar em uma maneira de "explicar" o que voc quer
que seja feito atravs de comandos de terminal. Conforme voc vai adquirindo mais familiaridade
com o sistema, este acaba se tornando um processo natural, j que qualquer conjunto de comandos
para executar uma determinada tarefa pode ser transformado em um script rapidamente. Vamos
ento a alguns exemplos bsicos para quebrar o gelo.
O tipo mais simples de script consiste em um bloco de comandos, que automatiza alguma tarefa
repetitiva. Estes scripts "burros" so uma excelente forma de simplificar o uso do sistema, evitando
que voc precise memorizar sequncias de comandos. Um bom exemplo este mini-script que uso
para conectar um mouse bluetooth:
#!/bin/sh
# Checagem para ter certeza que o suporte a bluetooth est ativado:
hciconfig hci0 down
/etc/init.d/bluetooth restart
hciconfig hci0 up
# Ativa o mouse:
hidd --connect 00:07:61:62:cb:bb
Estes quatro comandos permitem ativar o mouse em qualquer distribuio, de forma que preciso
apenas executar o script e coloc-lo para ser inicializado automaticamente, sem precisar me
preocupar com as peculiaridades de cada uma.
Para us-lo, necessrio apenas criar um arquivo de texto chamado "btmouse.sh" (ou qualquer
outro nome que escolher), coloc-lo dentro do seu home, ou da sua partio de dados (para que ele
no seja perdido ao reinstalar o sistema) e marcar a permisso de execuo ("chmod +x
btmouse.sh").
A partir da, voc pode passar a executar o script quando precisar ativar o mouse:
# /mnt/sda6/btmouse.sh
... ou adicionar o comando no final do arquivo "/etc/rc.d/rc.local" (ou outro arquivo de
inicializao) para que ele passe a ser executado automaticamente.
O problema com esses scripts simples que eles servem para propsitos bem especficos, j que os
passos executados so sempre os mesmos. Este script para ativar o mouse bluetooth, por exemplo,
funciona apenas com o meu mouse, j que o endereo de conexo est gravado dentro do prprio
script.

Scripts mais complexos comeam quase sempre com alguma pergunta. Um gerenciador de
downloads precisa saber qual a URL do arquivo a baixar, um discador precisa saber qual modem
ser utilizado e qual o nmero de acesso do provedor, um instalador de programas precisa saber
qual programa deve ser instalado e assim por diante.
Dependendo da situao, as perguntas podem ser feitas diretamente, no estilo "digite a URL do
arquivo a baixar", ou atravs de um menu de seleo, onde voc lista as funes oferecidas pelo
script e o usurio clica na opo desejada.
Para fazer uma pergunta direta (que o formato mais simples), usamos o comando "read", que l
uma resposta e a armazena em uma varivel. Quase sempre ele usado em conjunto com o "echo",
que permite escrever texto na tela, fazendo a pergunta, como em:
echo "Digite a URL do arquivo a baixar"
read arquivo
wget -c $arquivo
Com estes trs comandos, criamos um gerenciador de downloads primitivo, que pede a URL do
arquivo (que voc poderia colar no terminal usando o boto central do mouse) e faz o download
usando o wget, que um gerenciador em modo texto, muito usado em scripts.
A URL digitada armazenada na varivel "arquivo", que pode ser usada ao longo do script. Ao usla, necessrio incluir um "$", que faz com que o shell entenda que se trata da varivel "arquivo" e
no de um trecho de texto qualquer. Quando o script fosse executado, o "wget -c $arquivo" seria
transformado em algo como "wget -c http://gdhpress.com.br/arquivo.zip", iniciando o download.
O "-c" uma opo para o wget, que faz com que ele continue o download caso interrompido. Se
voc pressionasse "Ctrl+C" durante o download para encerrar o script e o executasse novamente,
fornecendo a mesma URL, ele continuaria o download de onde parou.
Voc poderia incrementar o script, incluindo mais perguntas e usando mais opes do wget. A
primeira parada nesse caso seria o "man wget", onde voc poderia garimpar as opes suportadas
pelo comando e selecionar algumas que poderiam ser teis dentro do script. Um bom exemplo a
opo "--limit-rate=" que permite limitar a taxa de download. Voc poderia incluir a opo no script
adicionando mais uma pergunta, como em:
echo "Digite a URL do arquivo a baixar"
read arquivo
echo "Digite a taxa mxima de download, em kbytes. ex: 48"
read taxa
wget -c --limit-rate=$taxa $arquivo
Este formato simples funciona bem para scripts rudimentares, destinados a simplesmente
automatizarem alguma tarefa especfica, a partir de algumas perguntas simples. Para scripts mais
completos, precisamos comear a usar as operaes lgicas, que permitem que o script tome
decises. O formato mais bsico o "se, ento, seno", que no shell script representado pelos
operadores "if", "then" e "else".
Imagine que voc est fazendo um script conversor de vdeos, que capaz de gerar arquivos em
quatro diferentes formatos. O script comea perguntando qual formato usar e, de acordo com a
resposta, executa os comandos apropriados para fazer a converso.
Para simplificar, vamos fazer com que o script simplesmente converta todos os arquivos dentro do
diretrio atual, em vez de perguntar quais arquivos converter ou de exibir uma caixa de seleo.
A parte da pergunta poderia ser feita com o "echo", como no exemplo anterior. Como agora so
vrias linhas de texto, usei aspas simples ( ' ) em vez de aspas duplas. As aspas simples permitem
que voc inclua quebras de linha e caracteres especiais dentro do texto, fazendo com que o shell
simplesmente escreva tudo literalmente:

echo 'Escolha o formato de sada:


1) MPEG4, 320x240 (vdeos no formato 4:3)
2) MPEG4, 320x176 (vdeos em formato wide)
3) Real Player, 320x240 (vdeos no formato 4:3)
4) Real Player, 320x176 (vdeos em formato wide)
(Responda 1, 2, 3 ou 4, ou qualquer outra tecla para sair)'
read resposta
No final deste trecho, teramos a varivel "resposta", que armazenaria um nmero de 1 a 4.
Precisamos agora fazer com que o script decida o que fazer de acordo com a resposta.
O jeito mais simples de fazer isso seria simplesmente colocar um bloco com 4 comandos "if" (se),
um para cada possibilidade. Cada "if" sempre acompanhado por um "then" (ento) e um "fi" (fim
do se), como em:
if [ "$resposta" = "1" ]; then
[comandos ...]
fi
if [ "$resposta" = "2" ]; then
[comandos ...]
fi
if [ "$resposta" = "3" ]; then
[comandos ...]
fi
if [ "$resposta" = "4" ]; then
[comandos ...]
fi
Uma forma mais elegante (e mais prova de falhas), seria usar o "elif" (que poderia ser traduzido
para "seno se") e o "else" (seno), como em:
if [ "$resposta" = "1" ]; then
[comandos ...]
elif [ "$resposta" = "2" ]; then
[comandos ...]
elif [ "$resposta" = "3" ]; then
[comandos ...]
elif [ "$resposta" = "4" ]; then
[comandos ...]
else
echo "Voc digitou uma opo invlida. O script termina aqui."
fi
Como pode ver, ao usar o elif voc no precisa mais incluir um "fi" para cada possibilidade. Outra
vantagem que voc pode agora incluir um "else" no final, que faz com que o script responda com
uma mensagem de erro ao receber alguma resposta que no estava esperando. Dentro de cada uma
das condies, voc incluiria um bloco de comandos destinado a gerar os arquivos convertidos com
os parmetros correspondentes, como em:
if [ "$resposta" = "1" ]; then
for i in *; do
mencoder -oac mp3lame -lameopts cbr:br=128 -ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=512 -ofps 16 -vf scale=320:176 -o "c-$i" "$i"
done
elif [ "$resposta" = "2" ]; then
[o resto do script...]

Esse comando gigante que se esparrama pela terceira e a quarta linha um comando de converso
do mencoder (um pequeno utilitrio de converso de arquivos de mdia em modo texto, que
bastante flexvel), que gera um arquivo de vdeo otimizado para ser assistido em smartphones. Esse
o tipo de comando que longo demais para ser escrito manualmente, mas que pode perfeitamente
ser usado atravs de um script.
Veja que a varivel "i" usada no final da quarta linha, para indicar o nome do arquivo. O "c-$i"
"$i" faz com que o script adicione o prefixo "c-" no nome dos arquivos convertidos, permitindo que
eles sejam includos na pasta sem apagar os arquivos originais.
O comando do mencoder colocado dentro de outra condicional, agora usando o "for" (enquanto),
que permite que o script execute um conjunto de comandos repetidamente.
No exemplo, ele usado para fazer com que o comando de converso do mencoder seja executado
uma vez para cada arquivo dentro da pasta. Ao ser executado, a varivel "i" (poderia ser qualquer
outro nome) recebe o nome do primeiro arquivo, o que faz com que ele seja convertido.
Ao chegar no "done", o interpretador volta linha inicial e a varivel "i" recebe agora o nome do
segundo arquivo. O processo ento repetido para cada um dos arquivos da pasta, at o ltimo (a
lista dos arquivos a converter gerada pelo interpretador no incio do script, por isso no existe o
risco do conversor ficar em loop). O "for i in *; do" poderia ser traduzido como "para cada arquivo
dentro da pasta atual, execute".
Voc pode baixar o script pronto, incluindo os comandos de converso no:
http://www.hardware.com.br/dicas/converter-video.html
Outro exemplo de uso para o "for" seria baixar uma lista de arquivos ISO especificada em um
arquivo de texto. Imagine que voc goste de testar novas distribuies e, de vez em quando, queira
deixar o PC ligado durante a madrugada colocando os downloads em dia. Voc poderia facilitar as
coisas usando um script como:
#!/bin/sh
echo "Digite a taxa mxima de download, em kbytes. ex: 48"
read taxa
for i in `cat /home/$USER/downloads.txt`; do
wget -c --limit-rate=$taxa $i
done
Para us-lo, voc precisaria apenas criar um arquivo "downloads.txt" dentro do seu diretrio home,
colocando os links de download dos ISOs das distribuies, um por linha, como em:
http://ftp.heanet.ie/pub/linuxmint.com/stable/6/LinuxMint-6.iso
ftp://ftp.nluug.nl/pub/os/Linux/distr/dreamlinux/stable/DL3.5_20092802.iso
http://sidux.c3sl.ufpr.br/release/sidux-2009-01-ouranos-kde-lite-i386.iso
Ao executar o script, ele comearia perguntando a taxa mxima de download (com a resposta sendo
armazenada na varivel "taxa"), leria o arquivo e baixaria os arquivos listados para o diretrio atual.
A linha do wget inclui duas variveis: a taxa de download e o arquivo a baixar. Por causa do "for", o
comando repetido para cada um dos links listados no arquivo, fazendo com que eles sejam
baixados um de cada vez.
Embora simples, este script introduz algumas idias novas. A primeira o uso das crases (``), que
permitem usar o resultado de um comando. Graas a elas, podemos usar o "cat" para ler o arquivo
de texto e assim fazer com que o script carregue as URLs dentro da varivel "i", uma de cada vez.
Outra novidade o uso do "/home/$USER", uma varivel de sistema que contm sempre o diretrio
home do usurio que executou o script. Isso faz com que o script procure pelo arquivo
"downloads.txt" dentro do seu diretrio home, e no em uma localizao especfica.

Uma prtica um pouco mais avanada o uso de funes. Elas permitem que voc crie blocos de
cdigo destinados a executarem tarefas especficas que podem ser usados ao longo do script. Em
outras palavras, as funes so pequenos scripts dentro do script.
A grande vantagem de criar funes (em vez de simplesmente repetir os comandos quando precisar)
que, ao atualizar o script, voc precisa alterar apenas um bloco de comandos, em vez de precisar
procurar e alterar os comandos manuais em vrios pontos do script. Por permitirem reaproveitar o
cdigo, as funes fazem com que o script seja mais organizado e fique com menos linhas, o que
facilita muito a manuteno em scripts complexos.
Imagine, por exemplo, que voc precisa repetir uma mesma mensagem de erro vrias vezes ao
longo do script. Voc poderia usar uma funo como esta:
msgerro()
{
echo "Algo deu errado durante a conexo. O erro foi:"
echo "$msg"
}
Veja que a funo comea com uma declarao ("msgerro()"), onde voc especifica um nome e
adiciona o "()", que faz com que o sistema entenda que se trata de uma funo e no de um outro
bloco de comandos qualquer. Os comandos so, em seguida, colocados dentro de um par de chaves
( { .... } ), que indicam o incio e o final. A partir da, voc pode executar os comandos dentro do
script chamando o nome da funo (msgerro), como se fosse um comando qualquer.
Um exemplo o script para conectar usando modems e smartphones 3G que escrevi em 2008, que
est disponvel no: http://www.hardware.com.br/dicas/script-vivo-zap.html
Ele prev o uso de diversos tipos de conexo e inclui vrias funes de checagem e soluo de
problemas (que so usadas repetidamente ao longo do script), por isso ele bastante longo e
complexo, com quase 900 linhas. Se tiver curiosidade em acessar o tpico e olhar o cdigo, vai ver
que crio diversas funes no incio do script (a "bpairing()" contm os comandos para fazer o
pareamento com smartphones e conectar via Bluetooth, enquanto a "checaporta()" verifica em que
porta o modem ou smartphone est conectado, por exemplo) que so usadas ao longo do script.
Outra necessidade comum salvar parmetros e configuraes, evitando que o script precise
perguntar tudo novamente cada vez que for executado. Uma forma simples de implementar isso
fazer com que o script salve as variveis com as configuraes usadas em arquivo de texto (
geralmente usado um arquivo oculto dentro do diretrio home), como em:
echo "tel=\"$tel\"" > /home/$USER/.myscript
echo "porta=\"$porta\"" >> /home/$USER/.myscript
Esses comandos criariam o arquivo ".myscript" dentro do diretrio home do usurio que executou o
script. Graas ao uso do ponto, ele se torna um arquivo oculto, assim como os demais arquivos de
configurao do sistema.
O arquivo de configurao pode ser carregado dentro do script com um ". /home/$USER/.myscript"
(ou seja, ponto, espao e a localizao do arquivo), o que faz com que o interpretador processe os
comandos dentro do arquivo como se fossem parte do script principal.
Um exemplo de uso seria uma verso aperfeioada do script para ativar mouses Bluetooth que
mostrei a pouco, que perguntasse o endereo do mouse da primeira vez que fosse executado e
passasse a usar a configurao salva da em diante:
#!/bin/sh
if [ -e "/home/$USER/.btmouse" ]; then
echo "Carregando configurao salva no arquivo /home/$USER/.btmouse."
. /home/$USER/.btmouse

else
# Se o arquivo no existir, pergunta o endereo e salva a configurao.
echo "Digite o endereo do mouse que ser usado (ex: 00:07:61:62:cb:bb):"
read addr
echo "addr=\"$addr\"" > /home/$USER/.btmouse
fi
# Mensagem explicativa:
echo "Conectando a $addr"
echo "Delete o arquivo /home/$USER/.btmouse para trocar o endereo."
# O script propriamente dito:
hciconfig hci0 down
/etc/init.d/bluetooth restart
hciconfig hci0 up
hidd --connect $addr
Embora estes exemplos utilizem apenas perguntas simples, em texto, os shell-scripts podem
tambm exibir janelas, avisos, perguntas e menus de seleo grficos de maneira muito simples,
utilizando o Xdialog, Kdialog ou o Zenity, que permitem mostrar janelas grficas de forma
surpreendentemente fcil.
Para mostrar uma mensagem de texto, por exemplo, voc usaria o "zenity --info --text" seguido da
mensagem a mostrar, como em:
zenity --info --text "Conexo ativa."
Para abrir uma janela de seleo de arquivo, voc usaria o "zenity --file-selection", que exibe uma
janela similar do gerenciador de arquivos, permitindo escolher o arquivo que ser usado.
Normalmente, a localizao do arquivo seria simplesmente escrita no terminal. Para que ela seja
armazenada em uma varivel (permitindo que voc a use posteriormente ao longo do script), voc
usaria:
arquivo=`zenity --file-selection --title "Escolha o arquivo"`
Estes dois comandos simples poderiam ser usados para criar um aplicativo rudimentar de gravao
de CDs, veja s:
#!/bin/sh
zenity --info --text "Coloque uma mdia virgem no drive"
iso=`zenity --file-selection --title "Escolha o arquivo ISO para gravar:"`
wodim dev=/dev/scd0 speed=16 -dao -eject -v $iso
Quando executado, o script mostraria as duas janelas e gravaria o arquivo ISO selecionado usado o
wodim, que um aplicativo de gravao de CDs via linha de comando, usado por diversos outros
aplicativos. Quando voc queima um CD usando o Brasero ou o K3B, o wodim quem faz o
trabalho pesado, assim como no caso do nosso script:

Graas opo "-eject" adicionada linha de gravao, o script ejeta a mdia depois de gravada, o
que torna desnecessrio incluir mais uma janela avisando que a gravao foi concluda. O wodim
suporta diversas outras opes de gravao (que voc pode consultar no "man wodim"), que
poderiam ser usadas para aperfeioar o script. Voc precisaria apenas incluir algumas perguntas
adicionais, salvar as respostas em variveis e inclu-las na linha de gravao.
Concluindo essa breve introduo, dois outros comandos fundamentais em se tratando de shellscripts so o pipe e o grep. Aqui vai uma explicao resumida sobre eles:
pipe: Junto com as setas de redirecionamento (> e >>), o pipe ( | ) muito usado em scripts e
comandos diversos. Ele permite fazer com que a sada de um comando seja enviada para outro ao
invs de ser mostrada na tela. Parece uma coisa muito extica, mas acaba sendo incrivelmente til,
pois permite "combinar" diversos comandos que originalmente no teriam nenhuma relao entre
si, de forma que eles faam alguma coisa especfica. Um exemplo simples o "modprobe -l | more",
que vimos no tpico sobre o kernel, onde o pipe usado para que a enorme lista gerada pelo
comando "modprobe -l" seja enviada ao "more", que se encarrega de criar as quebras de pgina.
grep: O grep permite filtrar a sada de um determinado comando, de forma que ao invs de um
monte de linhas, voc veja apenas a informao que est procurando. Ele frequentemente usado
em conjunto com o pipe, sobretudo em scripts.
Um exemplo simples: sua placa de rede no est funcionando e voc quer saber se o mdulo de
kernel "sis900", que d suporte a ela, est carregado. Voc pode ver os mdulos que esto
carregados usando o comando "lsmod", mas a lista um pouco longa. Voc poderia completar o
lsmod com o "| grep sis900", que vai filtrar usando o grep, mostrando na tela apenas as linhas
contendo "sis900". O comando ficaria ento "lsmod | grep sis900".
Se no aparecer nada na tela, voc sabe de antemo que o mdulo no est ativo. Neste caso, voc
poderia tentar carreg-lo manualmente usando o comando "modprobe sis900", como root.
Em um script, o mesmo comando poderia ser usado para detectar se o mdulo est carregado ou no
e, a partir da, mostrar uma mensagem na tela, ou carreg-lo automaticamente.
Ao longo do livro, veremos mais alguns exemplos de uso do shell-script, esta foi apenas uma
introduo rpida destinada a apresentar alguns dos conceitos bsicos. Uma caracterstica
importante do shell-script que assim que voc toma coragem e comea a escrever alguns scripts
bsicos, voc acaba se empolgando e passa a, gradualmente, incorporar novos truques, aprendendo

uma coisa aqui e outra ali, mesmo sem estudar especificamente sobre o assunto.
Quer comprar o Linux, Guia Prtico impresso? Clique aqui!
ndice

Prximo: Montando e desmontando


Anterior: A questo das permisses
Capa
Introduo: Uma breve histria do Linux [+ 2]
Captulo 1: Entendendo o sistema
A rvore genealgica das distribuies [+ 7]
A questo dos aplicativos [+ 1]
Entendendo o sistema
O Kernel
Entendendo os diretrios
Usando o terminal
Comandos do prompt
O su, o sux e o sudo
A questo das permisses
Uma introduo ao shell-script
Montando e desmontando
Usando o Gparted
O X e as interfaces [+ 2]
Boot, servios e arquivos de inicializao
Opes para solucionar problemas
Captulo 2: Aprofundando os estudos com o Slackware [+ 26]
Captulo 3: Mandriva, KDE 4 e aplicativos [+ 36]
Captulo 4: OpenSUSE e o YaST [+ 16]
Captulo 5: Ubuntu [+ 28]
Captulo 6: Debian como desktop [+ 24]
Captulo 7: Fedora [+ 11]
Captulo 8: Virtualizao e Wine [+ 16]
Captulo 9: Outras distribuies [+ 16]

79 comentriosPor Carlos E. Morimoto. Revisado 1/jun/2009 s 02h00

Comentrios
Entrar e fazer comentrio
12345678
Simples e direto
Criado 28/ago/2012 s 13h53 por Fc Oliveira
Resolvi um problema rapidamente com esse tutorial. Nao tinha a senha do usuario anterior e nem a
do root e precisava dos arquivos. Muito bom!
Atualizao
Criado 7/mai/2012 s 15h48 por Gean paulo M. dos santos
Ol professor!
Qando saira a nova atualizao desse livro?.

obrigado!
Xfce no monta Parties (Ubuntu, Windows)
Criado 26/abr/2012 s 09h28 por Henrique Nunes
Bom dia,
Sou novo no mundo Arch e at ontem estava tudo timo rodando certinho. Como de costume rodei
# pacman -Syu e pronto comearam os problemas... No consigo mais montar as parties (Ubuntu
e Windows) a segunda vez que acontece... a pergunta seria, exite algum pacote que gerencia essa
montagem de parties? Ex. (hal, storage...) pesquisei no arch frum e segui uma dica mudando o
script do "polity", mas no deu certo. Como poderia resolver?
Desde j grato pela ateno.
Linux
Criado 15/mar/2012 s 15h05 por Valicheski
Ol Professor!
Gostaria de saber qual a melhor distribuio do linux?
At porque o linux a cada 6 meses lanado uma nova verso, ai gostaria de saber:Qual a melhor
distribuo? A diferena entre ela?Em relao as verses lanadas!Como por exemplo existe a
distribuo FEDORA, UBUNTU, MANDRIVA? Qual a diferena entre elas?
Fedora, Linux etc..!
Criado 9/fev/2012 s 19h42 por Derli (annimo)
Boa Tarde
Preciso verificar o conteudo de um hard disk, que no consigo visualizar em qualquer verso do
Ruindows, me indicaram a baixa, grava um CD/DVD e dar boot com programa Fedora 8. meu
interesse consiste em verificar conteudo e se possvel fazer varias copias do programa para outros
hard disk. aceito qualquer tipo de sujesto e ajuda. Desdes-ja expresso meus aos colegas do forum.
Obs: No tenho conhecimento algum da plataforma Linux e compatveis.
Esse Livro serve para iniciante?
Criado 6/jan/2012 s 22h24 por cleriston (annimo)
Alo pessoal ou ao Propio Morimoto, queria saber se esse livro indicado para pessoas que nunca
tiveram contato com o linux?
Expandir rplicas
livro por Anonymus (annimo)
LInux Ubuntu
Criado 19/dez/2011 s 18h14 por Antonio Sobrinho (annimo)
Prezado Prof., boa tarde!!!
Instalei em meu pc o Linux e tambm o VMware com Ubuntu. Deu tudo certo. O qu eu preciso
saber como entrar na tela de programa do Ubuntu, a mesma do Windows que entra com o "cmd" e
vem a tela preta do DOS. No consigo entrar no Linux para digitar programas.
Conto com a tua ajuda.
acarlos@euroformi.com.br
Expandir rplicas

Resposta. por Gabriel Santini Francisco (annimo)


LInux Ubuntu por Edson (annimo)
Ausncia do Prof. Morimoto!
Criado 16/mai/2011 s 19h24 por pabloitajai
acompanho este site deste 2004 e sempre dou uma fuada aqui para tirar duvidas. nao sou da area
de TI mas apenas um autodidata. de 2004 a 2009 o professor Morimoto dava verdadeiras aulas
neste site e aprendi bastante coisa sobre o linux aqui. mas tenho percebido uma certa ausncia do
professor por aqui... parece que aos poucos tem deixado o linux meio de lado e focado mais no
hardware... professor Morimoto estou certo? um forte abrao a todos!
Expandir rplicas
Prof. Morimoto URSO por Prof. Morimoto URSO (annimo)
Parabns pelo Artigo
Criado 5/ago/2011 s 23h00 por Adriano Ricardo (annimo)
Em poucos sites vi um texto to bem escrito como o seu Carlos E. Morimoto, se pretendia fazer um
guia rpido conseguiu, meus parabns a voc, me ajudou muito, pois precisava entender mais sobre
inicializao dos servios pra poder inicializar meus servidores locais. Muito obrigado pela
contribuio, um grande abrao.
Expandir rplicas
como instala programa no linux por Sandoval Fernandes Guedes (annimo)
indices
Criado 10/out/2011 s 20h15 por kallikrates wallace (annimo)
Otimos livros. E mais uma vez aproveito para fazer a Campanha Morimoto Coloque ndice
Remissivo no Final dos Livros. S falta isto para completar a maestria do que escreve.
12345678

Destaques
Gostou do texto?
Veja nossos livros impressos:
Smartphones | Linux | Hardware
Redes | Servidores Linux
... ou encontre o que procura usando a busca:

Guia do Hardware agora Hardware.com.br


Hardware II, o Guia Definitivo
Siga-nos:
RSS | Twitter | Facebook
1999-2012 Hardware.com.br. Todos os direitos reservados.
Home

Frum GdH
RSS
Equipe
Topo

You might also like