shell_script_xxviisf.pdf

112
Salviano A. Le ˜ ao –1 Linux: Do B ´ asico Ao Shell-Script Prof. Dr. Salviano A. Le ˜ ao Junho de 2010

Upload: salviano-a-leao

Post on 09-Aug-2015

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Shell_Script_XXVIISF.pdf

Salviano A. Leao – 1

Linux: Do B asico Ao Shell-Script

Prof. Dr. Salviano A. Leao

Junho de 2010

Page 2: Shell_Script_XXVIISF.pdf

Sumario

Salviano A. Leao – 2

☞ Linux: comandos basicos

☞ Bash e ferramentas

☞ Construcao e analise de alguns scripts

Page 3: Shell_Script_XXVIISF.pdf

Refer encias para os comandos b asicos

Salviano A. Leao – 3

http://www.guiaubuntupt.org/wiki/index.php?title=Comandos_basicos#c

http://www.planetarium.com.br/planetarium/noticias/2004/2/107662993

☞ http://wiki.ubuntu-br.org/ComandosBasicos

☞ http://www.infowester.com/comandoslinux.php

http://www.mtm.ufsc.br/~krukoski/pub/linux/focalinux2/ch-cmdv.htm

☞ http://pt.wikipedia.org/wiki/Guia_de_comandos_para_Linux/Unix

http://www.vivaolinux.com.br/artigo/Fundamentos-do-sistema-Linux-co

☞ http://focalinux.cipsga.org.br/

Page 4: Shell_Script_XXVIISF.pdf

Refer encias para Shell-script

Salviano A. Leao – 4

☞ Julio Cezar Neves: http://br.gnome.org/TWikiBar/TWikiBarPapo001

☞ Aurelio Marinho Jargas: http://aurelio.net/shell/

☞ wikipedia: http://pt.wikipedia.org/wiki/Shell_script

☞ Shell Script: http://www.inf.ufpr.br/afms03/shell.html

☞ Shell Script 4 All: http://shellscript4all.blogspot.com/

☞ Advanced Bash-Sripting Guide: http://tldp.org/LDP/abs/html/

☞ Bash by examples:http://www.ibm.com/developerworks/linux/library/l-bash.html

☞ Shelldorado: http://www.shelldorado.com/

Page 5: Shell_Script_XXVIISF.pdf

Livros recomendados

Salviano A. Leao – 5

☞ Julio Cezar Neves, Programac ao Shell Linux , Editora Brasport 7a¯ edicao

(2008)

☞ Aurelio Marinho Jargas, Shell Script Profissional , editora Novatec (2008).

☞ Aurelio Marinho Jargas, Express oes Regulares – Uma abordagem divertida ,editora Novatec 3a

¯ edicao(2009).

☞ Carl Albing, JP Vossen, and Cameron Newham, Bash Cookbook , O’Reilly FirstEdition (2007).

☞ Eric Foster-Johnson, John C. Welsh and Micah Anderson, Beginning ShellScripting , Wiley Publishing Inc. (2005).

☞ Dale Dougherrty and Arnold Robbins, Sed & awk , O’Reilly Second Edition(1997).

☞ Jeffrey E.F. Friedl, Mastering Regular Expressions , O’Reilly Third Edition(2006).

Page 6: Shell_Script_XXVIISF.pdf

Obtendo ajuda

Salviano A. Leao – 6

help Mostra informacoes gerais sobre os comandos intrınsecos do Shell;

man Mostra toda a informacao a respeito de um comando;

info Mostra documentacao no formato proprio do info;

apropos Pesquisa na paginas do man nomes e descricoes que se encaixam ocomando buscado;

whatis Procura nomes na paginas do man e mostra na tela as paginas de descricaode qualquer nome que se assemelha;

catman Constroi o banco de dados que o apropos faz uso.

Em geral os comandos GNU/Linux fornecem uma pequena descricao sobre ocomando ao digitarmos o comando com a opcao --help:

$ comando --help

A sintaxe geral dos comandos linux e:

$ comando [opcao ... ] [ expressao ] [ arquivo ... ]

Page 7: Shell_Script_XXVIISF.pdf

man pages - Manual de Refer encias

Salviano A. Leao – 7

Estrutura das P aginas do man

1. Comandos do usuarioComandos que podem ser executados apartir do shell

2. Chamadas do sistemaFuncoes que devem ser executadas pelokernel

3. Biblioteca de funcoesFuncoes internas das bibliotecas, princi-palmente as da libc

4. Formato de arquivos especiaisDriver e hardware, principalmente os en-contrados em /dev

5. Arquivos de configuracaoFormato de arquivos e convencoes, porexemplo /etc/passwd

6. Jogos e demonstracoes Jogos

7. Pacotes de macros e convencoesSistemas de arquivos, protocolos de rede,codigos ASCII e outros

8. Comandos de administracao do sis-tema

Comandos que em geral so o root podeexecutar

9. Rotinas do Kernel Nao e padrao

Page 8: Shell_Script_XXVIISF.pdf

Comandos b asicos usu ario: qualquer

Salviano A. Leao – 8

chage user Muda as informacoes de expiracao da senha do usuario user;

chfn user Muda o nome real do usuario user e suas informacoes;

crontab Mantem individualmente as tarefas agendadas para cada usuario;

finger user Mostra informacoes sobre o usuario user;

id Mostra as identificacoes do reais e efetivas dos usuarios e grupos;

last Mostras as coneccoes mais recentes do usuario;

lastlog Mostra a ultima conecao dos usuarios do sistema;

passwd user Troca senha do usuario user;

uptime Mostra a quantas horas seu computador esta ligado;

w Mostra os usuarios conectados atualmente no computador;

who Mostra quem esta usando o sistema.

whoami Mostra o nome de login do usuario. O mesmo que id -un.

Page 9: Shell_Script_XXVIISF.pdf

Comandos b asicos do sistema

Salviano A. Leao – 9

exit Sair do terminal;

halt Desligar o sistema;

logout Sair do terminal;

reboot Reinicia o computador;

shutdown Desliga ou reinicia o computador. Ha algumas opcoes para esse comando,veja por exemplo:

shutdown -r now Reinicia o computador;

shutdown -h now Desliga o computador;

O parametro now pode ser mudado. Por exemplo: digite

$ shutdown -r +10

e o sistema ira reiniciar daqui a 10 minutos;

Page 10: Shell_Script_XXVIISF.pdf

Comandos b asicos usu ario: superusu ario

Salviano A. Leao – 10

O usuario comun pode usar, entretanto ele deve possuir permissoes:

su Muda a identificacao do usuario ou torna-se o superusuario, o root;

sudo Executa um comando com um outro usuario;

Somente o superusuario pode executar:

addgroup Adiciona usuarios e grupos ao sistema, de acordo com as opcoes;

adduser Adiciona usuarios e grupos ao sistema, de acordo com as opcoes;

delgroup Remove um usuario ou grupo do sistema;

deluser Remove um usuario ou grupo do sistema;

lastb Mostra lista dos ultimos usuarios conectados no sistema;

useradd Cria um novo usuario ou adapta as informacoes de um usuario;

userdel Apaga todos os arquivos relacionados ao usuario;

usermod Modifica as informacoes do sistema relativas ao usuario;

Page 11: Shell_Script_XXVIISF.pdf

O Comando history

Salviano A. Leao – 11

Ele mostra os ultimos 1000 comandos executados na linha de comando na contacorrente. O comando history -c apaga historia dos ultimos comando digitados;Designador de eventos – ele refere-se a uma linha da lista do history

!n Refere-se a n-esima linha de comando da lista;

!-n Refere-se a corrente linha de comando menos n;

!! Refere-se ao comando previo;

!texto Refere-se ao mais recente comando que inicia com texto;

!?texto[? ] Refere-se ao mais recente comando contendo texto;

ˆtexto1ˆtexto2ˆ Repita o ultimo comando trocando texto1 por texto2;

Page 12: Shell_Script_XXVIISF.pdf

Estrutura de Arquivos do Linux

Salviano A. Leao – 12

/

|-- bin

|-- boot

|-- dev

|-- etc

|-- home

| -- salviano

|-- lib

|-- media

|-- mnt

|-- proc

|-- root

|-- sbin

|-- sys

|-- tmp

|-- usr

|-- var

|-- usr

| |-- bin

| |-- games

| |-- include

| |-- lib

| |-- lib32

| |-- lib64 -> lib

| |-- local

| |-- sbin

| |-- share

| ‘-- src

Page 13: Shell_Script_XXVIISF.pdf

Conteudo dos diret orios

Salviano A. Leao – 13

Diret orio Tipos de arquivos

/bin Principais utilitarios do sistema.

/bootContem os arquivos e a imagem do kernel necessarios para ainicilizacao do sitema.

/dev Arquivos especiais dos dispositivos do sistema./etc Arquivos de configuracao do sistema./home Local onde ficam os diretorios dos usuarios com contas no sistema.

/libBibliotecas de funcoes administrativas do sistema alem dos modulosdo kernel.

/mediaEm geral onde sao montados os dispositivos removıveis, por exemploos pendrives, CDs e DVD, etc.

/proc Arquivos com informacoes sobre o hardware./root diretorio padrao do superusuario, o root.

/sbinComando de manutencao do sistema, em geral so o superusuariopode executar.

/tmp arquivos temporarios do sistema

Page 14: Shell_Script_XXVIISF.pdf

Conteudo dos diret orios

Salviano A. Leao – 14

Diret orio Tipos de arquivos

/usr Encontram os utilitarios, documentacao, bibliotecas, etc./usr/bin Utilitarios que o usuario tem permissao para executar./usr/games Jogos./usr/include Cabecalhos das bibliotecas./usr/lib Bibliotecas./usr/local Usado por programas especıficos do usuario./usr/local/bin Os programas executaveis especıficos do usuario./usr/local/lib As bibliotecas dos programas especıficos do usuario.

/usr/sbinUtilitarios do sistema que o superusuario tem permissao para execu-tar.

/usr/share Local onde encontra-se a documentacao, icones, etc./usr/src Aqui encontra-se o codigo fonte do kernel quando ele e instalado.

/varOnde o sistema guarda os relatorios, os arquivos de log, e os arquivosde impressao, de email, de download instalacao do siste, etc.

Page 15: Shell_Script_XXVIISF.pdf

Informac oes sobre as partic oes

Salviano A. Leao – 15

fdisk Mostra informacoes sobre as particoes e tambem edita as particoes do sistema.As informacoes sao obtidas melhor pelo comando:

phonon:~/Seminarios/XXVIISF > sudo fdisk -l /dev/sda

Disco /dev/sda: 320.1 GB, 320072933376 bytes255 heads, 63 sectors/track, 38913 cylindersUnidades = cilindros de 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesIdentificador do disco: 0x20000000

Dispositivo Boot Inıcio Fim Blocos Id Sistema/dev/sda1 1 10 80293+ de Utilitario Dell/dev/sda2 * 11 1202 9566208 7 HPFS ou NTFS/dev/sda3 1202 7575 51197266 7 HPFS ou NTFS/dev/sda4 7576 38913 251722454 5 Estendida/dev/sda5 7576 13312 46082421 83 Linux/dev/sda6 13313 38403 201543426 83 Linux/dev/sda7 38404 38913 4096543+ 82 Linux swap / Solaris

Page 16: Shell_Script_XXVIISF.pdf

Informac oes sobre o uso do sistema de arquivos

Salviano A. Leao – 16

df Mostra informacoes dos discos de todos os sistemas de arquivos. Ha algumasopcoes interessantes:

