Upload
others
View
20
Download
0
Embed Size (px)
Citation preview
Comandos e Programação Básica em Unix, Linuxe Mac OS
O *nix de A a Z: de apropos a zip
{marco.mangan, marcelo.cohen}@pucrs.br
Janeiro de 2010
Nota sobre direitos autorais
I Os autores permitem a utilização deste material desde quemantido em sua totalidade. A utilização de parte do materialnão é permitida.
I A versão deste documento está indicada abaixo:
$Id: pucrs-facin-linux.lyx 284 2009-12-08 01:23:17Z masmangan $
I A versão mais atual deste documento está em:
http://www.inf.pucrs.br/~mangan/extensao/linux
Sobre este curso
I Curso básico de Linux, Unix e Mac OS (20 horas-aula):I histórico dos *nix, visão geral;I comandos no interpretador bash;I resolvendo tarefas complicadas com comandos simples;I processamento de textos no bash: transformação de textos,
extração de dados.
Proposta
Público: desenvolvedores, pesquisadores, alunos de graduação.Objetivos: apresentar os sistemas *nix, aumentar a capacidade
de resolver problemas, otimizar a execução de tarefascotidianas.
Abordagem: explorar os comandos mais comuns, incentivar aautonomia e o auto-aprendizado durante e após ocurso.
Cronograma
Primeiro dia, segundo dia: histórico, conceitos e comandos.Terceiro dia, quarto dia: programação e automação de tarefas.Quinto dia: exemplos de projetos de programação e automação de
tarefas.
Em média, 5 minutos para cada comando.
Breve histórico do *nix
I 1960I AT&T UNIX
I 1970I Berkeley Software Distribution (BSD)
I 1980I Minix, FreeBSD, SunOS, AIX, POSIX
I 1990I Linux, Mac OS
Personalidades
I Ken Thompson (EUA)I Primeiro Unix
I Richard Stallman (EUA)I GNU/Free Software Foundation
I Armando Stettner (EUA)I Open Software Foundation
I Linus Torvalds (Finlândia)I Linux, núcleo do Linux
I Steve Jobs (EUA)I Mac OS
I Mark Shuttleworth (África do Sul)I Ubuntu
Hardware- 1.21 gigawatts? 1.21 gigawatts? Great Scott!
I Asus EEEPC, 1Kg, R$ 1.000,00I Arch Linux, Ubuntu
I leve
I MacBook, 2Kg, R$ 3.000,00I Apple Mac OS X Snow Leopard
I backup automático (Time Machine)I projeto integrado de hardware e software
I IBM Blade Center, 60Kg, R$ 17.000,00I IBM AIX
I servidor de rede localI confiável, redundante
Características do *nix- Everybody should have one talent, what’s yours?
I Multi-usuário:I cada usuário tem uma área de trabalho privada para arquivos e
execução de programas.
I Multi-tarefa:I processos compartilham ou concorrem por recursos.
I Redes de computadores:I arquivos e processos podem estar em outros computadores.
Bourne-again Shell- Look! It’s moving. It’s alive! It’s alive!
I Um interpretador que executa comandos recebidos via tecladoou a partir de um arquivo.
I Um shell permite a interação entre o usuário e os processos emexecução:
I bash, sh, tcsh, ksh, zsh: exemplos de shell com comandos viatexto;
I Gnome, KDE: exemplos de shell com comandos via janelas,ícones, menus e apontador (mouse).
I Gnome e KDE são ambientes gráficos que utilizam a metáforade mesa de trabalho (desktop environments).
Quando utilizar o bash
I Operação remotaI Computador limitado
I recursos escassosI programas ausentes
I Tarefas recorrentesI Registrar procedimentosI Quando o mouse tranca... :)
Caracteres especiais
I Caracteres especiais:
~ diretório pessoal do usuário (home)* e ? coringas para nomes de arquivos. e .. diretório atual e diretório pai
/ separador em nomes de arquivo|, > e >> redirecionamento, criar arquivo, acrescentar
dados a um arquivo; separador de comandos
Teclas especiais
I Teclas especiais:I Parar o que está sendo feito: Ctrl+C.I Mover para segundo plano ou suspender: Ctrl+Z.I Final de arquivo: Ctrl+DI Auto-preenchimento: Tab.
Aprender sempre...
I O sistema de ajuda integrado:I man, info, apropos
I Relembrando comandos:I history
I Como executar um programa:I palavras-chave e parâmetrosI parâmetro help, –help, -help, –h, -h
I Google it!I nome do comando, tarefa, mensagens de erroI palavras-chave: howto, wiki, example, manual, tip, tutorial
Exercício�
I No bash, experimente os seguintes comandos:
$ history$ man man$ info info$ apropos apropos$ history$ clear
I Para interromper man e info, digite q.I Experimente Tab para completar as palavras.I Experimente Ctrl+C ou Ctrl+Z para interromper processos.
Resolvendo erros...
I Um erro de digitação no nome do comando:I o erro é informado pelo bash
$ mn man-bash: mn: command not found
I Um erro de digitação no parâmetro do comando:I o erro é informado pelo programa acionado
$ man mnNo manual entry for mn.
... e depois pedindo ajuda- Houston, we have a...
I Nem sempre a causa do erro é simples de encontrar.I Para pedir ajuda, anote o comando, a mensagem de erro e a
intenção.I Interação social:
I "Tentei um comando e não funcionou."I "Que chato..."
I Interação técnica:I "Tentei o comando m-n, espaço, m-a-n e a mensagem de erro
foi: -bash: mn: command not found. Eu estava procurandopelo manual do comando man. Tentei procurar a mensagemde erro no Google, mas não achei nada útil."
I "Deveria ter digitado *MAN* man. Faltou uma letra... Podeusar info man também."
Exercício�
I Experimente procurar no Google:I howto linux backupI example linux mount
Oferecendo ajuda- You don’t trust me at all, do you?
I Procure incentivar a autonomia:I Read the fabulous manual (RTFM)!
I Tente acompanhar a intenção original:I Nããooo!! Ninguém usa o comando abc! Sempre usei o xyz!
I Aproveite para aprender também:I Ãhh?... E não é que funciona?
Comandos essenciais
I Entrada e saídaI Computadores, dispositivos e usuáriosI Redes de computadoresI ProcessosI ArquivosI Configuração do seu ambiente pessoal
Entrada e saída- Wiggle your big toe.
I Entrada e saída do sistema:I login, logout, exit, shutdown, halt
I Alteração de sua senha:I passwd
I Interface gráfica:I startx
Exercício�
I Utilize um ambiente gráfico para executar os comandos dospróximos exercícios.
I Encontre as diferenças entre os comandos de entrada e saída.
Computadores, dispositivos e usuários- I’m affraid I can’t do that, Dave.
I Dados do seu computador:I hostinfo, hostname, uname
I Dispositivos do seu computador:I df, mount, quota
I Sua identificação:I whoami, id, finger
Exercício�
I Encontre endereço IP, nome e sistema operacional do seucomputador.
I Descubra quanto espaço há nos discos disponíveis.I Confira seu nome de usuário.
Redes de ComputadoresTo explore strange new worlds...
I Redes disponíveis, rotas e endereços:I ifconfig, traceroute, ping, host
Exercício�
I Experimente os comandos:
$ host localhost$ host www.cnn.com$ traceroute www.cnn.com$ ping www.cnn.com$ ifconfig
Processos- I am grieving. It’s a process.
I Programas em execução:I top, ps, pstree, fuser
I Iniciar e interromper a execução de um programa:I fg, bg, jobs, kill, killall, nohup, nice
I Localizar um arquivo ou programaI which, locate, find
Exercício�
I Execute o comando abaixo:
$ xeyes
I Interrompa o programa com Ctrl-Z e digite:
$ jobs
I Reinicie a execução com o comando fg.
$ fg xeyes
Exercício�
I Execute top e assista um vídeo ou use outro programa queocupe o processador, memória ou disco.
Exercício�
I Execute o comando abaixo e o cancele com killall:
$ yes "Sou imortal..." &
Exercício�
I Compare os comandos:
$ which javac$ locate javac$ find / -name javac -print
Arquivos- So let it be written. So let it be done.
I pwd, cd, ls, mkdirI cp, mv, rm, rmdir, lnI file, hexdump, native2asciiI cat, more, less, head, tail, wc
Exercício�
I Compare os comandos:
$ more ~/.bash_history$ head ~/.bash_history$ head ~/.bash_history | hexdump -C$ wc -l ~/.bash_history
Configuração do seu ambiente pessoal- My Precious! O my Precious!
I Comandos básicos:I set, export, alias, source
I Arquivos de configuração:I .bashrc, .bash_profile, .bash_history
Comandos básicos
I Consultar, comparar, alterar e remover o conteúdo de arquivos:I textoI binários
Acesso remotoThe Truth is out there...
I Utilizando outro computador, via terminal:I ssh, telnet, rlogin
I Utilizando outro computador, via janelas, ícones...:I vnc, rdesktop, nxclient
Exercício�
I Execute os comandos:
$ hostname$ ssh eaco.inf.pucrs.br -l <seu usuário>$ hostname$ exit
Transferindo arquivos
I Transferindo arquivos entre computadores:I wget, curl, ftp, scp, sftp
Exercício�
I Compare os comandos:
$ curl cnn.com | head$ curl upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg -o abc.svg
Compartilhando arquivos- My half was on the bottom.
I Compartilhando arquivos:I cvs, svn, git
Exercício�
I Execute os comandos:
$ cd ~$ mkdir historia$ cd historia$ svn co wush.net/svn/masmangan/crepusculo \--username tux --password worlddomination$ more introducao.txt
I Aguarde para editar o arquivo e execute:
$ svn ci -m "alterei"I Aguarde para ver as alterações realizadas:
$ svn update
Impressoras e Mídias Removíveis- Do I look like I’m joking?
I ImpressoraI lpq, lpr, lpstat, lprm
I Mídias removíveisI mount, umountI sync
I Gravação de discos óticos, imagens ISOI dd
Comparação de dados- What, are you some kind of parrot?
I Processamento de textos:I diff, patch, meld, openssl
Extração de dados
I Processamento de textos:I grep, fgrep, tail, less, cut, tr
Transformação de dados- Oh my God. Oh my God, is he nuts?
I Processamento de textos:I tar, zip, unzip
I sort, rs, topsI sed, awk
Imagem, vídeo e áudio
I Imagem:I pdfcrop, convert
I Vídeo:I mplayer, vlc
I Áudio:I afinfo, faad
I http://bitbucket.org/rg3/youtube-dl/wiki/HomeI curl http://bitbucket.org/rg3/youtube-
dl/raw/2009.09.13/youtube-dl
Editores e Processadores de Texto
I Processadores de texto:I viI emacsI lyx
Lotes de Comandos
I man builtinI man bashI crie seu próprio programa!
Variáveis
I atribuição: A = oiI substituição: echo $AI expansão: echo ‘hostname‘ ou echo $(hostname)I expressões aritméticas
CondicionalNo pé ou na mão?
I if
RepetiçãoPede para sair, Zero-Um!
I forI while
Automação de Tarefas com bash- Alright. Ripley, when I give an order I expect to be obeyed.
I Obter dados de uma página na Web ou arquivo: extração dedados:
I Impressão remota e processos remotos: tele-trabalho:I Escrever um texto acadêmico e apresentações: edição de
textos:
Extração de Dados de uma Página na Web- Torture numbers, and they’ll confess to anything!
I wgetI sortI rsI joinI tops
Extração de Dados de um Documento XML- It’s a crocodile... but maybe now somebody’s happy I brought my big gun?
I Extensible Stylesheet Language Transformation
$ curl http://www.w3schools.com/XML/cd_catalog.xml \-o catalogo.xml$ curl http://www.inf.pucrs.br/~mangan/extensao/linux/xslt/exemplo.zip$ unzip exemplo.zip$ javac Transform.java$ java Transform catalogo.xml lista.xslt
Executar Comandos em Outro Computador- Grab your towel and don’t panic!
I Preparando um diretório no computador remotoI ssh eaco.inf.pucrs.br -l ...I mkdir ~/dadosI cd ~/dados
I Executando os programas e acumulando dados:I nice yes "Yes, Sir" | head > dados.txtI nice yes "No, Sir" | head >> dados.txt
I Preparando dados para o transporte:I openssl sha1 dados.txt > tmp-origem.sigI zip dados.zip dados.txt tmp-origem.sig
Executar Comandos em Outro Computador- There and back again...
I Retornando ao computador local e transferindo os dados:I logoutI scp [email protected]:dados.zip
I Conferindo os dados:I unzip dados.zipI openssl sha1 dados.txt > tmp-destino.sigI diff tmp-origem.sig tmp-destino.zip
Executar Comandos em Outro Computador- Grab you gun and bring in the cat.
I Removendo dados locaisI rm-i dados.zip tmp-*
I Removendo dados locais e remotos (depois de gravar os dadosimportantes em CD e publicar o artigo!)
I ssh eaco.inf.pucrs.br -l ...I rm -iR ~/dadosI logout
Redação de Textos Acadêmicos- Real men don’t click!
I svnI gerar e editar figurasI gerar e formatar dadosI organizar bibliografiasI lyxI gerar pdfs de apresentação, folheto e artigo.
Exemplos de Projetos- Have you ever danced with the devil in the pale moonlight?
I Compilar e executar projetos prontosI Realizar pequenas modificaçõesI Perl: http://www.linuxjournal.com/article/3882
Word Count- We can make him better than he was before. Better, stronger, faster.
I http://ubuntuforums.org/showthread.php?t=241328I
http://www.gnu.org/software/cflow/manual/html_node/Source-of-wc-command.html
I http://codesnippets.joyent.com/tag/wc
Molecule Viewer- Veni, vidi, vici.
I http://www.ks.uiuc.edu/Research/jmv/demo/jmv-0.85/JMV.html
I http://jmol.sourceforge.net/I http://freshmeat.net/projects/jmv
IMDB scrapping- Use the Force, Luke!
I teste
IMDB scrapping- Use the Force, Luke!
I teste
Blipkit- You’d make a splendid computer, Mr Spock. - That is very kind of you, Captain!
I http://www.blipkit.org/svn.htmlI http://www.blipkit.org/examples.htmlI http://www.berkeleybop.org/ontologies/obo-
all/oboInOwl/oboInOwl.pro
Conclusão
I ResumoI SugestõesI ReclamaçõesI Elogios, por favor.
Para saber mais...Richard Linley, Eric Rountree, Tom Bradshaw. (2000) Gettingstarted. In: CASLab User’s Guide.http://www.caslab.queensu.ca/userguide/node24.html
Gary Anthes. (2009) Unix turns 40. ComputerWorld, June.http://tinyurl.com/rdlf8o
BlipKit. (2005) Biomedical Logic Programming KnowledgeIntegration Kit. http://blipkit.org
Eric M. Burke. (2001) Top Ten Java and XSLT Tips. O’Reilly.http://tinyurl.com/ycuj7uh
Chet Ramey, Brian Fox. (2009) Bash Reference Manual. FreeSoftware Foundationhttp://www.gnu.org/software/bash/manual/
http://blogs.computerworld.com/14876/london_stock_exchange_dumps_windows_for_linux
http://techbase.kde.org/Development/Tutorials/Git
http://flavio.castelli.name/howto_use_git_with_svn