df -h Mostra as informacoes num formato mais legıvel;

Sist. Arq. Tam Usad Disp Uso% Montado em/dev/sda5 44G 12G 30G 28% /none 1,9G 324K 1,9G 1% /devnone 1,9G 188K 1,9G 1% /dev/shmnone 1,9G 92K 1,9G 1% /var/runnone 1,9G 0 1,9G 0% /var/locknone 1,9G 0 1,9G 0% /lib/init/rw/dev/sda6 190G 74G 107G 41% /home/dev/sda3 49G 21G 29G 42% /windows

free Mostra o uso da memoria do computador, inclusive do swap. As opcoes -b, -k,-m, -g mostra o resultado respectivamente em unidades de bytes, KB, MB, ouGB.

Page 17: Shell_Script_XXVIISF.pdf

Informac oes sobre o uso do disco

Salviano A. Leao – 17

du Mostra o uso detalhado de disco no diretorio corrente e em seus subdiretorios. Hadiversas opcoes:

du -h Mostra informacoes em formato legıvel.

du -s Mostra de forma sintetica o uso do disco.

du -sh Mostra de forma sintetica o uso do disco em formato legıvel.

du -ah Mostra tambem o tamanho dos arquivos, tudo em formato legıvel.

du –max-depth=n -ah Mostra tambem o tamanho dos arquivos, tudo emformato legıvel, porem so vai ate n nıveis de profundidade desubdiretorios.

Page 18: Shell_Script_XXVIISF.pdf

Vari aveis de ambiente e atalhos

Salviano A. Leao – 18

As variaveis definidas pelo sistema para cada usuario sao obtidas com o comando envou printenv

$ env$ printenv

Ele fornece todas as variaveis de ambiente usadas pelo usuario. Os arquivos deconfiguracao da area do usuario sao:

Arquivo Conteudo

.bashrcSempre que se entra no sistema esse e o primeiro arquivoa ser rodado. Nele encontra-se a defincao do formato doprompt, o PATH do usuario, suas definicoes, etc.

.bash aliases Aqui o usuario defini os seus atalhos.

Page 19: Shell_Script_XXVIISF.pdf

Arquivo .bashrc

Salviano A. Leao – 19

# .bashrc

# Ajusta PATH para incluir o diretorio bin especıfico do usuario se existir

if [ -d ~/bin ] ; then

PATH=${HOME}/bin:/${HOME}/bin/fx:${PATH}

fi

# N~ao duplique as linhas do history

export HISTCONTROL="ignorespace:ignoredups"

export HISTIGNORE="&:ls:[bf]g:exit: [ \t]*:ps:cd"

# Definindo algumas variavies do sistema

export BROWSER="/usr/bin/firefox"

export JAVA_HOME="/usr/lib/jvm/java-6-sun/"

# Para obter um prompt colorido

if [ "$USER" = root ]

then

PS1=’${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;33m\]\w > \[\033[00m\]’

else

PS1=’${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;33m\]\w > \[\033[00m\]’

fi

# Habilite a caracterıstica de completar um comando.

if [ -f /etc/bash_completion ]; then

. /etc/bash_completion

fi

# >>>>>>>>>>>>>>> Definic~oes de atalhos <<<<<<<<<<<<<<<<<<<<<

if [ -f ~/.bash_aliases ]; then

. ~/.bash_aliases

fi

# Mensagens de boas vindas ao conetar

clear

echo -ne "Hoje e: "; date +%d/%m/%y

cal

echo -ne "Voce esta logado ha: " ; uptime | awk /’up/ {print $3, $4}’

echo

fortune

Page 20: Shell_Script_XXVIISF.pdf

Arquivo .bash aliases

Salviano A. Leao – 20

# Habilite o suporte a cores do ls e tambem adicione alguns atalhos

if [ "$TERM" != "dumb" ]; then

eval "‘dircolors -b‘" # gera o codigo para definir LS_COLORS p/ o bash

alias ls=’ls --color=auto -hsCF’

alias dir=’ls --color=auto --format=vertical’

alias vdir=’ls --color=auto --format=long’

fi

# Mais alguns atalhos

alias l="ls" # Listagem classica

alias ll="ls -l" # Listagem detalhada

alias lsa=’ls -a’ # Listar tudo

alias lsd="ls -d */" # Listar so diretorios

alias la=’ls -ACF’ # Listar tudo, formatando a saıda

alias l=’ls -ahlsCF’ # List tudo, formatando a saıda em colunas

alias cd..="cd .." # Erro comun de digitac~ao

alias cp="cp -i" # Sempre pede confirmac~ao ao copiar um arquivo

alias mv="mv -i" # Sempre pede confirmac~ao ao mover um arquivo

alias rm="rm -i" # Sempre pede confirmac~ao ao apagar um arquivo

# Mostra o tamanho de um diretorio em formato legıvel.

alias du=’du -h’

# Mostra informac~oes das partic~oes em formato legıvel.

alias df=’df -h’

alias gnuplot="rlwrap -a -c gnuplot"

#Definindo uma func~ao

acha_pac() # Procura por arquivos do LaTeX

{

find /usr/share/texmf/tex/latex/ -type f -name $1\* -print

find /usr/share/texmf-texlive/tex/latex/ -type f -name $1\* -print

find /usr/share/doc/ -type f -name $1\* -print

find /etc/texmf/ -type f -name $1\* -print

}

Page 21: Shell_Script_XXVIISF.pdf

Listando arquivos e diret orios com o ls

Salviano A. Leao – 21

Ha inumeras opcoes para esse comando, entre as mais uteis estao

-C Lista arquivos em colunas, ordenados verticalmente.

-F Sufixa o nome dos diretorios com ’/’, e dos executaveis com ’*’.

-R Lista os diretorios encontrados, recursivamente.

-a Lista todos os arquivos, incluindo os arquivos ocultos.

-c Usa o tempo de alteracao para ordenar.

-d Lista diretorios e arquivos no mesmo formato.

-l Lista todas as informacoes do arquivo em uma coluna.

-r Inverte a ordem do ordenacao.

-t Ordena a exibicao pelo rotulo de tempo.

-u Usa o tempo do ultimo acesso para ordenar.

-1 Lista somente o nome dos arquivos em coluna simples.

Page 22: Shell_Script_XXVIISF.pdf

Uma opc oes uteis do ls para programac ao shell

Salviano A. Leao – 22

-b, - -escape, - -quoting-style=escape Coloca aspas em nomes de arquivos comcaracteres nao graficos usando sequencia de barra invertida alfabetica e octalcomo usado em C. Esta opcao e como a opcao -Q exceto que os nome dearquivos nao sao colocados entre duas aspas.

-B, - -ignore-backups Nao lista arquivos que terminam com ’ ’, a menos que sejamfornecidos na linha de comando.

-Q, - -quote-name, - -quoting-style=c Confina o nome do arquivo em aspas duplas eos caracteres nao graficos entre aspas como no C.

- -full-time Lista o tempo completo, em detrimento a abreviacao padrao. O formato ecomo no padrao date(1) ; nao e possıvel alterar isto, mas voce pode extrair acadeia de caracteres da data com cut(1) e passar o resultado para ’date -d’.

- -show-control-chars Imprime caracteres nao graficos como no nome do arquivo.Isto e o padrao a menos que a saıda seja um terminal e o programa seja ls.

Page 23: Shell_Script_XXVIISF.pdf

Uma opc oes uteis do ls para programac ao shell

Salviano A. Leao – 23

- -quoting-style=word Usa o estilo word para colocar aspas nos nomes da saıda. Aword pode ser uma das seguintes:

literal Saıda de nomes como e. Isto e o comportamento padrao de ls.

shell Colocar aspas nos nomes para o interpretador de comandos se elescontem meta caracteres do interpretador de comandos ou que causariasaıda ambıgua.

shell-always Coloca aspas nos nomes para o interpretador de comandos,mesmo se eles normalmente nao requereriam aspas.

c Coloca aspas nos nomes como nas cadeias de caracteres da linguagem C;isto e igual a opcao -Q.

escape Coloca aspas como o c exceto que omite as aspas duplas ao redor;isto e igual a opcao -b.

Um valor padrao para esta opcao pode ser especificada com a variavel deambiente QUOTING STYLE.

Page 24: Shell_Script_XXVIISF.pdf

Informac oes sobre o sistema

Salviano A. Leao – 24

dmesg Mostra as mensagens da inicializacao (os log) do sistema;

hostname Mostra o nome da maquina que se esta conectado (o host local);

uname Mostra informacoes sobre o sistema.

-a Mostra todas as informacoes;

-o Mostra o sistema operacional;

-p Mostra o tipo do processador

-s Mostra o nome do kernel usado.

lshw Lista o hardware da maquina. Opcoes

-X Lanca uma interface grafica;

-short Retorna informacoes em formato mais compacto;

ifconfig Mostra as interfaces de redes ativas e as informacoes relacionadas a cadauma delas.

Page 25: Shell_Script_XXVIISF.pdf

Comandos de informac oes do sistema

Salviano A. Leao – 25

basename Mostra o NOME sem quaisquer componentes iniciais de diretorio. Se forespecificado, remove tambem o SUFIXO final.

dirname Mostra so o diretorio.

whereis Mostra onde se encontra determinado arquivo (binarios), fonte e paginas demanual ou simplesmente um comando. Algumas opcoes sao:

-b Procure somente binarios;

-m Procure somente nas paginas de manual;

-s Procure somente por codigos fontes;

which Mostra qual arquivo binario esta sendo chamado pelo shell quando chamadovia linha de comando. Opcoes

Page 26: Shell_Script_XXVIISF.pdf

Manipulando arquivos e diret orios

Salviano A. Leao – 26

pwd Mostra o diretorio corrente;

cd Muda de diretorio;

cd Vai para o diretorio raiz do usuario ($HOME);

cd .. Volta um diretorio anterior;

cd - Volta para o ultimo diretorio;

cp Copia um arquivo e/ou diretorio. As opcoes sao:

-i Modo iterativo, pedindo confirmacao para todas as acoes;

-f Forca copia, sobrescrevendo o arquivo alvo caso necessario;

-p Preserva as permissoes na copia;

-r ou -R Copia recursivamente atraves dos subdiretorios;

Page 27: Shell_Script_XXVIISF.pdf

Removendo e Movendo/Renomeando arquivos

Salviano A. Leao – 27

mv Move e/ou renomeia um arquivo e/ou diretorio;

-i Modo iterativo, pedindo confirmacao para todas as acoes;

-f Forca, e ignora a opcao -i;

-r ou -R Vai recursivamente atraves dos subdiretorios;

rm Apaga um arquivo e/ou diretorio;

-i Modo iterativo, pedindo confirmacao para todas as acoes;

-f Forca a remocao, e ignora a opcao -i;

-r ou -R Remove recursivamente atraves dos subdiretorios;

Page 28: Shell_Script_XXVIISF.pdf

Manipulando diret orios

Salviano A. Leao – 28

☞ O comando

mkdir [opcoes] [novo -diretorio]

cria o diretorio novo-diretorio. Aqui as opcoes podem ser:

-m Especifica as permissoes que do novo diretorio tera;

-p Cria todos os diretorios e subdiretorios necessarios;

-v Exibe uma mensagem para cada diretorio criado.

Page 29: Shell_Script_XXVIISF.pdf

Manipulando diret orios

Salviano A. Leao – 29

☞ O comando

rmdir [opcoes] [diretorio]

apaga o diretorio diretorio. Aqui as opcoes podem ser:

-p Remove os diretorios-pai do diretorio selecionado, se possıvel. Assim, ocomando rmdir -p a/b/c/ vai apagar o diretorio a/b/c/, depois o diretorioa/b/ e por fim o diretorio a/, se possıvel;

-v Mostra os detalhes da remocao dos diretorios.

Podem ser especificados mais de um diretorio por vez. O rmdir so removediretorio vazios.

Page 30: Shell_Script_XXVIISF.pdf

Ligac oes simb olicas comando: ln

Salviano A. Leao – 30

O comando

ln [opcoes] [origem] [link]

cria uma ligacao simbolica entre arquivos e/ou diretorios. Aqui

origem Diretorio ou arquivo de onde sera feito o link.

link Nome do link que sera criado.

equanto as opcoes sao

-f Remove o arquivo de destino existente.

-s Cria um link simbolico. Usado para criar ligacoes com o arquivo/diretorio de destino.

-v Mostra o nome de cada arquivo antes de fazer o link.

-d Cria um hard link para diretorios. Somente o root pode usar esta opcao.

Page 31: Shell_Script_XXVIISF.pdf

Tipos de links

Salviano A. Leao – 31

Ha dois tipos de links: os simbolicos e os hardlinks.

• O link simbolico cria um arquivo especial no disco (do tipo link) que tem comoconteudo o caminho para chegar ate o arquivo alvo.

• O hardlink faz referencia ao mesmo inodo do arquivo original, assim ele eperfeitamente identico, inclusive nas permissoes de acesso, ao arquivo original.

$ ls -i /etc/passwd1576306 4,0K /etc/passwd$ stat /etc/passwdFile: ‘/etc/passwd’Size: 1841 Blocks: 8 IO Block: 4096 arquivo comum

Device: 805h/2053d Inode: 1576306 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2010-06-06 11:17:01.501942274 -0300Modify: 2010-05-25 15:05:36.710615705 -0300Change: 2010-05-25 15:05:36.743892352 -0300

Ao contrario dos links simbolicos, nao e possıvel fazer um hardlink para um diretorio oufazer referencia a arquivos que estejam em particoes diferentes.

Page 32: Shell_Script_XXVIISF.pdf

Notas sobre o link

Salviano A. Leao – 32

Deve-se notar que ao usar:

• o comando rm com um link, somente o link sera removido.

• o comando cp com um link, o arquivo original sera copiado ao inves do link.

• o comando mv com um link, a modificacao sera feita no link.

• um comando de visualizacao (como o cat), o arquivo original sera visualizado.

Exemplos:

$ ln -s /home/salviano/file1 /home/salviano/tmp/file1

Cria o link /home/salviano/tmp/file1 para o arquivo /home/salviano/file1

$ ln -s /home/salviano/cursos/QM /home/salviano/dropbox/QM

Cria um link /home/salviano/dropbox/QM para o diretorio /home/salviano/cursos/QM.

Page 33: Shell_Script_XXVIISF.pdf

Comando diff

Salviano A. Leao – 33

Compara dois arquivos e mostra as diferencas entre eles. Ele so e usado paracomparar arquivos em formato de texto. As diferencas entre dois arquivos podem serredirecionadas para um terceiro arquivo o qual podera ser usado pelo comando patchpara aplicar as alteracoes em um arquivo que nao contem as diferencas. A sintaxe docomando e

diff [diretorio1/arquivo1] [diretorio2/arquivo2] [opcoes]

na qual diretorio1/arquivo1 e diretorio2/arquivo2 sao os arquivos ou diretorios queserao comparados. Ja as opcoes podem ser:

-a Compara os dois arquivos como arquivos texto.

-b Ignora espacos em branco como diferencas.

-B Ignora linhas em branco inseridas ou apagadas nos arquivos.

- -brief Relata somente as diferencas entre os arquivos, e nao os detalhes destasdiferencas.

Page 34: Shell_Script_XXVIISF.pdf

Opc oes do diff

Salviano A. Leao – 34

-i Ignora diferencas entre maiusculas e minusculas nos arquivos.

-H Usa analise heurıstica para verificar os arquivos.

-N Em uma comparacao de diretorios, se o arquivo apenas existe em um diretorio,trata-o como presente mas vazio no outro diretorio.

-P Em uma comparacao de diretorios, se o arquivos apenas existe no segundodiretorio, trata-o como presente mas vazio no primeiro diretorio.

-q Mostra somente se os dois arquivos possuem diferencas. Nao mostra asdiferencas entre eles.

-r Compara diretorios e sub-diretorios existentes.

-S NOME Inicia a comparacao de diretorios pelo arquivo NOME. E util quandocancelamos uma comparacao.

-t Aumenta a tabulacao das diferencas encontradas.

-u Usa o formato de comparacao unificado.

Page 35: Shell_Script_XXVIISF.pdf

Notas sobre o diff

Salviano A. Leao – 35

• Use o comando zdiff para comparar diretamente arquivos compactados peloutilitario gzip;

• Use o comando sdiff para visualizar as linhas diferentes entre os dois arquivosem formato texto simples.

• Caso seja necessario comparar ate tres arquivos use o diff3.

Page 36: Shell_Script_XXVIISF.pdf

Exemplos do diff

Salviano A. Leao – 36

$ diff texto.txt texto1.txt

Compara o arquivo texto.txt com texto1.txt e exibe suas diferencas na tela.

$ diff -Bu texto.txt texto1.txt

Compara o arquivo texto.txt com texto1.txt ignorando linhas em branco diferentes entreos dois arquivos e usando o formato unificado.

diff texto.txt texto1.txt > texto.diff

Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamado texto.diffcontendo a diferenca entre eles. Este arquivo podera ser usado pelo patch para aplicaras diferencas existente entre os dois no arquivo texto.txt.

diff -r /usr/src/linux -2.6.30 /usr/src/linux -2.6.32 > patch -2.6.32. di

Compara o diretorio e sub-diretorios linux-2.6.30/ e linux-2.6.32/ e grava as diferencasentre eles no arquivo patch-2.6.32.diff.

Page 37: Shell_Script_XXVIISF.pdf

Comando patch

Salviano A. Leao – 37

Atualiza arquivos texto atraves das diferencas geradas pelo comando diff. A suasintaxe e

patch [opcoes] [arqv.diff] ou patch [opcoes] < [arqv.diff]

na qual o arqv.diff e o arquivo contendo as diferencas geradas pelo comando diff e asalgumas da opcoes do comando sao:

-p N Aqui N e o nıvel do diretorio onde o patch sera aplicado, se for igual a 0, o patchassume que os arquivos que serao atualizados estao no diretorio atual, se 1,assume que os arquivos que serao atualizado estao no diretorio acima (..), se2, 2 diretorios acima e assim por diante.

-b Cria copias de seguranca dos arquivos originais ao aplica o patch.

-binary Le e grava arquivo usando modo binario.

-d DIR Muda para o diretorio [dir] antes de aplica o patch.

-E Remove arquivos vazios apos a aplicacao do patch.

Page 38: Shell_Script_XXVIISF.pdf

Notas sobre o pach

Salviano A. Leao – 38

-n Interpreta o arquivo de patch como um .diff normal.

-N Nao desfaz patches ja aplicados.

-s Nao mostra mensagens de erro.

-u Interpreta o patch em formato unificado.

As diferencas sao aplicadas em arquivos originais gerados pelo comando diff. Eimportante entender os comandos patch e diff pois sao comandos muito utilizadospara desenvolvimento feito por equipes de pessoas.Exemplo:

patch -p0 < texto.diff

Aplica as diferencas contidas no arquivo texto.diff nos arquivos originais.

patch -p0 texto.txt texto.diff

Aplica as diferencas contidas no arquivo texto.diff nos arquivos originais. Faz a mesmacoisa que o comando anterior.

Page 39: Shell_Script_XXVIISF.pdf

Comando grep

Salviano A. Leao – 39

A familia de comandos grep, egrep, fgrep, rgrep, faz uma busca em um texto por umpadrao e retorna as linhas do texto que contem o padrao procurado. Sua sintaxe e aseguinte

grep [OPTIONS] PADRAO [ARQUIVO...]grep [OPTIONS] [-e PATTERN | -f ARQUIVO] [ARQUIVO...]

O comando

• egrep e o mesmo que grep -E.

• fgrep e o mesmo que grep -F.

• rgrep e o mesmo que grep -r.

Opcoes do tipo de pesquisa:

-E Interpreta o PADRAO como uma expressao regular extendida.

-F Interpreta o PADRAO como uma lista de palavras fixas, separdas por uma novalinha, sendo que qualquer uma delas pode ocorrer.

-G Interpreta o PADRAO como uma expressao regular basica.

Page 40: Shell_Script_XXVIISF.pdf

Algumas opc oes do grep

Salviano A. Leao – 40

-e PADRAO use o PADRAO como o padrao da busca. Este pode ser usado para especificarmultiplos padroes de busca.

-f ARQV obtem o padrao do arquivo ARQV, um por linha.

-i Ignora a diferenca entre maiusculas e minusculas.

-v Mostra as linhas que nao casam com o padrao.

-r Varre subdiretorios tambem.

-qs Nao mostra as linhas nem erros (usar como teste).

-n Mostra tambem o numero da linha

-m NMAX Pare a busca a encontrar NMAX linhas.

-c Conta o numero de linhas encontradas.

-l Mostra apenas o nome o arquivo que casou.

-w O padrao e uma palavra inteira e nao parte dela.

-x O padrao e uma linha inteira e nao parte dela.

-A N Mostre N linhas de contexto depois do padrao.

-B N Mostre N linhas de contexto antes do padrao.

-C N Mostre N linhas de contexto antes e depois do padrao.

Page 41: Shell_Script_XXVIISF.pdf

Uso simples do comando grep

Salviano A. Leao – 41

$ grep -i "SALviano" /etc/passwdsalviano:x:1000:1000:Salviano de Araujo Le~ao,,,:/home/salviano:/bin/bash

$ grep -i "SALviano" /etc/passwd /etc/group/etc/passwd:salviano:x:1000:1000:Salviano de Araujo Le~ao,,,:/home/salviano:/bin/bash/etc/group:adm:x:4:salviano/etc/group:dialout:x:20:salviano/etc/group:cdrom:x:24:salviano/etc/group:plugdev:x:46:salviano/etc/group:lpadmin:x:105:salviano/etc/group:admin:x:115:salviano/etc/group:salviano:x:1000:

$ grep -i "SALviano" /etc/*grep: /etc/at.deny: Permiss~ao negadagrep: /etc/fuse.conf: Permiss~ao negada/etc/group:adm:x:4:salviano/etc/group:dialout:x:20:salviano/etc/group:cdrom:x:24:salviano/etc/group:plugdev:x:46:salviano/etc/group:lpadmin:x:105:salviano/etc/group:admin:x:115:salviano/etc/group:salviano:x:1000:/etc/group:sambashare:x:122:salvianogrep: /etc/gshadow: Permiss~ao negada/etc/mtab:gvfs-fuse-daemon /home/salviano/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=salviagrep: /etc/mtab.fuselock: Permiss~ao negada/etc/passwd:salviano:x:1000:1000:Salviano de Araujo Le~ao,,,:/home/salviano:/bin/bashgrep: /etc/shadow: Permiss~ao negada

Page 42: Shell_Script_XXVIISF.pdf

Express oes Regulares

Salviano A. Leao – 42

Lista dos Principais Metacaracteres

Expressao Regular basica ^ $ . * [ \? \+ \| \( \) \{ \}

Expressao Regular estendida ^ $ . * [ ? + | ( ) { }

Metacaractere Nome Metacaractere Nome

. Ponto ^ Circunflexo[] Lista $ Cifrao[^ ] Lista negada \b Borda? Opcional \ Escape* Asterisco | Ou+ Mais () Grupo{} Chaves \1 Retrovisor

Page 43: Shell_Script_XXVIISF.pdf

Exemplos de representantes

Salviano A. Leao – 43

Metacaractere Nome Func ao

. Ponto Um caractere qualquer[] Lista Lista de caracteres permitidos[^ ] Lista negada Lista de caracteres proibidos

$ grep -e "sy.:" /etc/passwdsys:x:3:3:sys:/dev:/bin/sh$ grep -ne "sy.:" /etc/passwd4:sys:x:3:3:sys:/dev:/bin/sh$ grep -e "sy[sn]" /etc/passwdsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/syncsyslog:x:101:103::/home/syslog:/bin/falsehplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false

Page 44: Shell_Script_XXVIISF.pdf

Exemplos de quantificadores

Salviano A. Leao – 44

Metacaractere Nome Func ao

? Opcional Zero ou um* Asterisco Zero, um ou mais+ Mais Um ou mais{n,m} Chaves De n ate m

$ grep -E "sys:?" /etc/passwdsys:x:3:3:sys:/dev:/bin/shsyslog:x:101:103::/home/syslog:/bin/falsehplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false$ grep -E "sys:+" /etc/passwdsys:x:3:3:sys:/dev:/bin/sh

Page 45: Shell_Script_XXVIISF.pdf

Exemplos de ancoras

Salviano A. Leao – 45

Metacaractere Nome Func ao

^ Circunflexo Inıcio da linha$ Cifrao Fim da linha\b Borda Inıcio ou fim da palavra

$ grep -E "^[sS]" /etc/passwdsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/syncsyslog:x:101:103::/home/syslog:/bin/falsespeech-dispatcher:x:107:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/shsaned:x:113:119::/home/saned:/bin/falsesalviano:x:1000:1000:Salviano de Araujo Le~ao,,,:/home/salviano:/bin/bashsshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin

Page 46: Shell_Script_XXVIISF.pdf

Exemplos dos outros metacaracteres

Salviano A. Leao – 46

Metacaractere Nome Func ao

\x Escape Torna literal o caracter X| Ou Ou um ou outro(. . . ) Grupo Delimita um grupo\1 . . .\9 Retrovisor Texto casado nos grupos de 1 . . . 9

$ grep -E "[sS]alviano|root" /etc/passwdroot:x:0:0:root:/root:/bin/bashsalviano:x:1000:1000:Salviano de Araujo Le~ao,,,:/home/salviano:/bin/bash$ grep -E "(:)\1" /etc/passwdlibuuid:x:100:101::/var/lib/libuuid:/bin/shsyslog:x:101:103::/home/syslog:/bin/falsemessagebus:x:102:107::/var/run/dbus:/bin/falsesaned:x:113:119::/home/saned:/bin/falsesshd:x:115:65534::/var/run/sshd:/usr/sbin/nologinfestival:x:116:29::/home/festival:/bin/falsepostfix:x:117:123::/var/spool/postfix:/bin/false

Page 47: Shell_Script_XXVIISF.pdf

Classe POSIX

Salviano A. Leao – 47

Classe POSIX Similar Significado

[:upper:] [A-Z] Letras maısculas[:lower:] [a-z] Letras minusculas[:alpha:] [A-Za-z] Letras maıusculas e minusculas[:alnum:] [A-Za-z0-9] Letras e numeros[:digit:] [0-9] Numeros[:xdigit:] [0-9A-Fa-f] Numeros hexadecimais[:punct:] [.,!?:#$&...] Sinais de pontuacao[:blank:] [ \t] Espaco (ESP) e TAB[:space:] [ \t\n\r\f\v] Caracteres brancos[:cntrl:] - Caracteres de controle[:graph:] [^\n\r\f\v] Caracteres imprimıveis, exceto ESP e TAB[:print:] [^ \t\n\r\f\v] Caracteres imprimıveis

Page 48: Shell_Script_XXVIISF.pdf

Comandos para obter informac oes de arquivos

Salviano A. Leao – 48

file Mostra o tipo de arquivo;

type Determina o tipo de um comando, se ele e um comando instalado nos sistemaou se ele e comando do proprio shell. Ele tem as seguintes opcoes:

-t Que e a opcao padrao, retorna o tipo do comando;

-p Retorna o caminho do comando;

-a Retorna todas as informacoes sobre o comando;

touch Cria arquivo vazio;

lsof Mostra arquivos abertos.

Page 49: Shell_Script_XXVIISF.pdf

Manipulando arquivos

Salviano A. Leao – 49

cat Mostra o conteudo de um arquivo binario ou texto e tambem pode concaternararquivos.

tac Semelhante ao cat mas inverte a ordem;

wc Mostra a quantidade de linhas, palavras e byte do arquivo. Suas opcoes sao:

-c ou - -bytes Mostra a contagem dos bytes;

-m ou - -chars Mostra a contagem dos caracteres;

-l ou - -lines Mostra a contagem das linhas;

-w ou - -words Mostra a contagem das palavras;

nl Mostra o numero de linhas junto com o conteudo de um arquivo. Esse comando eequivalente ao cat -n.

Page 50: Shell_Script_XXVIISF.pdf

Comando split

Salviano A. Leao – 50

Esse comando e usado para quebrar um arquivo em varios pedacos. A sintaxe docomando e:

split [OPCAO ]... [INPUT [PREFIX]]

A saıda sera pedacos de tamanho-fixo do INPUT prefizado PREFIXaa, PREFIXab, ...;O tamanho padrao em linhas e 1000, e o PREFIX padrao e x.Todos os argumentos sao necessario. A opcoes sao:

-a N Usa um sufixo de comprimento N, o padrao e 2;

-b SIZE Divide o arquivo fixando a quantidade bytes dos arquivos em SIZE bytes;

-C SIZE Coloque o maximo de SIZE bytes de linhas por arquivo;

-d Usa sufixos numericos em vez de alfabetico;

-l N Use N linhas por arquivo;

O tamanho SIZE dos arquivos podem ter um sufixo multiplicador:

b 512;

kB 1000;

K 1024;

MB 1000*1000;

M 1024*1024;

GB 1000*1000*1000;

G 1024*1024*1024;

Page 51: Shell_Script_XXVIISF.pdf

Comando csplit

Salviano A. Leao – 51

Esse comando e usado para quebrar um arquivo em secoes determinadas pela linhade contexto. A sintaxe do comando e:

csplit [OPCAO ]... [ARQUIVO] [PADRAO]

A saıda sera pedacos do ARQUIVO separado pelo PADRAO para os arquivos xx00,xx01, ....A opcoes sao:

-b, - -suffix-format=FORMAT Usa o sprintf FORMAT ao em vez de %02d

-f, - -prefix=PREFIX Usa PREFIX em vez de xx

-k, - -keep-files Nao remove os arquivos de saıda em caso de errros.

-n, - -digits=DIGITS Usa um numero especıfico de dıgitos em vez de 2

-s, - -quiet, - -silent Nao mostra a saıda.

-z, - -elide-empty-files remove os arquivos de saıda vazios.

Page 52: Shell_Script_XXVIISF.pdf

O padr ao

Salviano A. Leao – 52

Ele le o arquivo de entrada ARQUIVO, e com o PADRAO podendo ser:

• INTEGER Copia ate mas nao incluı o numero especıfico de linhas

• /REGEXP/[OFFSET] Copia ate mas nao incluı a linha que casa com a ER.

• %REGEXP%[OFFSET] Ignora, mas nao incluindo a linha que casa.

• {INTEGER} Repete o padrao especificado previamente esse numero devezes.

• {∗} Repete o padrao especificado previamente tantas as vezes quanto forpossıvel.

A linha de deslocamento OFFSET e necessario ter um sinal de + ou − seguido porum inteiro positivo.

Page 53: Shell_Script_XXVIISF.pdf

Exemplo do csplit

Salviano A. Leao – 53

Ao contrario do comando split, o comando csplit permite que se especifique umapalavra que ira indicar o delimitador de cada um dos novos arquivos. Considere porexemplo o arquivo Tese.tex:\chapter{Introduc~ao}Nesse trabalho sera discutidos ...

\chapter{Teoria}Nosso sistema pode ser descrito pela Hamiltoniana...

\chapter{Resultados}Vamos apresentar os resultados teoricos e experimentais,...

\chapter{Conclus~ao}Nosso resultados este de acordo com os resultadosexperimentais...

Page 54: Shell_Script_XXVIISF.pdf

Exemplo csplit

Salviano A. Leao – 54

Para quebrar o arquivo tese em um por capıtulo fazemos:

$ csplit -f Cap_ Tese.tex "/\\ chapter/" {3}$ ls -altotal 60drwxr -xr-x 2 salviano salviano 4096 2010 -06 -09 09:41 .drwxr -xr-x 8 salviano salviano 4096 2010 -06 -09 09:39 ..-rw-r--r-- 1 salviano salviano 0 2010 -06 -09 09:41 Cap_00-rw-r--r-- 1 salviano salviano 63 2010 -06 -09 09:41 Cap_01-rw-r--r-- 1 salviano salviano 71 2010 -06 -09 09:41 Cap_02-rw-r--r-- 1 salviano salviano 83 2010 -06 -09 09:41 Cap_03-rw-r--r-- 1 salviano salviano 87 2010 -06 -09 09:41 Cap_04-rw-r--r-- 1 salviano salviano 304 2010 -06 -09 09:40 Tese.tex

Page 55: Shell_Script_XXVIISF.pdf

Analise do resultado

Salviano A. Leao – 55

O que ocorreu foi o seguinte:

• O csplit ira criar varios arquivos iniciados em ”Cap ”, ate um maximo de 4arquivos (parametro 3, computa-se o numero entre colchetes + 1). Este valorindica o numero de vezes que o comando sera repetido.

• Quando nao sabemos o numero de arquivos contidos usamos o quantificador{∗}, ou chutamos um numero muito grande e usamo a opcao -k para ele naoreclamar.

Page 56: Shell_Script_XXVIISF.pdf

Comando sort

Salviano A. Leao – 56

Classifica as linhas de um arquivo texto ou da entrada padrao, de acordo com asopcoes passadas. A classificacao e feita por linhas e as linhas sao divididas emcampos que e a ordem que as palavras aparecem na linha separadas por umdelimitador (normalmente um espaco). A sintaxe do comando e

sort [opcoes] [arquivo]

na qual arquivo e o nome do arquivo que sera classificado. Se nenhum arquivo forespecificado, sera usado o dispositivo de entrada padrao (normalmente o teclado ouum pipe ”). Algumas opcoes sao:

-b Ignora linhas em branco.

-d Somente usa letras, dıgitos e espacos durante a classificacao.

-f Ignora a diferenca entre maiusculas e minusculas.

-r Inverte o resultado da comparacao.

Page 57: Shell_Script_XXVIISF.pdf

Comando sort: opc oes

Salviano A. Leao – 57

-n Caso estiver classificando um campo que contem numeros, os numeros seraoclassificados na ordem aritmetica. Por exemplo, se voce tiver um arquivo comos numeros:2002070Usando a opcao -n, o arquivo sera classificado desta forma:2070200No caso em que essa opcao nao e usada, o sort ira classificar o arquivo comouma listagem alfabetica (que vai de a ate z e do 0 ate 9), dessa forma ela tera aseguinte forma:2020070

Page 58: Shell_Script_XXVIISF.pdf

Opc oes do sort

Salviano A. Leao – 58

-c Verifica se o arquivo ja esta classificado. Se nao estiver, retorna a mensagem”disorder on arquivo”.

-o SAIDA Grava a saıda do comando sort no arquivo SAIDA.

-m ARQUIVO1 ARQUIVO2 Combina o conteudo de ARQUIVO1 e ARQUIVO2gerando um unico arquivo. Os dois arquivos precisam estar ordenados antesdessa opcao ser usada.

-i Ignora os caracteres fora da faixa octal ASCII 040-0176 durante a organizacao.

-t CARACTER Usa CARACTER como delimitador durante a classificacao de linhas.Por padrao e usado um espaco em branco como delimitador de caracteres.

Page 59: Shell_Script_XXVIISF.pdf

Opc oes do sort

Salviano A. Leao – 59

-k POS1, POS2 Especıfica qual o campo dentro na linha entre POS1 e POS2 quesera usado na classificacao. Cada posicao tem a forma ’[F. C][OPTS]’, onde F eo numero de campo para usar, e C e o numero do primeiro caractere do inıciodo campo. Campos e posicoes de caracteres sao numeradas a partir de 1, umaposicao de caractere zero em POS2 indica o ultimo caractere do campo. Se ’C’e omitido em POS1, o padrao e 1 (o inıcio do campo), se omitido em POS2, opadrao e 0 (o fim do campo). OPTS sao opcoes de ordenacao, permitindo queas chaves individuais para serem classificados de acordo com diferentesregras.

Exemplo: Para classificar o segundo campo, use ‘- -key=2,2’ ou (‘-k 2,2’).

Page 60: Shell_Script_XXVIISF.pdf

Visualisadores de inıcio e fim de arquivo

Salviano A. Leao – 60

head Mostra as linhas iniciais de um arquivo texto. As opcoes sao

-c N Mostra os N-bytes do inıcio do arquivo;

-n N Mostra as N primeiras linhas do arquivo. O padrao e mostrar as 10primeiras.

tail Mostra as linhas finais de um arquivo texto. As opcoes sao

-c N Mostra os N-bytes do fim do arquivo;

-n N Mostra as N ultimas linhas do arquivo. O padrao e mostrar as 10 ultimas.

more e um filtro para paginar o texto na tela, com algumas opcoes. Ele ja esta meioobsoleto e e mais conveniente usarmos o seu substiituto que possuı maisrecurso, o comando less.

Page 61: Shell_Script_XXVIISF.pdf

Comando od

Salviano A. Leao – 61

E o Octal Dump, que serve para mostrar o codigo de cada caractere de um arquivo outexto. Alem de octal, tambem mostra os codigos em hexadecimal e ASCII. Algumasopcoes mais uteis sao

-a Mostra os nomes dos caracteres;

-b Mostra os caracteres em octal;

-c Mostra os caracteres em ASCII ou com barras de ESCAPE;

-x Mostra os caracteres em hexadecimal.

Este comando e muito util para encontramos caracteres especiais em alguns arquivos.

Page 62: Shell_Script_XXVIISF.pdf

Exemplos do comando od

Salviano A. Leao – 62

$ cat Arq_com_caracteres_especiais2002070

12

. 2: 3

4xx x 8x

$ od -a Arq_com_caracteres_especiais0000000 2 0 0 nl 2 0 nl 7 0 nl sp sp sp sp sp 10000020 nl sp sp sp sp sp 2 nl . sp sp sp sp 2 nl :0000040 sp sp sp sp 3 nl sp sp sp sp sp 4 nl sp sp sp0000060 sp sp x nl sp sp sp sp sp x sp sp ht sp sp x0000100 sp sp ht ht sp 8 nl sp sp sp sp sp x nl sp nl0000120

Page 63: Shell_Script_XXVIISF.pdf

Editores para linha de comando

Salviano A. Leao – 63

ed Editor de texot orientado a linhas.

vi Editor de texto comun a quase todos os sistemas tipo Unix.

nano Editor de texto muito usado nos GNU/Linux atuais, e extremamente versatil epoderoso.

emacs Editor de texto muito usado por ser extremamente versatil e poderoso.

mcedit Editor integrado ao GNU Midnight Commander, cujo pacote linux e o mc, deuso facil e simples.

pico Pequeno editor de texto;

sed Editor de texto orientado para fluxo.

Page 64: Shell_Script_XXVIISF.pdf

Comando less

Salviano A. Leao – 64

O less e um filtro para paginar o texto na tela, que permite mover-se no texto em todasas direcoes. Para navegar no texto, seus comandos sao similares aos do emacs. Aquilistamos alguns:

ESPACO ou ˆV or f or ˆF Move o texto N linhas a frente. N refere-se ao tamanhopadrao em linhas do terminal usado. O comando z redefine esse valor

z Redefine o tamanho padrao em linhas do terminal.

/PADRAO Pesquisa para frente o PADRAO no texto.

?PADRAO Pesquisa para tras o PADRAO no texto.

q ou Q ou :q ou :Q ou ZZ Sai do ambiente less.

Para maiores detalhes de navegacao consulte o manual.

Page 65: Shell_Script_XXVIISF.pdf

Comando echo

Salviano A. Leao – 65

Mostra um texto. Comando extremamente util. A sintaxe do comando e:

echo [OPCOES]... [STRING]...

A opcoes pdem ser:

-n Nao quebra a linha no final.

-e Habilita a interpretacao dos caracteres especiais (Escape), listados na tabela.

-E Desabilita a interpretacao dos caracteres especiais (Escape).

Exemplos:

$ echo -e "teste\nteste\b X"testetest X$echo -e "teste\fteste\t X"teste

teste X$echo -e "X1\rX2\rX3"

X3$echo -e "teste1\cteste2\t X"teste1$$echo -e "X1\tX2\tX3\n\t\tX5"X1 X2 X3

X5

Page 66: Shell_Script_XXVIISF.pdf

Tabela de caracteres de ESCAPE

Salviano A. Leao – 66

Escape Descric ao

\\ barra invertida\a Som de alerta (bipe).\b Caracter backspace (apaga um caracter).\c Alem desse ponto, nao produz uma saıda.\f Introduz uma nova linha, que inicia na coluna chamada.\n Introduz nova linha.\r Retorno de carro. Mostra so o que esta a direita dele.\t Tabulacao horizontal.\v Tabulacao vertical.\0nnn Caractere cujo codigo ASCII e nnn (octal).\xnn Caractere cujo hexadecimal e nn.

Page 67: Shell_Script_XXVIISF.pdf

Comando fmt

Salviano A. Leao – 67

E um formatador de paragrafos simples, podendo adicionar ou remover quebra delinhas e espacos, para que o texto seja mantido dentro do numero maximo de colunasespecıficas. O resultado e sempre enviado a saıda padrao, ou seja, ao terminal. Suasintaxe e a seguinte:

fmt [-WIDTH] [OPCOES]... [ARQUIVO]...

As opcoes sao:

-c, - -crown-margin Preserva a indentacao das duas primeiras linhas.

-p, - -prefix=STRING So reformata as linhas que iniciam com a palavra STRING,reanexando o prefixo as linhas formatadas.

-s, - -split-only Quebra linhas longas, mas nao preenche o texto.

-t, - -tagged-paragraph Indentacao da primeira linha diferente da segunda.

-u - -uniform-spacing Um espaco entre as palavras, e dois apos as sentencas.

-w, – width=WIDTH Largura maxima das linhas, o valor padrao e 75 colunas.

Page 68: Shell_Script_XXVIISF.pdf

Seguranca de acesso aos arquivos

Salviano A. Leao – 68

chown Comando para alterar o dono;

chgrp Comando para alterar o grupo;

chmod comando para alterar as permissoes;

Page 69: Shell_Script_XXVIISF.pdf

Permiss oes no linux

Salviano A. Leao – 69

No Linux, como em outros sistemas Unix, cada arquivo tem uma permissao. Aspermissoes sao atributos dos arquivos que especifica se ele pode ser lido, executadoou escrito. Estas permissoes definem o que um usuario pode fazer. Para saber se umprograma e executavel ou nao, execute um ’ls -l’ e veja no lado esquerdo se o arquivotem X nos seus argumentos, como no exemplo abaixo:$ ls -aldrwxr-xr-x 2 root root 4,0K 2010-06-08 09:53 hsperfdata_root/drwxr-xr-x 2 salviano salviano 4,0K 2010-06-08 11:10 hsperfdata_salviano/drwx------ 3 salviano salviano 4,0K 2010-06-08 08:48 kde-salviano/drwx------ 2 salviano salviano 4,0K 2010-06-08 08:31 keyring-kecE07/drwx------ 2 salviano salviano 4,0K 2010-06-08 13:46 ksocket-salviano/drwx------ 2 salviano salviano 4,0K 2010-06-08 13:08 mc-salviano/drwx------ 2 gdm gdm 4,0K 2010-06-08 08:31 orbit-gdm/drwx------ 2 root root 4,0K 2010-06-08 13:41 orbit-root/drwx------ 2 salviano salviano 4,0K 2010-06-08 13:46 orbit-salviano/drwx------ 2 salviano salviano 4,0K 2010-06-08 11:06 plugtmp/drwx------ 2 gdm gdm 4,0K 2010-06-08 08:31 pulse-PKdhtXMmr18n/drwx------ 2 salviano salviano 4,0K 2010-06-08 08:31 pulse-xmEMNrxCFrAT/drwx------ 2 salviano salviano 4,0K 2010-06-08 08:31 ssh-yHcbLv1559/-rw-r--r-- 1 salviano users 13 2010-06-08 13:44 test1-rw-r--r-- 1 salviano backup 13 2010-06-08 13:46 test2lrwxrwxrwx 1 salviano salviano 5 2010-06-08 14:07 testx -> test2

Page 70: Shell_Script_XXVIISF.pdf

Dono, grupo e permiss ao

Salviano A. Leao – 70

Arquivo Dono Grupo Permiss oes

hsperfdata root/ root root drwxr-xr-xhsperfdata salviano/ salviano salviano drwxr-xr-xkde-salviano/ salviano salviano drwx- - - - - -keyring-kecE07/ salviano salviano drwx- - - - - -ksocket-salviano/ salviano salviano drwx- - - - - -mc-salviano/ salviano salviano drwx- - - - - -orbit-gdm/ gdm gdm drwx- - - - - -orbit-root/ root root drwx- - - - - -orbit-salviano/ salviano salviano drwx- - - - - -plugtmp/ salviano salviano drwx- - - - - -pulse-PKdhtXMmr18n/ gdm gdm drwx- - - - - -pulse-xmEMNrxCFrAT/ salviano salviano drwx- - - - - -ssh-yHcbLv1559/ salviano salviano drwx- - - - - -test1 salviano users -rw-r- -r- -test2 salviano backup -rw-r- -r- -testx salviano salviano lrw-r- -r- -

Page 71: Shell_Script_XXVIISF.pdf

Salviano A. Leao – 71

Como vemos as permissoes de cada arquivo/diretorio sao representadas por umaserie de letras r, w, x, l ou d! Vamos ver o que representa cada uma delas:Permiss~oes => tipo dono grupo todos

drwxrwxrwx => d rwx rwx rwx

0111222333 => 0 111 222 333

• No caso acima, a primeira coluna (numero 0) indica se o nome listado e umdiretorio, um link ou um arquivo. Se for um diretorio ele tera o caractere d, se forum link um caractere l e por ultimo se for um arquivo regular tera o sımbolo -.

• Portanto, de acordo com nossa tabela anterior, o arquivo testx e um link, test1 etest2 sao arquivos e o restante diretorios.

Page 72: Shell_Script_XXVIISF.pdf

Outros tipos

Salviano A. Leao – 72

Tambem ha casos em que no lugar do ’d’, aparecem outras letras que indicam outrostipos de arquivos. A letra ’l’ significa que e um link simbolico, as letras ’c’ e ’b’correspondem a dispositivos (/dev). Veja alguns exemplos abaixo:

$ ls -al /dev/lrwxrwxrwx 1 root root 3 2010-06-08 08:29 scd0 -> sr00 brw-rw---- 1 root disk 8, 0 2010-06-08 08:29 sda0 brw-rw---- 1 root disk 8, 1 2010-06-08 08:29 sda10 brw-rw---- 1 root disk 8, 2 2010-06-08 08:29 sda20 brw-rw---- 1 root disk 8, 3 2010-06-08 08:54 sda30 brw-rw---- 1 root disk 8, 4 2010-06-08 08:29 sda40 brw-rw---- 1 root disk 8, 5 2010-06-08 08:29 sda50 brw-rw---- 1 root disk 8, 6 2010-06-08 08:29 sda60 brw-rw---- 1 root disk 8, 7 2010-06-08 08:29 sda70 brw-rw---- 1 root disk 8, 16 2010-06-08 08:29 sdb0 crw-rw---- 1 root disk 21, 0 2010-06-08 08:29 sg00 crw-rw---- 1 root cdrom 21, 1 2010-06-08 08:29 sg10 crw-rw---- 1 root disk 21, 2 2010-06-08 08:29 sg20 drwxrwxrwt 2 root root 200 2010-06-08 13:40 shm/

Page 73: Shell_Script_XXVIISF.pdf

Permiss oes do dono

Salviano A. Leao – 73

• No exemplo aseguir, mostra-se um diretorio do sistema:

drwxr-xr-x 2 root root 4096 2010-04-28 13:51 bin|----------> Contem a letra ’d’ na primeira coluna, e um diretorio

• Agora vamos examinar a coluna do dono (a dos numeros 1), que mostra aspermissoes que o dono do arquivo possuı. Por exemplo considere o arquivo

-rwxr--r-- 1 salviano users 13 2010-06-08 13:44 test1||\--> salviano, dono do arquivo pode executar o arquivo, x=executable!|\---> salviano, dono do arquivo pode gravar no arquivo, w=writable!\----> salviano, dono do arquivo pode ler o arquivo, r=readable!

• Agora vamos examinar a coluna do grupo (a dos numeros 2), que mostra aspermissoes que o grupo do dono do arquivo possuı. Por exemplo considere oarquivo:

-r--rwxr-- 1 salviano backup 13 2010-06-08 13:46 test2| |||\-> Todo mundo pode ler o arquivo| ||\--> Grupo dono do arquivo (backup) pode executar o arquivo| |\---> Grupo dono do arquivo (backup) pode gravar no arquivo| \----> Grupo dono do arquivo (backup) pode ler o arquivo\-------> Dono do arquivo (salviano) pode ler o arquivo

Page 74: Shell_Script_XXVIISF.pdf

Permiss oes de outros

Salviano A. Leao – 74

• Por sua vez a coluna que representa todos os outros usuarios do sistema(composta pelos numeros 3), refere as permissoes para todos os outrosusuarios do sistema, sem ser o dono e os participantes do grupo-do-dono domesmo. Considere por exemplo:

-r--r--rwx 1 salviano backup 13 2010-06-08 13:46 test2| | ||\--> Todos os usuarios (exceto salviano e usuarios do| | || grupo backup) tem permiss~ao para executar o arquivo!| | |\---> Todos os usuarios (exceto salviano e usuarios do| | | grupo backup) tem permiss~ao para gravar no arquivo!\--\--\----> Todos os usuarios tem permiss~ao para ler o arquivo!

• Ao referir a um diretorio o sinalizador x (executavel) diz se o diretorio esta ounao acessıvel, ja que so se pode EXECUTAR diretorios... Exemplo:

drwxr--r-- 1 root root 13 2010-06-08 13:46 Lixao||||| \---> Todos os podem ler o conteudo do diretorio, mas n~ao||||| podem usar o comando ’cd’ para entrar nele, pois n~ao||||| ha o sinalizador ’x’ para a quarta coluna.||||\------> O grupo ’root’ pode ler o conteudo do diretorio,|||| mas n~ao pode usar ’cd’ para entrar no diretorio.|||\-------> O ’root’ pode usar ’cd’ para entrar no diretorio.||\--------> O ’root’ pode gravar arquivos nesse diretorio.|\---------> O ’root’ pode ler o interior desse diretorio.\----------> Indica que o nome listado e um diretorio.

Page 75: Shell_Script_XXVIISF.pdf

Comando chmod

Salviano A. Leao – 75

O comando chmod pode ser usado para mudar os sinalizadores ’rwx’ dos arquivose/ou diretorios, a sintaxe basica do comando e:

chmod [ugoa]{ -+}[rwx] nome_do_arquivo_ou_diretorio

Exemplo: Para mudar a permissao do arquivo (u=user) para o dono poder ler e gravar(rw) no ’arquivo1.txt’, digite:

$ chmod u+rw arquivo1.txt

Para desfazer o comando a troca de permissoes anteriores, digite:

$ chmod u-rw arquivo1.txt

Os sinais + e − definem se as permisoes serao ativadas ou desativadas. Porexemplo,$ chmod a+r arquivo2.txt-----> Todos (a=all) podem ler o ’arquivo2.txt’

$ chmod o+w arquivo3.txt-----> Outros usuarios (o=others) sem ser o dono e o

grupo dono do arquivo, podem gravar no ’arquivo3.txt’

$ chmod g+x MeuScript-----> Grupo-dono do arquivo (g=group) pode executar o arquivo ’MeuScript’

Page 76: Shell_Script_XXVIISF.pdf

Exemplo do comando chmod

Salviano A. Leao – 76

O comando chmod pode tambem ser usado com numeros, em vez dos flags. Estemetodo e chamado de octal, veja o exemplo abaixo:

$ chmod -c 664 arquivo.txt

Representac ao octal

Numero Combinacao Significado

0 Nenhuma permissao

1 Permissao para executar

2 Permissao para gravar

3 1 + 2 Permissao para gravar e executar

4 Permissao para ler

5 4 + 1 Permissao para ler e executar

6 4 + 2 Permissao para ler e gravar

7 4 + 2 + 1 Permissao para ler, gravar e executar

Page 77: Shell_Script_XXVIISF.pdf

Exemplo

Salviano A. Leao – 77

$ chmod -c 664 arquivo.txt

O comando acima muda as permissoes do ’arquivo.txt’, dando permissoes de leitura eescrita ao seu dono (o numero 6 na primeira coluna), de leitura e escrita aos usuarioque pertencem ao mesmo grupo-dono (o numero 6 na segunda coluna) e de leitura atodos os outros usuarios do sistema (o numero 4 na ultima coluna).O comando chown e simples e pode ser usado para mudar o dono e o grupo-dono deum arquivo/diretorio. Ele e usado da seguinte forma:

$ chown -c usuario.grupo arquivo_ou_diretorio$ chown usuario:grupo arquivo_ou_diretorio$ chown salviano.users test2$ chown -cR salviano.salviano /home/salviano

Page 78: Shell_Script_XXVIISF.pdf

Manipulando data e hora

Salviano A. Leao – 78

date Mostra ou altera a data e hora do sistema;

Formato Descricao%a Nome do dia da semana abreviado (Dom..Sab)%A Nome do dia da semana (Domingo..Sabado)%b Nome do mes abreviado (Jan..Dez)%B Nome do mes (Janeiro..Dezembro)%c Data completa (Sat Nov 04 12:02:33 EST 1989)%y Ano (dois dıgitos)%Y Ano (quatro dıgitos)%m Mes (01..12)%d Dia (01..31)%j Dia do ano (001..366)%H Horas (00..23)%M Minutos (00..59)%S Segundos (00..60)%s Segundos desde 1o

¯ de Janeiro de 1970%r Expressa o dia em multiplos de 12 hora (exemplo, 11:11:04 PM)%R Dia com 24 horas, o mesmo que %H:%M%% Um % literal%t Um TAB%n Uma quebra de linha

cal Mostra um calendario

Page 79: Shell_Script_XXVIISF.pdf

Fazendo backups

Salviano A. Leao – 79

tar Cria um arquivo, que e formado pela sequencia dos outros, em fila. Ele nao usanenhum algooritmo de compactacao.

compress Compactador

uncompress Descompactador do compress.

zcat Comprime ou expande arquivos comprimidos.

gzip Comprime

gunzip Expande arquivos comprimidos co gzip.

bzip2 Comprime ou expande arquivos comprimidos.

Page 80: Shell_Script_XXVIISF.pdf

Comando tar

Salviano A. Leao – 80

E utilizado para agrupar e desagrupar arquivos e diretorios em um anico arquivo oudispositivo fısico, como disquetes e fitas. Estes dispositivos variam de sistema parasistema. A sua sintaxe e

tar {-c|-x|-t} [-v] [-f {dispositivo|arqv1}] {arqv2|diretorio}

onde dispositivo e o arquivo de dispositivo do sistema, arqv1 e o nome do arquivo doagrupamento, arqv2 e o nome do arquivo a ser agrupado e diretorio e o nome dodiretorio a ser agrupado.

Page 81: Shell_Script_XXVIISF.pdf

Comando tar: opc oes

Salviano A. Leao – 81

-A Une ao final de um arquivo tar um outro arquivo tar;

-c Cria um novo arquivo;

-d Encontra as diferencas existentes entres os arquivos compactados e os do sistema;

- -delete Apaga um arquivo do compactado;

-f Indica o nome do arquivo final (que sera o arquivo compactado);

-t Lista o conteudo do arquivo;

-r Adiciona arquivos ao ja existente;

-u Adiciona somente arquivos com data mais recente do que a do arquivo que estiverno arquivo compactado;

-x Descompacta o arquivo;

-v Mostra os arquivos que estao sendo processados;

-j Filtra o arquivo a ser processado com bzip2/bunzip2;

-z Filtra o arquivo a ser processado com gzip/gunzip.

Page 82: Shell_Script_XXVIISF.pdf

Exemplos do Comando tar

Salviano A. Leao – 82

• Para agrupar dois ou mais arquivos em um unico arquivo:

$ tar -cvf programas.tar prog.c prog2.c

• Para agrupar o diretorio de trabalho e seus sub-diretorios em um unico arquivo:

$ tar -cvf tudo.tar *

• Para agrupar dois arquivos tar, unindo ao primeiro arquivo o segundo

$ tar -Af primeiro.tar segundo.tar

• Para desagrupar todos os arquivos de um arquivo criado pelo comando:

$ tar -xvf programas.tar

• Para desagrupar um arquivo especıfico de um arquivo criado pelo comando:

$ tar -xvf programas.tar prog2.c

Page 83: Shell_Script_XXVIISF.pdf

exemplo do tar

Salviano A. Leao – 83

• Para desagrupar varios arquivos de um arquivo criado pelo comando:

$ tar -xvf tudo.tar prog.c bin/* doc/prog.txt

• Para listar os arquivos agrupados em um arquivo criado pelo comando:

$ tar -tvf programas.tar

• Para verificar se um arquivo esta agrupado no arquivo criado pelo comando:

$ tar -tvf programa.tar prog2.c

• Para agrupar arquivos no dispositivo padrao:

$ tar -cv *

• Para desagrupar todos os arquivos do dispositivo padrao:

$ tar -xv

• Para listar os arquivos do dispositivo padrao:

$ tar -tv

Page 84: Shell_Script_XXVIISF.pdf

Usando o tar para fazer backups

Salviano A. Leao – 84

O comando tar pode ser usado para copiar arquivos mantendo-se as permissoesoriginais e os donos, tanto localmente quanto atraves da rede.

• Para realizar esta copia localmente:

$ tar cvf - [origem] | (cd [destino]; tar xvf - )

• Para realizar a copia remotamente:

$ tar cvf - [origem] | rsh [sistema remoto] ’(cd [destino]; tar

• Para duplicar um diretorio

$ (cd [origem]; tar cf - * ) | tar xvfB -

• Copia rapida de arquivos

$ (cd ../ origem/; tar cf - . ) | tar xvf -

Page 85: Shell_Script_XXVIISF.pdf

Incluindo a data no backup

Salviano A. Leao – 85

A seguir mostramos alguns exemplos de como incluir a data atual no nome do arquivotar.

• Neste exemplo, sera criado um tar do diretorio ~/Dados, com o nome deBackup dados data.tar.gz:

$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y)".tar.gz ~/DadosBackup_dados_08.Jun.2010.tar.gz

$ tar -zcvf Backup_dados_"$(date +%d%m%y)".tar.gz ~/DadosBackup_dados_080610.tar.gz

• Vamos incluir tambem a hora e minutos, nao utilize ”:”como separador porque eum simbolo nao valido em nome de arquivos, exemplos:

$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y-%H-%M)".tar.gz ~/DadosBackup_dados_08.Jun.2010-23-41.tar.gz

Page 86: Shell_Script_XXVIISF.pdf

Sincronizac ao de Conteudo com rsync

Salviano A. Leao – 86

Um metodo rapido e versatil de fazer copias locais e remotas. a sua sintaxe e:

Local: rsync [OPCOES...] FONTE ... [DESTINO]

Para transferir de via rede a sintaxe e a seguinte:

Envia: rsync [OPCOES...] FONTE ... [USER]@[HOST]:[ DESTINO]Recebe: rsync [OPCOES...] [USER]@[HOST]:FONTE [DESTINO]

Vejamos alguns exemplos:

$ rsync -avz -e ssh polaron.ufg.br:/home/salviano .

O comando acima ira copiar, no diretorio corrente, todo o diretorio chamado/home/salviano.Ja o comando

rsync -avz -e ssh polaron.ufg.br:/home/salviano/ .

ira copiar apenas o conteudo do diretorio /home/salvianoO comando usa o ssh com a porta 22.

rsync -apvrz --progress --links --rsh=’/usr/bin/ssh -p22’polaron.ufg.br:/home/salviano/ .

Page 87: Shell_Script_XXVIISF.pdf

rsync: significado de algumas diretivas

Salviano A. Leao – 87

-a - archive, basicamente indica que voce quer que a copia seja recursiva e que tudoseja preservado (links simbolicos, por exemplo);

-v - verbose, escreva tudo que estiver fazendo;

-z - compactar os arquivos transferidos;

-e - especıfica o shell remoto a ser usado, no nosso caso, ssh, o que garante que osdados serao transmitidos usando criptografia;

-p Preserva as permissoes.

• Ele copia apenas o que mudou na arvore de diretorios. De um arquivomodificado ele ira transferir apenas o blocos novos ou alterados.

• Antes de transferir os dados, faz uma comparacao do arquivo na origem e nodestino. Os arquivos sao quebrados em segmentos e os seus checksums saocomparados. Os pedacos cujos checksums forem diferentes sao transmitidos.

• O rsync pode ser usado para espelhar uma maquina.

Page 88: Shell_Script_XXVIISF.pdf

Processos no Linux

Salviano A. Leao – 88

O que apresentaremos a seguir foi adaptado da seguinte paginahttp://www.infowester.com/linprocessos.php.Nos sistemas operacionais, um processo e a forma de representar um programa emexecucao. E o processo que utiliza os recursos do computador - processador,memoria, etc - para a realizacao das tarefas para as quais a maquina e destinada.O sistema operacional lida com uma infinidade de processos e, por isso, e necessarioter meios que permitam controla-los. Para isso, os processos contam com um conjuntode caracterısticas, dentre as quais:

• Proprietario do processo;

• Estado do processo (em espera, em execucao, etc);

• Prioridade de execucao;

• Recursos de memoria.

Page 89: Shell_Script_XXVIISF.pdf

Quanto aos prcessos temos

Salviano A. Leao – 89

• Cada processo possuı um dono e um PID (Process Identifier), um numero deidentificacao que o sistema da a cada processo. Para cada novo processo, umnovo numero deve ser atribuıdo, ou seja, nao se pode ter um unico PID paradois ou mais processos ao mesmo tempo.

• Os sistemas baseados em Unix precisam que um processo ja existente seduplique para que a copia possa ser atribuıda a uma tarefa nova. Quando issoocorre, o processo ”copiado”recebe o nome de ”processo pai”, enquanto que onovo e denominado ”processo filho”. E nesse ponto que o PPID (ParentProcess Identifier) passa a ser usado: o PPID de um processo nada mais e doque o PID de seu processo pai.

Page 90: Shell_Script_XXVIISF.pdf

Os UID e GID

Salviano A. Leao – 90

• Cada processo precisa ter um proprietario, pois so assim o sistema sabera,atraves das permissoes fornecidas pelo proprietario, quem pode e quem naopode executar o processo em questao. Para lidar com os donos, o sistema usaos numeros UID e GID.

• O Linux gerencia os usuarios e os grupos atraves de numeros conhecidoscomo UID (User Identifier) e GID (Group Identifier). Como e possıvel perceber,UID sao numeros de usuarios e GID sao numeros de grupos. Os nomes dosusuarios e dos grupos servem apenas para facilitar o uso humano docomputador.

• Cada usuario precisa pertencer a um ou mais grupos. Como cada processo (ecada arquivo) pertence a um usuario, logo, esse processo pertence ao grupode seu proprietario. Assim sendo, cada processo esta associado a um UID e aum GID.

• Os numeros UID e GID variam de 0 a 65536. Dependendo do sistema, o valorlimite pode ser maior. No caso do usuario root, esses valores sao sempre 0(zero). Assim, para fazer com que um usuario tenha os mesmos privilegios queo root, e necessario que seu GID seja 0.

Page 91: Shell_Script_XXVIISF.pdf

Sinais de processos

Salviano A. Leao – 91

• Os sinais sao meios usados para que os processos possam se comunicar epara que o sistema possa interferir em seu funcionamento. Por exemplo, se ousuario executar o comando kill para interromper um processo, isso sera feitopor meio de um sinal.

• Quando um processo recebe um determinado sinal e conta com instrucoessobre o que fazer com ele, tal acao e colocada em pratica. Se nao houverinstrucoes pre-programadas, o proprio Linux pode executar a acao de acordocom suas rotinas.

Page 92: Shell_Script_XXVIISF.pdf

Alguns sinais comuns

Salviano A. Leao – 92

STOP esse sinal tem a funcao de interromper a execucao de um processo e soreativa-lo apos o recebimento do sinal CONT;

CONT esse sinal tem a funcao de instruir a execucao de um processo apos este tersido interrompido;

SEGV esse sinal informa erros de enderecos de memoria;

TERM esse sinal tem a funcao de terminar completamente o processo, ou seja, estedeixa de existir apos a finalizacao;

ILL esse sinal informa erros de instrucao ilegal, por exemplo, quando ocorre divisaopor zero;

KILL esse sinal tem a funcao de ”matar”um processo e e usado em momentos decriticidade.

Os comando kill, kilall e pkill sao comandos que o usuario pode usar para enviar umsinal qualquer sinal para o sistema, porem, se ele for usado de maneira isolada, ouseja, sem o parametro de um sinal, o kill por padrao executa o sinal TERM.

Page 93: Shell_Script_XXVIISF.pdf

Comando kill

Salviano A. Leao – 93

Ele envia um sinal para um processo do sistema. A sua sintaxe e

$ kill -SINAL PID

Como exemplo, vamos supor que voce deseja interromper temporariamente aexecucao do processo de PID 4220. Para isso, pode-se usar o seguinte comando:

$ kill -STOP 4220

Para que o processo 4220 volte a ser executado, basta usar o comando:

$ kill -CONT 4220

Se o sinal precisa ser enviado a todos os processos, pode-se usar o numero -1 nolugar do PID. Por exemplo:

$ kill -STOP -1

Page 94: Shell_Script_XXVIISF.pdf

Comando kill listando sinais

Salviano A. Leao – 94

O comando$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

Cada sinal possuı um numero associado a ele, assim se desejamos matar o processo4220, fazemos

$ kill -9 4220

Agora, imagine que voce nao saiba qual o PID de um processo, neste caso, pode-seusar o comando killall, desde que voce saiba o nome do processo. A sintaxe e:

killall -SINAL nome -do-processo

ou ainda, podemos usar o pkill

pkill -SINAL nome -do-processo

Por exemplo:

killall -STOP vi

Page 95: Shell_Script_XXVIISF.pdf

Estado dos processos

Salviano A. Leao – 95

Quando um processo e criado, isso nao significa que ele sera imediatamenteexecutado. Alem disso, determinados processos podem ser temporariamenteparalisados para que o processador possa executar um processo prioritario. Isso querdizer que os processos, em certos momentos, podem estar em situacoes de execucaodiferentes. O Linux trabalha, essencialmente, com quatro tipos de situacao, isto e,estados:

Execut avel o processo pode ser executado imediatamente;

Dormente o processo precisa aguardar algo ocorrer para ser executado. So aposesse ”algo ocorrer”e que ele passa para o estado executavel;

Zumbi o processo e considerado ”morto”, mas, por alguma razao, ainda existe;

Parado o processo esta ”congelado”, ou seja, nao pode ser executado.

Page 96: Shell_Script_XXVIISF.pdf

Verificando processos com o ps

Salviano A. Leao – 96

Esse comando informa quais os processos em execucao atualmente, quais os UIDs ePIDs correspondentes, entre outros. As opcoes mais importantes desse comando saoos seguintes:

-a Mostra todos os processos existentes;

-e Exibe as variaveis de ambiente relacionadas aos processos;

-f Exibe a arvore de execucao dos processos;

-l Exibe mais campos no resultado;

-m Mostra a quantidade de memoria ocupada por cada processo;

-u Exibe o nome do usuario que iniciou determinado processo e a hora em que issoocorreu;

-x Exibe os processos que nao estao associados a terminais;

-w Se o resultado de processo nao couber em uma linha, essa opcao faz com que orestante seja exibido na linha seguinte.

Page 97: Shell_Script_XXVIISF.pdf

Exemplo do ps

Salviano A. Leao – 97

Por exemplo:$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 23692 1960 ? Ss 08:13 0:00 /sbin/init

root 2 0.0 0.0 0 0 ? S 08:13 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 08:13 0:00 [migration/0]

root 4 0.2 0.0 0 0 ? S 08:13 0:26 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S 08:13 0:00 [watchdog/0]

root 6 0.0 0.0 0 0 ? S 08:13 0:00 [migration/1]

root 7 0.0 0.0 0 0 ? S 08:13 0:00 [ksoftirqd/1]

root 8 0.0 0.0 0 0 ? S 08:13 0:00 [watchdog/1]

root 9 0.0 0.0 0 0 ? S 08:13 0:00 [migration/2]

root 10 0.0 0.0 0 0 ? S 08:13 0:00 [ksoftirqd/2]

root 11 0.0 0.0 0 0 ? S 08:13 0:00 [watchdog/2]

root 12 0.0 0.0 0 0 ? S 08:13 0:00 [migration/3]

root 13 0.0 0.0 0 0 ? S 08:13 0:00 [ksoftirqd/3]

$ ps alx

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND

4 0 1 0 20 0 23692 1960 poll_s Ss ? 0:00 /sbin/init

1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]

1 0 3 2 -100 - 0 0 migrat S ? 0:00 [migration/0]

1 0 4 2 20 0 0 0 ksofti S ? 0:27 [ksoftirqd/0]

5 0 5 2 -100 - 0 0 watchd S ? 0:00 [watchdog/0]

1 0 6 2 -100 - 0 0 migrat S ? 0:00 [migration/1]

1 0 7 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/1]

5 0 8 2 -100 - 0 0 watchd S ? 0:00 [watchdog/1]

1 0 9 2 -100 - 0 0 migrat S ? 0:00 [migration/2]

1 0 10 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/2]

5 0 11 2 -100 - 0 0 watchd S ? 0:00 [watchdog/2]

1 0 12 2 -100 - 0 0 migrat S ? 0:00 [migration/3]

1 0 13 2 20 0 0 0 ksofti S ? 0:00 [ksoftirqd/3]

Page 98: Shell_Script_XXVIISF.pdf

Descric ao dos campos de saıda do ps

Salviano A. Leao – 98

USER nome do usuario dono do processo;

UID Numero de identificacao do usuario dono do processo;

PID Numero de identificacao do processo;

PPID Numero de identificacao do processo pai;

%CPU Porcentagem do processamento usado;

%MEM Porcentagem da memoria usada;

VSZ Indica o tamanho virtual do processo;

RSS Sigla de Resident Set Size, indica a quantidade de memoria usada (em KB);

TTY Indica o identificador do terminal do processo;

START Hora em que o processo foi iniciado;

TIME Tempo de processamento ja consumido pelo processo;

COMMAND Nome do comando que executa aquele processo;

PRI Valor da prioridade do processo;

Page 99: Shell_Script_XXVIISF.pdf

Salviano A. Leao – 99

NI Valor preciso da prioridade (geralmente igual aos valores de PRI);

WCHAN Mostra a funcao do kernel onde o processo se encontra em modo suspenso;

STAT Indica o estado atual do processo, sendo representado por uma letra:

R executavel;

D em espera no disco;

S Suspenso;

T interrompido;

Z Zumbi;

Essas letras podem ser combinadas e ainda acrescidas de:

W processo paginado em disco;

¡ processo com prioridade maior que o convencional;

N processo com prioridade menor que o convencional;

L processo com alguns recursos bloqueados no kernel.

Page 100: Shell_Script_XXVIISF.pdf

Verificando processos com o top

Salviano A. Leao – 100

O comando ps trabalha como se tirasse uma fotografia da situacao dos processosnaquele momento. O comando top, por sua vez, coleta as informacoes, mas asatualiza regularmente. Geralmente essa atualizacao ocorre a cada 10 segundos. Asintaxe do comando top e a seguinte:

top -opcao

Entre as opcoes, tem-se as que se seguem:

-d n atualiza o top apos n segundos.

-c Exibe a linha de comando ao inves do nome do processo;

-i Faz o top ignorar processos em estado zumbi;

-s Executa o top em modo seguro.

E possıvel manipular alguns recursos do comando top atraves das teclas do teclado.Por exemplo, para atualizar imediatamente o resultado exibido, basta pressionar a teclade espaco. Se pressionar a tecla q, o top e finalizado. Pressione a tecla h enquantoestiver utilizando o top para ver a lista completa de opcoes e teclas de atalho.

Page 101: Shell_Script_XXVIISF.pdf

Controle de processos

Salviano A. Leao – 101

Para se ter ainda mais controle sobre os processos executados no Linux, pode-seutilizar os seguintes comandos:

jobs mostra os processos que estao parados ou executando em segundo plano(background). Quando um processo esta nessa condicao, significa suaexecucao e feita pelo kernel sem que esteja vinculada a um terminal, ou seja,ele e executado enquanto o usuario usa outros comandos e aplicativos. A suasintaxe e:

-l lista os processos atraves do PID;

-r lista apenas os processos em execucao;

-s lista apenas os processos parados.

No inıcio da linha ele mostra um numero entre colchetes, o qual indica a ordemdo processo usada pelo jobs.

Page 102: Shell_Script_XXVIISF.pdf

Primeiro plano e segundo plano

Salviano A. Leao – 102

fg e bg ele enviam um processo respectivamente para o primeiro plano (foreground)e segundo plano (background). Para usar o bg, deve-se paralisar o processo.Isso pode ser feito pressionando-se as teclas Ctrl + Z no teclado. Em seguida,digita-se o comando da seguinte forma:

$ bg +numero

ou ainda

$ bg %numero

O numero mencionado corresponde ao valor de ordem informado no inıcio dalinha quando o comando jobs e usado.

Quanto ao comando fg, a sintaxe e a mesma:

$ fg +numero

Page 103: Shell_Script_XXVIISF.pdf

Comando fuser

Salviano A. Leao – 103

O comando fuser mostra qual processo faz uso de um determinado arquivo oudiretorio. Sua sintaxe e:

fuser -opcao caminho (do arquivo ou diretorio)

Entre as opcoes, tem-se:

-k finaliza o processo que utiliza o arquivo/diretorio em questao;

-i deve ser usada em conjunto com a opcao k e serve para perguntar se a finalizacaodo processo deve ser feita;

-u mostra o proprietario do processo;

-v o resultado e mostrado em um padrao de exibicao semelhante ao comando ps.

Page 104: Shell_Script_XXVIISF.pdf

Comando pstree

Salviano A. Leao – 104

Esse comando mostra processos relacionados em formato de arvore. Sua sintaxe e:

pstree -opcao PID

Entre as opcoes, tem-se:

-u mostra o proprietario do processo;

-p exibe o PID apos o nome do processo;

-c mostra a relacao de processos ativos;

-G usa determinados caracteres para exibir o resultado em um formato grafico.

Um detalhe importante: se ao digitar o comando pstree o PID nao for informado, todosos processos serao listados.

Page 105: Shell_Script_XXVIISF.pdf

Comandos de controle de execuc ao

Salviano A. Leao – 105

nohup Esse comando possibilita ao processo ficar ativo mesmo quando o usuario fazlogout. E da natureza dos sistemas baseados em Unix interromper processoscaso seu proprietario nao esteja mais ativo, por isso, o nohup pode ser muitoutil. Sua sintaxe e:

nohup comando

time Determina a quantidade de tempo consumida durante a execucao de umdeterminado comando mais outras informacoes. Por exemplo,

$ time lstotal 3,0M4,0K Aula_prosper.tex 24K lista-de-comandos.tex8,0K bash.tex 8,0K Lista_dos_comando_basicos.tex20K Comandos_Basicos.tex 4,0K lista_tabelas20K Comandos_Basicos.tex.backup 4,0K lista-verbatim01.tex

4,0K IntroBash/ 4,0K Makefile4,0K linux-pauloaguiar/ 36K Notas_01.tex

real 0m0.003suser 0m0.000ssys 0m0.010s

Page 106: Shell_Script_XXVIISF.pdf

Executando tarefas agendadas

Salviano A. Leao – 106

at e batch agenda tarefas a serem executadas pelo sistema.

atq lista as tarefas agendadas com o comando at.

atrm remove tarefas agendadas.

cron O cron pode ser interpretado como um servico do Linux que e carregadodurante o processo de boot do sistema. Trata-se de uma ferramenta quepermite programar a execucao de comandos e processos de maneira repetitivaou apenas uma unica vez.

crontab editor de tarefas do cron.

Page 107: Shell_Script_XXVIISF.pdf

Comandos especiais

Salviano A. Leao – 107

paste junta linhas de um arquivo, de forma que a linha reultante consistira dascorrentes linhas de cada arquivo, separadas por um delimitador especificado,caso contrario sera o TAB. Alguns de seus arqumentos sao

-d, –delimiters=LIST Use os caracteres da lista em vez do TAB.

-s, –serial

paste one file at a time instead of in parallel

cut remove sections from each line of files Print selected parts of lines from each FILEto standard output.

Mandatory arguments to long options are mandatory for short options too.

-b, –bytes=LIST select only these bytes

-c, –characters=LIST select only these characters

-d, –delimiter=DELIM use DELIM instead of TAB for field delimiter

-f, –fields=LIST select only these fields; also print any line that contains nodelimiter character, unless the -s option is specified

-n (ignored)

–complement complement the set of selected bytes, characters or fields

-s, –only-delimited do not print lines not containing delimiters

–output-delimiter=STRING use STRING as the output delimiter the default is to

Page 108: Shell_Script_XXVIISF.pdf

Comandos para navegac ao

Salviano A. Leao – 108

curl

wget

lynx

elinks

Page 109: Shell_Script_XXVIISF.pdf

O Shell

Salviano A. Leao – 109

Programas e comandos

Núcleo ou Kernel

Hardware

Shell ou interpretador

Page 110: Shell_Script_XXVIISF.pdf

Shell Script B asico

Salviano A. Leao – 110

Sera que funciona? Um script mınimo em Bash, com apenas duas linhas, pode servisto abaixo

#!/ bin/bash

echo "Hello , World!"

A primeira linha indica que o shell Bash sera usado para interpretar o script e, emboranao seja obrigatoria, sua inclusao e considerada uma boa pratica. Tanto, que seatribuiu a denominacao carinhosa de ”sha-boom”aos seus dois primeiros caracteres,denotando algo que se pode traduzir para o portugues como ”o inıcio de um passe demagica”. A segunda linha contem a unica acao que sera realmente executada, e queresultara na exibicao do texto ”Hello, World!”no terminal.

Page 111: Shell_Script_XXVIISF.pdf

Pipes

Salviano A. Leao – 111

Pipes representam um conceito da famılia Unix de sistemas operacionais atraves doqual se possibilita que a saıda de um programa seja usada como a entrada de outro.

#!/ bin/bash

ls -l | sed -e "s/[aeio]/u/g"

O trecho de script acima faz uso de um pipe. Ele pode ser entendido da seguintemaneira: o comando ls -l e executado e sua saıda, ao inves de exibida no terminal,e enviada para o programa sed que manipula o texto da forma que lhe e conveniente.

Page 112: Shell_Script_XXVIISF.pdf

Vari aveis

Salviano A. Leao – 112

Variaveis em Bash podem ser usadas da mesma maneira que se costuma usa-las namaioria das linguagens de programacao, com duas distincoes. A primeira delasrefere-se ao fato de que em Bash, nao e necessario declarar variaveis. A simplesatribuicao de um valor para um nome resulta na alocacao de uma variavel com aquelenome. Segundo, as variaveis nao sao tipadas. O que significa que uma mesmavariavel pode conter, em momentos distintos, valores de tipos diferentes.Assim, o script abaixo e perfeitamente valido. Note a ausencia obrigatoria de espacosentre o nome da variavel e o operador de atribuicao.

#!/ bin/bash

var="Hello , World!"echo $var

var =10echo $var