Você está na página 1de 216

Linux, Comandos Básico

Prof. Dr. Salviano A. Leão

4 de abril de 2017

Salviano A. Leão – 1
Sumário

• Sumário
☞ Linux: comandos básicos
Referências
☞ Bash e ferramentas
Manuais

Administração ☞ Construção e análise de alguns scripts


Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 2
• Sumário

Referências
• Referências para os
comandos básicos
• Referências para
Shell-script

Manuais

Administração

Shell Script

Segurança

Arquivos Referências
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 3
Referências para os comandos básicos

• Sumário

Referências
http://www.guiaubuntupt.org/wiki/index.php?title=Comandos_basicos#col
• Referências para os
comandos básicos ☞
• Referências para
Shell-script http://www.planetarium.com.br/planetarium/noticias/2004/2/1076629936
Manuais

Administração
☞ http://wiki.ubuntu-br.org/ComandosBasicos
Shell Script
☞ http://www.infowester.com/comandoslinux.php
Segurança

Arquivos ☞ http://www.mtm.ufsc.br/~krukoski/pub/linux/focalinux2/ch-cmdv.htm
Processos no Linux
☞ http://pt.wikipedia.org/wiki/Guia_de_comandos_para_Linux/Unix
Shell Script

O sed ☞
http://www.vivaolinux.com.br/artigo/Fundamentos-do-sistema-Linux-com

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

Salviano A. Leão – 4
Referências para Shell-script

• Sumário
☞ Júlio Cezar Neves: http://br.gnome.org/TWikiBar/TWikiBarPapo001
Referências
• Referências para os
☞ Aurélio Marinho Jargas: http://aurelio.net/shell/
comandos básicos
• Referências para
Shell-script
☞ wikipedia: http://pt.wikipedia.org/wiki/Shell_script
Manuais
☞ Shell Script: http://www.inf.ufpr.br/afms03/shell.html
Administração

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


Segurança
☞ Advanced Bash-Sripting Guide: http://tldp.org/LDP/abs/html/
Arquivos

Processos no Linux ☞ Bash by examples:


Shell Script http://www.ibm.com/developerworks/linux/library/l-bash.html
O sed
☞ Shelldorado: http://www.shelldorado.com/

Salviano A. Leão – 5
Livros recomendados

• Sumário ☞ Julio Cezar Neves, Programação Shell Linux, Editora Brasport 9a¯ edição (2013)
Referências
• Referências para os ☞ Aurélio Marinho Jargas, Shell Script Profissional, editora Novatec (2008).
comandos básicos
• Referências para
Shell-script ☞ Aurélio Marinho Jargas, Expressões Regulares – Uma abordagem divertida,
Manuais editora Novatec 3a¯ edição(2009).
Administração
☞ João Eriberto Mota Filho, Descobrindo o Linux – Entenda o sistema
operacional GNU/Linux, editora Novatec 3a¯ edição(2012).
Shell Script

Segurança

Arquivos
☞ Carl Albing, JP Vossen, and Cameron Newham, Bash Cookbook, O’Reilly First
Processos no Linux
Edition (2007).
Shell Script

O sed ☞ Eric Foster-Johnson, John C. Welsh and Micah Anderson, Beginning Shell
Scripting, 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).

Salviano A. Leão – 6
• Sumário

Referências

Manuais
• Obtendo ajuda

Administração

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script
Manuais
O sed

Salviano A. Leão – 7
Obtendo ajuda

• Sumário
help Mostra informações gerais sobre os comandos intrínsecos do Shell;
Referências
man Mostra toda a informação a respeito de um comando;
Manuais
• Obtendo ajuda info Mostra documentação no formato próprio do info;
Administração

Shell Script apropos Pesquisa na páginas do man nomes e descrições que se encaixam o co-
Segurança mando buscado;
Arquivos
whatis Procura nomes na páginas do man e mostra na tela as páginas de descrição
Processos no Linux
de qualquer nome que se assemelha;
Shell Script

O sed catman Constrói o banco de dados que o apropos faz uso.

Em geral os comandos GNU/Linux fornecem uma pequena descrição sobre o comando


ao digitarmos o comando com a opção --help:

# comando -- help

A sintaxe geral dos comandos linux é:

# comando [ opcao ... ] [ expressao ] [ arquivo ... ]

Salviano A. Leão – 8
man pages - Manual de Referências

• Sumário
Estrutura das Páginas do man
Referências
Comandos que podem ser executados a
Manuais
1. Comandos do usuário
• Obtendo ajuda partir do shell
Administração Funções que devem ser executadas pelo
2. Chamadas do sistema
Shell Script kernel
Segurança
Funções internas das bibliotecas, princi-
3. Biblioteca de funções
Arquivos
palmente as da libc
Processos no Linux
Driver e hardware, principalmente os en-
Shell Script 4. Formato de arquivos especiais
contrados em /dev
O sed
Formato de arquivos e convenções, por
5. Arquivos de configuração
exemplo /etc/passwd
6. Jogos e demonstrações Jogos
Sistemas de arquivos, protocolos de rede,
7. Pacotes de macros e convenções
códigos ASCII e outros
8. Comandos de administração do sis- Comandos que em geral só o root pode
tema executar
9. Rotinas do Kernel Não é padrão

Salviano A. Leão – 9
• Sumário

Referências

Manuais

Administração
• Comandos: user
• Desliga sistema
• Gerenciar usuários
• history
• Partições
• Arquivos
• disco
• Arquivo .bashrc
Administração
• Comando ls
• hardware
• Diretorios
• Links
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 10
Comandos básicos usuário: qualquer

• Sumário
chage user Muda as informações de expiração da senha do usuário user;
Referências
chfn user Muda o nome real do usuário user e suas informações;
Manuais

Administração crontab Mantém individualmente as tarefas agendadas para cada usuário;


• Comandos: user
• Desliga sistema finger user Mostra informações sobre o usuário user;
• Gerenciar usuários
• history
id Mostra as identificações do reais e efetivas dos usuários e grupos;
• Partições
• Arquivos
• disco last Mostras as conexões mais recentes do usuário;
• Arquivo .bashrc
• Comando ls lastlog Mostra a última conexão dos usuários do sistema;
• hardware
• Diretorios
logname Mostra o nome de login do usuário;
• Links
• Comando diff
• Comando patch passwd user Troca senha do usuário user;
Shell Script
uptime Mostra a quantas horas seu computador está ligado;
Segurança

Arquivos w Mostra os usuários conectados atualmente no computador;


Processos no Linux

Shell Script
who Mostra quem está usando o sistema.
O sed
whoami Mostra o nome de login do usuário. O mesmo que id -un.

Salviano A. Leão – 11
Comandos básicos do sistema

• Sumário
exit Sair do terminal;
Referências
halt Desligar o sistema;
Manuais

Administração logout Sair do terminal;


• Comandos: user
• Desliga sistema reboot Reinicia o computador;
• Gerenciar usuários
• history
shutdown Desliga ou reinicia o computador. Há algumas opções para esse comando,
• Partições
• Arquivos veja por exemplo:
• disco
• Arquivo .bashrc shutdown -r now Reinicia o computador;
• Comando ls
• hardware
shutdown -h now Desliga o computador;
• Diretorios
• Links
• Comando diff halt Desliga o computador.
• Comando patch

Shell Script
O parâmetro now pode ser mudado. Por exemplo: digite
Segurança # shutdown -r +10
Arquivos

Processos no Linux e o sistema irá reiniciar daqui a 10 minutos;


Shell Script

O sed

Salviano A. Leão – 12
Comandos básicos usuário: superusuário

• Sumário
O usuário comun pode usar, entretanto ele deve possuir permissões:
Referências su Muda a identificação do usuário ou torna-se o superusuário, o root;
Manuais

Administração sudo Executa um comando com um outro usuário;


• Comandos: user
• Desliga sistema Somente o superusuário pode executar:
• Gerenciar usuários
• history addgroup Adiciona usuários e grupos ao sistema, de acordo com as opções;
• Partições
• Arquivos
adduser Adiciona usuários e grupos ao sistema, de acordo com as opções;
• disco
• Arquivo .bashrc
• Comando ls delgroup Remove um usuário ou grupo do sistema;
• hardware
• Diretorios deluser Remove um usuário ou grupo do sistema;
• Links
• Comando diff lastb Mostra lista dos últimos usuários conectados no sistema;
• Comando patch

Shell Script useradd Cria um novo usuário ou adapta as informações de um usuário;


Segurança

Arquivos
userdel Apaga todos os arquivos relacionados ao usuário;
Processos no Linux
usermod Modifica as informações do sistema relativas ao usuário;
Shell Script

O sed

Salviano A. Leão – 13
O Comando history

• Sumário
Ele mostra os últimos 1000 comandos executados na linha de comando na conta cor-
Referências
rente. O comando history -c apaga história dos últimos comando digitados; Desig-
Manuais
nador de eventos – ele refere-se a uma linha da lista do history
Administração
!n Refere-se a n-ésima linha de comando da lista;
• Comandos: user
• Desliga sistema
• Gerenciar usuários !-n Refere-se a corrente linha de comando menos n;
• history
• Partições !! Refere-se ao comando prévio;
• Arquivos
• disco !texto Refere-se ao mais recente comando que inicia com texto;
• Arquivo .bashrc
• Comando ls
• hardware
!?texto[? ] Refere-se ao mais recente comando contendo texto;
• Diretorios
• Links ^texto1^texto2^ Repita o último comando trocando texto1 por texto2;
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 14
Estrutura de Arquivos do Linux

• Sumário

Referências / |-- usr


Manuais |-- bin | |-- bin
Administração |-- boot | |-- games
• Comandos: user
• Desliga sistema
|-- dev | |-- include
• Gerenciar usuários |-- etc | |-- lib
• history
• Partições
|-- home | |-- lib32
• Arquivos | -- salviano | |-- lib64 -> lib
• disco
• Arquivo .bashrc
|-- lib | |-- local
• Comando ls |-- media | |-- sbin
• hardware
• Diretorios
|-- mnt | |-- share
• Links |-- proc | `-- src
• Comando diff
• Comando patch
|-- root
Shell Script
|-- sbin
Segurança
|-- sys
Arquivos |-- tmp
Processos no Linux |-- usr
Shell Script |-- var
O sed

Salviano A. Leão – 15
Conteúdo dos diretórios

• Sumário
Diretório Tipos de arquivos
Referências

Manuais
/bin Principais utilitários do sistema.
Administração
Contém os arquivos e a imagem do kernel necessários para a inicili-
/boot
• Comandos: user zação do sitema.
• Desliga sistema
• Gerenciar usuários /dev Arquivos especiais dos dispositivos do sistema.
• history /etc Arquivos de configuração do sistema.
• Partições
• Arquivos /home Local onde ficam os diretórios dos usuários com contas no sistema.
• disco Bibliotecas de funções administrativas do sistema além dos módulos
• Arquivo .bashrc /lib
• Comando ls do kernel.
• hardware Em geral onde são montados os dispositivos removíveis, por exemplo
• Diretorios /media
• Links
os pendrives, CDs e DVD, etc.
• Comando diff /proc Arquivos com informações sobre o hardware.
• Comando patch
/root diretório padrão do superusuário, o root.
Shell Script
Comando de manutenção do sistema, em geral só o superusuário
Segurança /sbin
pode executar.
Arquivos
/tmp arquivos temporários do sistema
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 16
Conteúdo dos diretórios

• Sumário
Diretório Tipos de arquivos
Referências

Manuais
/usr Encontram os utilitários, documentação, bibliotecas, etc.
Administração
/usr/bin Utilitários que o usuário tem permissão para executar.
• Comandos: user /usr/games Jogos.
• Desliga sistema
• Gerenciar usuários /usr/include Cabeçalhos das bibliotecas.
• history /usr/lib Bibliotecas.
• Partições
• Arquivos /usr/local Usado por programas específicos do usuário.
• disco /usr/local/bin Os programas executáveis específicos do usuário.
• Arquivo .bashrc
• Comando ls /usr/local/lib As bibliotecas dos programas específicos do usuário.
• hardware Utilitários do sistema que o superusuário tem permissão para execu-
• Diretorios /usr/sbin
• Links tar.
• Comando diff /usr/share Local onde encontra-se a documentação, icones, etc.
• Comando patch
/usr/src Aqui encontra-se o código fonte do kernel quando ele é instalado.
Shell Script
Onde o sistema guarda os relatórios, os arquivos de log, e os arquivos
Segurança /var
de impressão, de email, de download instalação do siste, etc.
Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 17
Informações sobre as partições

• Sumário
Os comandos a seguir mostram as informações sobre as partições e também editam
Referências
as partições do sistema.
Manuais
gdisk manipula partições GPT.
Administração
• Comandos: user gfdisk manipula tabelas de partições GPT.
• Desliga sistema
• Gerenciar usuários
• history
fdisk manipula tabelas de partições MBR. As informações são obtidas melhor pelo
• Partições comando:
• Arquivos
• disco phonon:~/Seminarios/XXVIISF > sudo fdisk -l /dev/sda
• Arquivo .bashrc
• Comando ls Disco /dev/sda: 320.1 GB, 320072933376 bytes
• hardware 255 heads, 63 sectors/track, 38913 cylinders
• Diretorios Unidades = cilindros de 16065 * 512 = 8225280 bytes
• Links
Sector size (logical/physical): 512 bytes / 512 bytes
• Comando diff
I/O size (minimum/optimal): 512 bytes / 512 bytes
• Comando patch
Identificador do disco: 0x20000000
Shell Script

Segurança Dispositivo Boot Início Fim Blocos Id Sistema


/dev/sda1 1 10 80293+ de Utilitário Dell
Arquivos
/dev/sda2 * 11 1202 9566208 7 HPFS ou NTFS
Processos no Linux /dev/sda3 1202 7575 51197266 7 HPFS ou NTFS
Shell Script /dev/sda4 7576 38913 251722454 5 Estendida
O sed
/dev/sda5 7576 13312 46082421 83 Linux
/dev/sda6 13313 38403 201543426 83 Linux
/dev/sda7 38404 38913 4096543+ 82 Linux swap / Solaris

Salviano A. Leão – 18
Informações sobre o uso do sistema de arquivos

• Sumário
df Mostra informações dos discos de todos os sistemas de arquivos. Há algumas
Referências
opções interessantes:
Manuais
df -h Mostra as informações num formato mais legível;
Administração
• Comandos: user
• Desliga sistema Sist. Arq. Tam Usad Disp Uso% Montado em
• Gerenciar usuários /dev/sda5 44G 12G 30G 28% /
• history none 1,9G 324K 1,9G 1% /dev
• Partições none 1,9G 188K 1,9G 1% /dev/shm
• Arquivos
none 1,9G 92K 1,9G 1% /var/run
• disco
none 1,9G 0 1,9G 0% /var/lock
• Arquivo .bashrc
none 1,9G 0 1,9G 0% /lib/init/rw
• Comando ls
/dev/sda6 190G 74G 107G 41% /home
• hardware
/dev/sda3 49G 21G 29G 42% /windows
• Diretorios
• Links
• Comando diff
• Comando patch free Mostra o uso da memória do computador, inclusive do swap. As opções -b, -k,
Shell Script -m, -g mostra o resultado respectivamente em unidades de bytes, KB, MB, ou GB.
Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 19
Informações sobre o uso do disco

• Sumário
du Mostra o uso detalhado de disco no diretório corrente e em seus subdiretórios. Há
Referências
diversas opções:
Manuais
du -h Mostra informações em formato legível.
Administração
• Comandos: user du -s Mostra de forma sintética o uso do disco.
• Desliga sistema
• Gerenciar usuários
• history
du -sh Mostra de forma sintética o uso do disco em formato legível.
• Partições
• Arquivos du -ah Mostra também o tamanho dos arquivos, tudo em formato legível.
• disco
• Arquivo .bashrc du –max-depth=n -ah Mostra também o tamanho dos arquivos, tudo em formato
• Comando ls
• hardware
legível, porém só vai até n níveis de profundidade de subdiretórios.
• Diretorios
• Links
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 20
Variáveis de ambiente e atalhos
As variáveis definidas pelo sistema para cada usuário são obtidas com o comando env
ou printenv
• Sumário

Referências
> env
Manuais > printenv
Administração
• Comandos: user
• Desliga sistema Ele fornece todas as variáveis de ambiente usadas pelo usuário. Os arquivos de confi-
• Gerenciar usuários
• history
guração da área do usuário são:
• Partições
• Arquivos Arquivo Conteúdo
• disco
• Arquivo .bashrc Sempre que se entra no sistema esse é o primeiro arquivo a ser
• Comando ls .bashrc rodado. Nele encontra-se a definção do formato do prompt, o PATH
• hardware
do usuário, suas definições, etc.
• Diretorios
• Links
.bash_aliases Aqui o usuário defini os seus atalhos.
• Comando diff
• Comando patch O comando locale mostra as suas configurações locais
Shell Script

Segurança > locale


LANG=pt_BR.UTF-8
Arquivos
LANGUAGE=
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC=en_US.UTF-8
Processos no Linux LC_TIME=pt_BR.UTF-8
LC_COLLATE="pt_BR.UTF-8"
Shell Script LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="pt_BR.UTF-8"
O sed LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=
Salviano A. Leão – 21
Arquivo .bashrc

# .bashrc
• Sumário # Ajusta PATH para incluir o diretório bin específico do usuário se existir
if [ -d ~/bin ] ; then
Referências PATH=${HOME}/bin:${PATH}
fi
Manuais # Para padronizar os números, conforme padrão US
# usando os pontos com separador decimal
Administração export LC_NUMERIC="en_US.UTF-8"
• Comandos: user
# Não duplique as linhas do history
• Desliga sistema export HISTCONTROL="ignorespace:ignoredups"
• Gerenciar usuários export HISTIGNORE="&:ls:[bf]g:exit: [ \t]*:ps:cd"
• history
# Definindo algumas variavies do sistema
• Partições export BROWSER="/usr/bin/firefox"
• Arquivos export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
• disco # Para obter um prompt colorido
• Arquivo .bashrc if [ "$USER" = root ]
• Comando ls then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;33m\]\w >
• hardware ֒→ \[\033[00m\]'
• Diretorios else
• Links PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;33m\]\w >
֒→ \[\033[00m\]'
• Comando diff fi
• Comando patch
# Habilite a característica de completar um comando.
Shell Script if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
Segurança fi

Arquivos # >>>>>>>>>>>>>>> Definições de atalhos <<<<<<<<<<<<<<<<<<<<<


if [ -f ~/.bash_aliases ]; then
Processos no Linux . ~/.bash_aliases
fi
Shell Script # Mensagens de boas vindas ao conetar
clear
O sed echo -ne "Hoje é: "; date +%d/%m/%y
cal
echo -ne "Você está logado há: " ; uptime | awk /'up/ {print $3, $4}'
echo
fortune

Salviano A. Leão – 22
Arquivo .bash_aliases

# Habilite o suporte a cores do ls e também adicione alguns atalhos


• Sumário if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`" # gera o código para definir LS_COLORS p/ o bash
Referências alias ls='ls --color=auto -hsCF'
alias dir='ls --color=auto --format=vertical'
Manuais alias vdir='ls --color=auto --format=long'
fi
Administração
• Comandos: user # Mais alguns atalhos
alias l="ls" # Listagem clássica
• Desliga sistema alias ll="ls -l" # Listagem detalhada
• Gerenciar usuários alias lsa='ls -a' # Listar tudo
alias lsd="ls -d */" # Listar só diretórios
• history
alias la='ls -ACF' # Listar tudo, formatando a saída
• Partições alias l='ls -ahlsCF' # List tudo, formatando a saída em colunas
• Arquivos alias cd..="cd .." # Erro comun de digitação
• disco alias cp="cp -i" # Sempre pede confirmação ao copiar um arquivo
• Arquivo .bashrc alias mv="mv -i" # Sempre pede confirmação ao mover um arquivo
• Comando ls alias rm="rm -i" # Sempre pede confirmação ao apagar um arquivo
• hardware # Mostra o tamanho de um diretório em formato legível.
• Diretorios alias du='du -h'
• Links
# Mostra informações das partições em formato legível.
• Comando diff alias df='df -h'
• Comando patch
alias gnuplot="rlwrap -a -c gnuplot"
Shell Script
#Definindo uma função
Segurança acha_pac() # Procura por arquivos do LaTeX
{
Arquivos find /usr/share/texmf/tex/latex/ -type f -name $1\* -print
find /usr/share/texmf-texlive/tex/latex/ -type f -name $1\* -print
Processos no Linux find /usr/share/doc/ -type f -name $1\* -print
find /etc/texmf/ -type f -name $1\* -print
Shell Script }
O sed

Salviano A. Leão – 23
Listando arquivos e diretórios com o ls

• Sumário
Há inúmeras opções para esse comando, entre as mais utéis estão
Referências -C Lista arquivos em colunas, ordenados verticalmente.
Manuais

Administração -F Sufixa o nome dos diretórios com ’/’, e dos executáveis com ’*’.
• Comandos: user
• Desliga sistema -R Lista os diretórios encontrados, recursivamente.
• Gerenciar usuários
• history -a Lista todos os arquivos, incluindo os arquivos ocultos.
• Partições
• Arquivos
• disco
-c Usa o tempo de alteração para ordenar.
• Arquivo .bashrc
• Comando ls -d Lista diretórios e arquivos no mesmo formato.
• hardware
• Diretorios -l Lista todas as informações do arquivo em uma coluna.
• Links
• Comando diff
• Comando patch
-r Inverte a ordem do ordenação.
Shell Script
-t Ordena a exibição pelo rótulo de tempo.
Segurança

Arquivos -u Usa o tempo do último acesso para ordenar.


Processos no Linux
-1 Lista somente o nome dos arquivos em coluna simples.
Shell Script

O sed

Salviano A. Leão – 24
Uma opções úteis do ls para programação shell

• Sumário
-b, - -escape, - -quoting-style=escape Coloca aspas em nomes de arquivos com ca-
Referências
racteres não gráficos usando sequência de barra invertida alfabética e octal como
Manuais
usado em C. Esta opção é como a opção -Q exceto que os nome de arquivos não
Administração são colocados entre duas aspas.
• Comandos: user
• Desliga sistema -B, - -ignore-backups Não lista arquivos que terminam com ’ ’, a menos que sejam
• Gerenciar usuários
• history
fornecidos na linha de comando.
• Partições
• Arquivos -Q, - -quote-name, - -quoting-style=c Confina o nome do arquivo em aspas duplas
• disco e os caracteres não gráficos entre aspas como no C.
• Arquivo .bashrc
• Comando ls
• hardware
- -full-time Lista o tempo completo, em detrimento a abreviação padrão. O formato é
• Diretorios como no padrão date(1) ; não é possível alterar isto, mas você pode extrair a cadeia
• Links
• Comando diff
de caracteres da data com cut(1) e passar o resultado para ’date -d’.
• Comando patch

Shell Script
- -show-control-chars Imprime caracteres não gráficos como no nome do arquivo.
Segurança
Isto é o padrão a menos que a saída seja um terminal e o programa seja ls.
Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 25
Uma opções úteis do ls para programação shell

• Sumário
- -quoting-style=word Usa o estilo word para colocar aspas nos nomes da saída. A
Referências
word pode ser uma das seguintes:
Manuais
literal Saída de nomes como é. Isto é o comportamento padrão de ls.
Administração
• Comandos: user shell Colocar aspas nos nomes para o interpretador de comandos se eles contém
• Desliga sistema
• Gerenciar usuários meta caracteres do interpretador de comandos ou que causaria saída ambígua.
• history
• Partições shell-always Coloca aspas nos nomes para o interpretador de comandos, mesmo
• Arquivos
• disco
se eles normalmente não requereriam aspas.
• Arquivo .bashrc
• Comando ls c Coloca aspas nos nomes como nas cadeias de caracteres da linguagem C; isto é
• hardware igual a opção -Q.
• Diretorios
• Links
• Comando diff
escape Coloca aspas como o c exceto que omite as aspas duplas ao redor; isto é
• Comando patch igual a opção -b.
Shell Script

Segurança
Um valor padrão para esta opção pode ser especificada com a variável de ambiente
Arquivos
QUOTING_STYLE.
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 26
Informações sobre o sistema
dmesg Mostra as mensagens da inicialização (os log) do sistema;

• Sumário hostname Mostra o nome da máquina que se está conectado (o host local);
Referências
uname Mostra informações sobre o sistema.
Manuais

Administração -a Mostra todas as informações;


• Comandos: user
• Desliga sistema
-o Mostra o sistema operacional;
• Gerenciar usuários
• history
• Partições -p Mostra o tipo do processador
• Arquivos
• disco -s Mostra o nome do kernel usado.
• Arquivo .bashrc
• Comando ls lshw Lista o hardware da máquina. Opções
• hardware
• Diretorios
• Links
-X Lança uma interface gráfica;
• Comando diff
• Comando patch -short Retorna informações em formato mais compacto;
Shell Script
ifconfig Mostra as interfaces de redes ativas e as informações relacionadas a cada
Segurança
uma delas. Já está ficando obsoleto.
Arquivos

Processos no Linux ip Mostra e manipula diversos aspectos das configurações de rede.


Shell Script

O sed > ip addr show #Mostra os ip's das interfaces de rede

Salviano A. Leão – 27
Comandos de informações do sistema

• Sumário
basename Mostra o NOME sem quaisquer componentes iniciais de diretório. Se for
Referências
especificado, remove também o SUFIXO final.
Manuais
> basename -s .ext arquivo.ext
Administração
• Comandos: user
arquivo
• Desliga sistema
> basename /usr/lib/liblapack_atlas.so
• Gerenciar usuários liblapack_atlas.so
• history
• Partições
• Arquivos
• disco dirname Mostra só o diretório.
• Arquivo .bashrc
• Comando ls whereis Mostra onde se encontra determinado arquivo (binários), fonte e páginas de
• hardware
• Diretorios manual ou simplesmente um comando. Algumas opções são:
• Links
• Comando diff -b Procure somente binários;
• Comando patch

Shell Script -m Procure somente nas páginas de manual;


Segurança
-s Procure somente por códigos fontes;
Arquivos

Processos no Linux which Mostra qual arquivo binário está sendo chamado pelo shell quando chamado
Shell Script via linha de comando. Opções
O sed

Salviano A. Leão – 28
Manipulando arquivos e diretórios

• Sumário
pwd Mostra o diretório corrente;
Referências
cd Muda de diretório;
Manuais

Administração cd Vai para o diretório raiz do usuário ($HOME);


• Comandos: user
• Desliga sistema cd .. Volta um diretório anterior;
• Gerenciar usuários
• history cd - Volta para o último diretório;
• Partições
• Arquivos
• disco cp Cópia um arquivo e/ou diretório. As opções são:
• Arquivo .bashrc
• Comando ls
• hardware
-i Modo iterativo, pedindo confirmação para todas as ações;
• Diretorios
• Links -f Força cópia, sobrescrevendo o arquivo alvo caso necessário;
• Comando diff
• Comando patch -p Preserva as permissões na cópia;
Shell Script

Segurança
-r ou -R Cópia recursivamente através dos subdiretórios;
Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 29
Removendo e Movendo/Renomeando arquivos
mv Move e/ou renomeia um arquivo e/ou diretório;

• Sumário -i Modo iterativo, pedindo confirmação para todas as ações;


Referências
-f Força, e ignora a opção -i;
Manuais

Administração -r ou -R Vai recursivamente através dos subdiretórios;


• Comandos: user
• Desliga sistema
rm Apaga um arquivo e/ou diretório;
• Gerenciar usuários
• history
• Partições
-i Modo iterativo, pedindo confirmação para todas as ações;
• Arquivos
• disco -f Força a remoção, e ignora a opção -i;
• Arquivo .bashrc
• Comando ls -r ou -R Remove recursivamente através dos subdiretórios;
• hardware
• Diretorios
É sempre recomendado, para evitar desastres, ativar a seguinte alias:
• Links
• Comando diff
• Comando patch alias rm="rm -i" # Sempre pede confirmação ao apagar um arquivo
Shell Script

Segurança
Quando for realmente necessário usar o rm, sem a alias para apagar um conjunto
Arquivos
indesejado, basta, proteger o comando com o apostrofes:
Processos no Linux

Shell Script
> 'rm' *.log
O sed

Esse comando irá apagar todos os arquivos com extensão .log sem perguntar.
Salviano A. Leão – 30
Manipulando diretórios

• Sumário
☞ O comando
Referências mkdir [ opcoes ] [ novo - diretorio ]
Manuais

Administração cria o diretório novo-diretorio. Aqui as opções podem ser:


• Comandos: user
• Desliga sistema -m Especifica as permissões que do novo diretório terá;
• Gerenciar usuários
• history
• Partições
-p Cria todos os diretórios e subdiretórios necessários;
• Arquivos
• disco -v Exibe uma mensagem para cada diretório criado.
• Arquivo .bashrc
• Comando ls
• hardware
• Diretorios
• Links
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 31
Manipulando diretórios

• Sumário
☞ O comando
Referências rmdir [ opcoes ] [ diretorio ]
Manuais

Administração apaga o diretório diretório. Aqui as opções podem ser:


• Comandos: user
• Desliga sistema -p Remove os diretórios-pai do diretório selecionado, se possível. Assim, o co-
• Gerenciar usuários
• history mando rmdir -p a/b/c/ vai apagar o diretório a/b/c/, depois o diretório a/b/
• Partições e por fim o diretório a/, se possível;
• Arquivos
• disco
• Arquivo .bashrc
-v Mostra os detalhes da remoção dos diretórios.
• Comando ls
• hardware Podem ser especificados mais de um diretório por vez. O rmdir só remove dire-
• Diretorios tório vazios.
• Links
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 32
Inodes

• Sumário
• O inode é uma estrutura que contém as informações básicas sobre seus arquivos
Referências
e pastas, como permissões de acesso, identificação dos donos dos arquivos, data
Manuais
e hora do último acesso e alterações, tamanho e os ponteiros para o arquivo em si.
Administração
• Comandos: user
• De modo geral, o inode é a identidade de um arquivo ou diretório, é uma identifi-
• Desliga sistema cação única para ele.
• Gerenciar usuários
• history • O kernel inicia a leitura qualquer arquivo ou diretório primeiramente pelo inode
• Partições
• Arquivos do arquivo para em seguida ler o arquivo ou diretório. Ao ler essa estrutura, são
• disco checadas as permissões e nos casos em que ela é negada ao usuário o kernel
• Arquivo .bashrc
• Comando ls retorna a mensagem de “Permission denied”, caso contrário o procedimento segue
• hardware normalmente.
• Diretorios
• Links
• Comando diff
• Para visualizar os inodes dos seus arquivos, use o parâmetro -i no comando ls
• Comando patch para ver os inodes de cada um.
Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 33
Ligações simbólicas comando: ln

• Sumário
O comando
Referências ln [ opcoes ] [ origem ] [ link ]
Manuais

Administração cria uma ligação simbólica entre arquivos e/ou diretórios. Aqui
• Comandos: user
• Desliga sistema origem Diretório ou arquivo de onde será feito o link.
• Gerenciar usuários
• history
• Partições
link Nome do link que será criado.
• Arquivos
• disco enquanto as opções são
• Arquivo .bashrc
• Comando ls -f Remove o arquivo de destino existente.
• hardware
• Diretorios -s Cria um link simbólico. Usado para criar ligações com o arquivo/diretório de
• Links
• Comando diff destino.
• Comando patch

Shell Script
-v Mostra o nome de cada arquivo antes de fazer o link.
Segurança
-d ou -F Cria um link físico (hard link) para diretórios. Somente o root pode usar
Arquivos
esta opção.
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 34
Tipos de links

• Sumário
Há dois tipos de links: os simbólicos e os físicos.
Referências • O link simbólico cria um arquivo especial no disco (do tipo link) que tem
Manuais
como conteúdo o caminho para chegar até o arquivo alvo.
Administração
• Comandos: user • O link físico faz referência ao mesmo inode do arquivo original, assim ele é perfei-
• Desliga sistema
• Gerenciar usuários tamente idêntico, inclusive nas permissões de acesso, ao arquivo original.
• history
• Partições
• Arquivos > ls -i /etc/passwd
• disco
1576306 4,0K /etc/passwd
• Arquivo .bashrc
> stat /etc/passwd
• Comando ls
• hardware
File: '/etc/passwd'
• Diretorios
Size: 1841 Blocks: 8 IO Block: 4096 arquivo
• Links ֒→ comum
• Comando diff Device: 805h/2053d Inode: 1576306 Links: 1
• Comando patch Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/
Shell Script
֒→ root)
Access: 2010-06-06 11:17:01.501942274 -0300
Segurança
Modify: 2010-05-25 15:05:36.710615705 -0300
Arquivos Change: 2010-05-25 15:05:36.743892352 -0300
Processos no Linux

Shell Script

O sed
Ao contrário dos links simbólicos, não é possível fazer um link físico para
um diretório ou fazer referência a arquivos que estejam em partições diferentes.

Salviano A. Leão – 35
Notas sobre o link

• Sumário
Deve-se notar que ao usar:
Referências • o comando rm com um link, somente o link será removido.
Manuais

Administração
• o comando cp com um link, o arquivo original será copiado ao invés do link.
• Comandos: user
• Desliga sistema • o comando mv com um link, a modificação será feita no link.
• Gerenciar usuários
• history • um comando de visualização (como o cat), o arquivo original será visualizado.
• Partições
• Arquivos
• disco
Exemplos:
• Arquivo .bashrc
• Comando ls > ln -s /home/salviano/file1 /home/salviano/tmp/file1
• hardware
• Diretorios
• Links
• Comando diff Cria o link /home/salviano/tmp/file1 para o arquivo /home/salviano/file1
• Comando patch

Shell Script > ln -s /home/salviano/cursos/QM /home/salviano/dropbox/QM


Segurança

Arquivos
Cria um link /home/salviano/dropbox/QM para o diretório /home/salviano/cursos/QM.
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 36
Comando diff

• Sumário
Compara dois arquivos e mostra as diferenças entre eles. Ele só é usado para comparar
Referências
arquivos em formato de texto. As diferenças entre dois arquivos podem ser redireciona-
Manuais
das para um terceiro arquivo o qual poderá ser usado pelo comando patch para aplicar
Administração as alterações em um arquivo que não contém as diferenças. A sintaxe do comando é
• Comandos: user
• Desliga sistema
diff [diretorio1/arquivo1] [diretorio2/arquivo2] [opcoes]
• Gerenciar usuários
• history
• Partições
• Arquivos na qual diretório1/arquivo1 e diretório2/arquivo2 são os arquivos ou diretórios que serão
• disco
comparados. Já as opções podem ser:
• Arquivo .bashrc
• Comando ls
• hardware
-a Compara os dois arquivos como arquivos texto.
• Diretorios
• Links -b Ignora espaços em branco como diferenças.
• Comando diff
• Comando patch -B Ignora linhas em branco inseridas ou apagadas nos arquivos.
Shell Script

Segurança
- -brief Relata somente as diferenças entre os arquivos, e não os detalhes destas
Arquivos diferenças.
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 37
Opções do diff

• Sumário
-i Ignora diferenças entre maiúsculas e minúsculas nos arquivos.
Referências
-H Usa análise heurística para verificar os arquivos.
Manuais

Administração -N Em uma comparação de diretórios, se o arquivo apenas existe em um diretório,


• Comandos: user
trata-o como presente mas vazio no outro diretório.
• Desliga sistema
• Gerenciar usuários
• history
-P Em uma comparação de diretórios, se o arquivos apenas existe no segundo dire-
• Partições tório, trata-o como presente mas vazio no primeiro diretório.
• Arquivos
• disco
-q Mostra somente se os dois arquivos possuem diferenças. Não mostra as diferenças
• Arquivo .bashrc
• Comando ls entre eles.
• hardware
• Diretorios -r Compara diretórios e sub-diretórios existentes.
• Links
• Comando diff
• Comando patch
-S NOME Inicia a comparação de diretórios pelo arquivo NOME. É útil quando cance-
Shell Script
lamos uma comparação.
Segurança
-t Aumenta a tabulação das diferenças encontradas.
Arquivos

Processos no Linux -u Usa o formato de comparação unificado.


Shell Script

O sed

Salviano A. Leão – 38
Notas sobre o diff

• Sumário
• Use o comando zdiff para comparar diretamente arquivos compactados pelo utilitário
Referências
gzip;
Manuais
• Use o comando sdiff para visualizar as linhas diferentes entre os dois arquivos em
Administração
• Comandos: user
formato texto simples.
• Desliga sistema
• Gerenciar usuários • Caso seja necessário comparar até três arquivos use o diff3.
• history
• Partições • Instale e use o meld, uma excelente interface gráfica para o diff.
• Arquivos
• disco
• Arquivo .bashrc
• Comando ls
• hardware
• Diretorios
• Links
• Comando diff
• Comando patch

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 39
Exemplos do diff

• Sumário
> diff texto.txt texto1.txt
Referências

Manuais

Administração Compara o arquivo texto.txt com texto1.txt e exibe suas diferenças na tela.
• Comandos: user
• Desliga sistema
• Gerenciar usuários > diff -Bu texto.txt texto1.txt
• history
• Partições
• Arquivos
• disco
Compara o arquivo texto.txt com texto1.txt ignorando linhas em branco diferentes entre
• Arquivo .bashrc os dois arquivos e usando o formato unificado.
• Comando ls
• hardware
• Diretorios > diff texto.txt texto1.txt > texto.diff
• Links
• Comando diff
• Comando patch
Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamado texto.diff con-
Shell Script
tendo a diferença entre eles. Este arquivo poderá ser usado pelo patch para aplicar as
Segurança
diferenças existente entre os dois no arquivo texto.txt.
Arquivos

Processos no Linux
> diff -r /usr/src/linux-2.6.30 /usr/src/linux-2.6.32 >
Shell Script
֒→ patch-2.6.32.diff
O sed

Compara o diretório e sub-diretórios linux-2.6.30/ e linux-2.6.32/ e grava as diferenças


entre eles no arquivo patch-2.6.32.diff.
Salviano A. Leão – 40
Comando patch

• Sumário
Atualiza arquivos texto através das diferenças geradas pelo comando diff. A sua sintaxe
Referências
é
Manuais
patch [opcoes] [arqv.diff] ou patch [opcoes] < [arqv.diff]
Administração
• Comandos: user
• Desliga sistema
• Gerenciar usuários na qual o arqv.diff é o arquivo contendo as diferenças geradas pelo comando diff e as
• history
• Partições
algumas da opções do comando são:
• Arquivos
• disco
-p N Aqui N é o nível do diretório onde o patch será aplicado, se for igual a 0, o patch
• Arquivo .bashrc assume que os arquivos que serão atualizados estão no diretório atual, se 1, assume
• Comando ls
• hardware
que os arquivos que serão atualizado estão no diretório acima (..), se 2, 2 diretórios
• Diretorios acima e assim por diante.
• Links
• Comando diff
-b Cria cópias de segurança dos arquivos originais ao aplica o patch.
• Comando patch

Shell Script
-binary Lê e grava arquivo usando modo binário.
Segurança

Arquivos -d DIR Muda para o diretório [dir] antes de aplica o patch.


Processos no Linux
-E Remove arquivos vazios após a aplicação do patch.
Shell Script

O sed

Salviano A. Leão – 41
Notas sobre o patch

• Sumário
-n Interpreta o arquivo de patch como um .diff normal.
Referências
-N Não desfaz patches já aplicados.
Manuais

Administração -s Não mostra mensagens de erro.


• Comandos: user
• Desliga sistema -u Interpreta o patch em formato unificado.
• Gerenciar usuários
• history
• Partições
As diferenças são aplicadas em arquivos originais gerados pelo comando diff. É im-
• Arquivos portante entender os comandos patch e diff pois são comandos muito utilizados para
• disco
• Arquivo .bashrc
desenvolvimento feito por equipes de pessoas.
• Comando ls Exemplo:
• hardware
• Diretorios
• Links > patch -p0 < texto.diff
• Comando diff
• Comando patch

Shell Script Aplica as diferenças contidas no arquivo texto.diff nos arquivos originais.
Segurança

Arquivos > patch -p0 texto.txt texto.diff


Processos no Linux

Shell Script
Aplica as diferenças contidas no arquivo texto.diff nos arquivos originais. Faz a mesma
O sed
coisa que o comando anterior.

Salviano A. Leão – 42
• Sumário

Referências

Manuais

Administração

Shell Script
• Comandos da família grep
• Expressões Regulares
• Classe POSIX
• Comando tr
• Comando seq
• Arquivos Shell Script
• Comando split
• Comando csplit
• RANDOM
• Comando sort
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 43
Processos no Linux
Comandos da família grep

• Sumário
A familia de comandos grep, egrep, fgrep, rgrep, faz uma busca em um texto por um
Referências
padrão e retorna as linhas do texto que contém o padrão procurado. Sua sintaxe é a
Manuais
seguinte
Administração

Shell Script
grep [OPTIONS] PADRAO [ARQUIVO...]
• Comandos da família grep grep [OPTIONS] [-e PATTERN | -f ARQUIVO] [ARQUIVO...]
• Expressões Regulares
• Classe POSIX
• Comando tr
O comando
• Comando seq
• Arquivos
• Comando split
• egrep é o mesmo que grep -E.
• Comando csplit
• RANDOM • fgrep é o mesmo que grep -F.
• Comando sort
• Comando cut • rgrep é o mesmo que grep -r.
• Comando join
• Listar arquivos Opçoes do tipo de pesquisa:
• Comando od
• Comando less
• Comando echo
-E Interpreta o PADRAO como uma expressão regular extendida.
• Comando fmt
• Comando printf -F Interpreta o PADRAO como uma lista de palavras fixas, separdas por uma nova
• Comando pr linha, sendo que qualquer uma delas pode ocorrer.
• Comando paste
• Comando comm
• Exemplo de uso do iconv
-G Interpreta o PADRAO como uma expressão regular básica.
Segurança

Arquivos
Salviano A. Leão – 44
Processos no Linux
Algumas opções do grep

-e PADRAO use o PADRAO como o padrão da busca. Este pode ser usado para especificar
• Sumário
multiplos padrões de busca.
Referências

Manuais -f ARQV obtém o padrão do arquivo ARQV, um por linha.


Administração
-i Ignora a diferença entre maiúsculas e minúsculas.
Shell Script
• Comandos da família grep -v Mostra as linhas que não casam com o padrão.
• Expressões Regulares
• Classe POSIX -r Varre subdiretórios também.
• Comando tr
• Comando seq -qs Não mostra as linhas nem erros (usar como teste).
• Arquivos
• Comando split -n Mostra também o número da linha
• Comando csplit
• RANDOM -m NMAX Pare a busca a encontrar NMAX linhas.
• Comando sort
• Comando cut -c Conta o número de linhas encontradas.
• Comando join
• Listar arquivos -l Mostra apenas o nome o arquivo que casou.
• Comando od
• Comando less
-w O padrão é uma palavra inteira e não parte dela.
• Comando echo
• Comando fmt
-x O padrão é uma linha inteira e não parte dela.
• Comando printf
• Comando pr
-A N Mostre N linhas de contexto depois do padrão.
• Comando paste
• Comando comm
-B N Mostre N linhas de contexto antes do padrão.
• Exemplo de uso do iconv

Segurança -C N Mostre N linhas de contexto antes e depois do padrão.


Arquivos
Salviano A. Leão – 45
Processos no Linux
Uso simples do comando grep

$ grep -i "SALviano" /etc/passwd


• Sumário salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
$ grep -i "SALviano" /etc/passwd /etc/group
Referências
/etc/passwd:salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
Manuais /etc/group:adm:x:4:salviano
/etc/group:dialout:x:20:salviano
Administração
/etc/group:cdrom:x:24:salviano
Shell Script /etc/group:plugdev:x:46:salviano
• Comandos da família grep /etc/group:lpadmin:x:105:salviano
/etc/group:admin:x:115:salviano
• Expressões Regulares
/etc/group:salviano:x:1000:
• Classe POSIX
$ grep -i "SALviano" /etc/*
• Comando tr grep: /etc/at.deny: Permissão negada
• Comando seq grep: /etc/fuse.conf: Permissão negada
• Arquivos /etc/group:adm:x:4:salviano
• Comando split /etc/group:dialout:x:20:salviano
• Comando csplit /etc/group:cdrom:x:24:salviano
• RANDOM /etc/group:plugdev:x:46:salviano
• Comando sort /etc/group:lpadmin:x:105:salviano
/etc/group:admin:x:115:salviano
• Comando cut
/etc/group:salviano:x:1000:
• Comando join
/etc/group:sambashare:x:122:salviano
• Listar arquivos grep: /etc/gshadow: Permissão negada
• Comando od /etc/mtab:gvfs-fuse-daemon /home/salviano/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=salviano
• Comando less ֒→ 0 0
• Comando echo grep: /etc/mtab.fuselock: Permissão negada
• Comando fmt /etc/passwd:salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
• Comando printf grep: /etc/shadow: Permissão negada
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 46
Processos no Linux
Expressões Regulares

• Sumário
Lista dos Principais Metacaracteres
Referências

Manuais
Expressão Regular básica ^ $ . * [ \? \+ \| \( \) \{ \}
Administração
Expressão Regular estendida ^ $ . * [ ? + | ( ) { }
Shell Script
• Comandos da família grep
• Expressões Regulares Metacaractere Nome Metacaractere Nome
• Classe POSIX
• Comando tr . Ponto ^ Circunflexo
• Comando seq
[] Lista $ Cifrão
• Arquivos
• Comando split [^ ] Lista negada \b Borda
• Comando csplit
? Opcional \ Escape
• RANDOM
• Comando sort * Asterisco | Ou
• Comando cut
+ Mais () Grupo
• Comando join
• Listar arquivos {} Chaves \1 Retrovisor
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 47
Processos no Linux
Exemplos de representantes

• Sumário
Metacaractere Nome Função
Referências

Manuais
. Ponto Um caractere qualquer
Administração
[] Lista Lista de caracteres permitidos
Shell Script [^ ] Lista negada Lista de caracteres proibidos
• Comandos da família grep
• Expressões Regulares
• Classe POSIX
• Comando tr $ grep -e "sy.:" /etc/passwd
• Comando seq
sys:x:3:3:sys:/dev:/bin/sh
• Arquivos
• Comando split $ grep -ne "sy.:" /etc/passwd
• Comando csplit 4:sys:x:3:3:sys:/dev:/bin/sh
• RANDOM
$ grep -e "sy[sn]" /etc/passwd
• Comando sort
• Comando cut sys:x:3:3:sys:/dev:/bin/sh
• Comando join sync:x:4:65534:sync:/bin:/bin/sync
• Listar arquivos syslog:x:101:103::/home/syslog:/bin/false
• Comando od
• Comando less
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 48
Processos no Linux
Exemplos de quantificadores

• Sumário
Metacaractere Nome Função
Referências

Manuais
? Opcional Zero ou um
Administração
* Asterisco Zero, um ou mais
Shell Script + Mais Um ou mais
• Comandos da família grep {n,m} Chaves De n até m
• Expressões Regulares
• Classe POSIX
• Comando tr
• Comando seq
• Arquivos $ grep -E "sys:?" /etc/passwd
• Comando split sys:x:3:3:sys:/dev:/bin/sh
• Comando csplit syslog:x:101:103::/home/syslog:/bin/false
• RANDOM
• Comando sort
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
• Comando cut $ grep -E "sys:+" /etc/passwd
• Comando join sys:x:3:3:sys:/dev:/bin/sh
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 49
Processos no Linux
Exemplos de âncoras

• Sumário
Metacaractere Nome Função
Referências

Manuais
^ Circunflexo Início da linha
Administração
$ Cifrão Fim da linha
Shell Script \b Borda Início ou fim da palavra
• Comandos da família grep
• Expressões Regulares
• Classe POSIX
• Comando tr
$ grep -E "^[sS]" /etc/passwd
• Comando seq
• Arquivos sys:x:3:3:sys:/dev:/bin/sh
• Comando split sync:x:4:65534:sync:/bin:/bin/sync
• Comando csplit
syslog:x:101:103::/home/syslog:/bin/false
• RANDOM
• Comando sort speech-dispatcher:x:107:29:Speech
• Comando cut ֒→ Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
• Comando join saned:x:113:119::/home/saned:/bin/false
• Listar arquivos
• Comando od
salviano:x:1000:1000:Salviano de Araujo
• Comando less ֒→ Leão,,,:/home/salviano:/bin/bash
• Comando echo sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 50
Processos no Linux
Exemplos dos outros metacaracteres

Metacaractere Nome Função


• Sumário \x Escape Torna literal o caracter X
Referências | Ou Ou um ou outro
Manuais
(. . . ) Grupo Delimita um grupo
Administração
\1 . . . \9 Retrovisor Texto casado nos grupos de 1 . . . 9
Shell Script
• Comandos da família grep
• Expressões Regulares
• Classe POSIX $ grep -E "[sS]alviano|root" /etc/passwd
• Comando tr root:x:0:0:root:/root:/bin/bash
salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
• Comando seq
• Arquivos $ grep -E "(:)\1" /etc/passwd
• Comando split libuuid:x:100:101::/var/lib/libuuid:/bin/sh
• Comando csplit syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:107::/var/run/dbus:/bin/false
• RANDOM
saned:x:113:119::/home/saned:/bin/false
• Comando sort sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
• Comando cut festival:x:116:29::/home/festival:/bin/false
• Comando join postfix:x:117:123::/var/spool/postfix:/bin/false
• Listar arquivos
$ grep -E "::" /etc/passwd
• Comando od libuuid:x:100:101::/var/lib/libuuid:/bin/sh
• Comando less syslog:x:101:103::/home/syslog:/bin/false
• Comando echo messagebus:x:102:107::/var/run/dbus:/bin/false
• Comando fmt saned:x:113:119::/home/saned:/bin/false
sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
• Comando printf
festival:x:116:29::/home/festival:/bin/false
• Comando pr postfix:x:117:123::/var/spool/postfix:/bin/false
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 51
Processos no Linux
Classe POSIX

• Sumário
Classe POSIX Similar Significado
Referências

Manuais
[:upper:] [A-Z] Letras maísculas
Administração
[:lower:] [a-z] Letras minúsculas
Shell Script [:alpha:] [A-Za-z] Letras maíusculas e minúsculas
• Comandos da família grep [:alnum:] [A-Za-z0-9] Letras e números
• Expressões Regulares
• Classe POSIX [:digit:] [0-9] Números
• Comando tr [:xdigit:] [0-9A-Fa-f] Números hexadecimais
• Comando seq
• Arquivos [:punct:] [.,!?:#$&...] Sinais de pontuação
• Comando split [:blank:] [ \t] Espaço (ESP) e TAB
• Comando csplit
• RANDOM [:space:] [ \t\n\r\f\v] Caracteres brancos
• Comando sort [:cntrl:] - Caracteres de controle
• Comando cut
• Comando join [:graph:] [^\n\r\f\v] Caracteres imprimíveis, exceto ESP e TAB
• Listar arquivos [:print:] [^ \t\n\r\f\v] Caracteres imprimíveis
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 52
Processos no Linux
Comando tr

• Sumário
O comando tr é útil para traduzir, comprimir e/ou deletar caracteres da entrada padrão
Referências
(stdin) escrevendo o resultado na saída padrão (stdout). Ou seja, o comando tr no
Manuais
linux é utilizado para substituição de um valor por outro, basicamente especificamos o
Administração valor a procurar e o valor a substituir. Como o comando tr não trabalha com arquivos é
Shell Script necessário usar um pipe ou redirecionamento para que ele receba os valores. Abaixo
• Comandos da família grep a sintaxe básica do comando tr:
• Expressões Regulares
• Classe POSIX
• Comando tr tr [OPÇÃO] ... CONJUNTO1 [CONJUNTO2]
• Comando seq
• Arquivos
• Comando split
O parâmetro OPÇÃO pode ser:
• Comando csplit
• RANDOM
• Comando sort
-c, -C, –complementar Use o complemento do CONJUNTO1
• Comando cut
• Comando join -d, –delete Excluir caracteres do CONJUNTO1, não traduz
• Listar arquivos
• Comando od -s, –squeeze-repeats Substituir cada seqüência de um caractere repetido que está
• Comando less
• Comando echo listado no último CONJUNTO especificado, com uma única ocorrência desse carac-
• Comando fmt tere
• Comando printf
• Comando pr
• Comando paste
-t, –truncate-set1 Primeiro truncar CONJUNTO1 ao comprimento de CONJUNTO2
• Comando comm
• Exemplo de uso do iconv –help exibir esta ajuda e sair
Segurança
–version Informações da versão de saída e sair
Arquivos
Salviano A. Leão – 53
Processos no Linux
Parâmentros do comando tr

• Sumário
Os CONJUNTOs são especificados como sequências de caracteres. A maioria delas
Referências
representam a si mesmas. As sequências interpretadas são:
Manuais
\NNN com valor octal NNN (1 a 3 dígitos octal)
Administração

Shell Script \ Barra invertida


• Comandos da família grep
• Expressões Regulares \a BEL audível
• Classe POSIX
• Comando tr
\b backspace
• Comando seq
• Arquivos
• Comando split \f feed de formulário
• Comando csplit
• RANDOM \n nova linha
• Comando sort
• Comando cut \r Retorno
• Comando join
• Listar arquivos
• Comando od
\t TAB horizontal
• Comando less
• Comando echo \v TAB vertical
• Comando fmt
• Comando printf CHAR1-CHAR2 Todos os caracteres de CHAR1 a CHAR2 em ordem crescente
• Comando pr
• Comando paste
• Comando comm
[CHAR*] Em CONJUNTO2, cópias de CHAR até o comprimento de CONJUNTO1
• Exemplo de uso do iconv
[CHAR*REPEAT] REPEAT cópias de CHAR, REPEAT octal se começando com 0
Segurança

Arquivos
Salviano A. Leão – 54
Processos no Linux
• Sumário
[:alnum:] Todas as letras e dígitos
Referências
[:alpha:] Todas as letras
Manuais

Administração [:blank:] Todos os espaços em branco horizontais


Shell Script
• Comandos da família grep [:cntrl:] Todos os caracteres de controle
• Expressões Regulares
• Classe POSIX [:digit:] Todos os dígitos
• Comando tr
• Comando seq
[:graph:] Todos os caracteres imprimíveis, sem espaço
• Arquivos
• Comando split
• Comando csplit
[:lower:] Todas as letras minúsculas
• RANDOM
• Comando sort [:print:] Todos os caracteres imprimíveis, incluindo espaço
• Comando cut
• Comando join [:punct:] Todos os caracteres de pontuação
• Listar arquivos
• Comando od
• Comando less
[:space:] Todos os espaços em branco horizontais ou verticais
• Comando echo
• Comando fmt [:upper:] Todas as letras maiúsculas
• Comando printf
• Comando pr [:xdigit:] Todos os dígitos hexadecimais
• Comando paste
• Comando comm
• Exemplo de uso do iconv
[=CHAR=] Todos os caracteres que são equivalentes a CHAR
Segurança

Arquivos
Salviano A. Leão – 55
Processos no Linux
• A conversão ocorre se -d não for fornecido e CONJUNTO1 e CONJUNTO2 apare-
cem.

• A opção -t só pode ser usada ao traduzir.


• Sumário

Referências
• O CONJUNTO2 é estendido para comprimento de CONJUNTO1 repetindo seu úl-
Manuais
timo caractere conforme necessário.
Administração

Shell Script • Os caracteres em excessos do CONJUNTO2 são ignorados.


• Comandos da família grep
• Expressões Regulares • Apenas [:lower:] e [:upper:] são garantidos ao expandir em ordem crescente; Usa-
• Classe POSIX
• Comando tr
dos no CONJUNTO2 durante a tradução, eles só podem ser usado aos pares para
• Comando seq especificar a conversão de casos.
• Arquivos
• Comando split
• A opção -s usa o último CONJUNTO especificado, e só é feito após a tradução ou
• Comando csplit
• RANDOM exclusão.
• Comando sort
• Comando cut
• Comando join
> echo "Salviano A. Leao" | tr "aeiou" "@310#"
• Listar arquivos
• Comando od S@lv1@n0 A. L3@0
• Comando less echo "Salviano A. Leao" | tr "aeiouS" "@310#"
• Comando echo
#@lv1@n0 A. L3@0
• Comando fmt
• Comando printf > echo "Salviano A. Leao" | tr -d "aeiou"
• Comando pr Slvn A. L
• Comando paste > echo "Saalviiaanoo AA. Leeaaoo" | tr -s " aeiouA"
• Comando comm
• Exemplo de uso do iconv
Salviano A. Leao
> echo "Saalviiaanoo AA. Leeaaoo" | tr -t " aeiou" "A-Z"
Segurança
SBBlvDDBBnEEAAAAA.AAAALCCBBEE
Arquivos
Salviano A. Leão – 56
Processos no Linux
Arquivo de Exemplo

• Sumário
Nos exemplos a seguir usaremos o seguinte arquivo
Referências
1 Matricula; Nome; Curso; Período
Manuais
2 876; Mara Borges da Silva; Física Médica; 2
Administração
3 876; João Niguém; Física Bacharelado; 3
Shell Script
4 524; José Américo Brasil; Física Licenciatura; 1
• Comandos da família grep
• Expressões Regulares 5 323; Daniela Mendes Campos; Engenharia Física; 5
• Classe POSIX 6 294; Alessandra Maria Rodrigues; Física Médica; 7
• Comando tr
7 740; Marina Matias Souza; Física Licenciatura; 4
• Comando seq
• Arquivos
8 598; Marina Almeida Prado; Física Bacharelado;
• Comando split 9 860; Carlos Souza Costa; Engenharia Física; 6
• Comando csplit 10 197; Paulo Abreu Faria; Física Bacharelado;
• RANDOM
• Comando sort
11 133; João Carlos Matos; Física Licenciatura; 5
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 57
Processos no Linux
Exemplo de uso do comando tr

• Sumário
Até aí tudo bem, mas vamos então ver alguns exemplos simples de como podemos
Referências
utilizar o comando tr na prática.
Manuais

Administração
> cat Lista.txt | tr [A-Z] [a-z]
matricula; nome; curso; período
Shell Script
• Comandos da família grep 876; mara borges da silva; física médica; 2
• Expressões Regulares 876; joão niguém; física bacharelado; 3
• Classe POSIX 524; josé américo brasil; física licenciatura; 1
• Comando tr
• Comando seq
323; daniela mendes campos; engenharia física; 5
• Arquivos 294; alessandra maria rodrigues; física médica; 7
• Comando split 740; marina matias souza; física licenciatura; 4
• Comando csplit
• RANDOM
598; marina almeida prado; física bacharelado;
• Comando sort 860; carlos souza costa; engenharia física; 6
• Comando cut 197; paulo abreu faria; física bacharelado;
• Comando join
133; joão carlos matos; física licenciatura; 5
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 58
Processos no Linux
> cat Lista.txt | tr [:lower:] [:upper:]
MATRICULA; NOME; CURSO; PERíODO
• Sumário 876; MARA BORGES DA SILVA; FíSICA MéDICA; 2
Referências 876; JOãO NIGUéM; FíSICA BACHARELADO; 3
Manuais
524; JOSé AMéRICO BRASIL; FíSICA LICENCIATURA; 1
Administração
323; DANIELA MENDES CAMPOS; ENGENHARIA FíSICA; 5
294; ALESSANDRA MARIA RODRIGUES; FíSICA MéDICA; 7
Shell Script
• Comandos da família grep 740; MARINA MATIAS SOUZA; FíSICA LICENCIATURA; 4
• Expressões Regulares 598; MARINA ALMEIDA PRADO; FíSICA BACHARELADO;
• Classe POSIX
860; CARLOS SOUZA COSTA; ENGENHARIA FíSICA; 6
• Comando tr
• Comando seq 197; PAULO ABREU FARIA; FíSICA BACHARELADO;
• Arquivos 133; JOãO CARLOS MATOS; FíSICA LICENCIATURA; 5
• Comando split
• Comando csplit
• RANDOM
• Comando sort
• Comando cut
cat Lista.txt | tr [:lower:] [:upper:] | tr [ãéí] [ÃÉÍ]
• Comando join MATRICULA; NOME; CURSO; PERÍODO
• Listar arquivos 876; MARA BORGES DA SILVA; FÍSICA MÉDICA; 2
• Comando od
876; JOÃO NIGUÉM; FÍSICA BACHARELADO; 3
• Comando less
• Comando echo 524; JOSÉ AMÉRICO BRASIL; FÍSICA LICENCIATURA; 1
• Comando fmt 323; DANIELA MENDES CAMPOS; ENGENHARIA FÍSICA; 5
• Comando printf
294; ALESSANDRA MARIA RODRIGUES; FÍSICA MÉDICA; 7
• Comando pr
• Comando paste 740; MARINA MATIAS SOUZA; FÍSICA LICENCIATURA; 4
• Comando comm 598; MARINA ALMEIDA PRADO; FÍSICA BACHARELADO;
• Exemplo de uso do iconv 860; CARLOS SOUZA COSTA; ENGENHARIA FÍSICA; 6
Segurança 197; PAULO ABREU FARIA; FÍSICA BACHARELADO;
Arquivos 133; JOÃO CARLOS MATOS; FÍSICA LICENCIATURA; 5
Salviano A. Leão – 59
Processos no Linux
Comando seq

• Sumário
O comando seq gera uma sequência de números, e sua sintaxe é a seguinte:
Referências

Manuais
seq [OPÇÃO] ... ÚLTIMO
seq [OPÇÃO] ... PRIMEIRO ÚLTIMO
Administração
seq [OPÇÃO] ... PRIMEIRO INCREMENTO ÚLTIMO
Shell Script
• Comandos da família grep
• Expressões Regulares
• Classe POSIX DESCRIÇÃO: Ele gera uma sequência numérica do PRIMEIRO ao ÚLTIMO, com o
• Comando tr passo de INCREMENTO. Os argumentos obrigatórios para opções longas também são
• Comando seq
• Arquivos obrigatórios para opções curtas. As opções são as seguintes:
• Comando split
• Comando csplit -f, –format = FORMAT Usa o estilo do printf no FORMAT dos flutuante
• RANDOM
• Comando sort -s, –separator = STRING Usa STRING para separar números (padrão: \n)
• Comando cut
• Comando join
• Listar arquivos
-w, –equal-width Igualar largura preenchendo com zeros à esquerda
• Comando od
• Comando less –help Exibe uma ajuda
• Comando echo
• Comando fmt –version Exibe informações da versão
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 60
Processos no Linux
• Se PRIMEIRO ou INCREMENTO for omitido, o padrão é 1, mesmo quando ÚLTIMO
é menor do que PRIMEIRO.

• Sumário • A sequência de números termina quando a soma do número atual com o INCRE-
Referências MENTO se tornar maior do que ÚLTIMO.
Manuais
• O PRIMEIRO, INCREMENTO e ÚLTIMO são interpretadas como valores de ponto
Administração
flutuante.
Shell Script
• Comandos da família grep
• Expressões Regulares
• O INCREMENTO é geralmente positivo se o PRIMEIRO é menor do que ÚLTIMO, e
• Classe POSIX o INCREMENTO geralmente é negativo se PRIMEIRO é maior do que ÚLTIMO.
• Comando tr
• Comando seq
• O FORMAT deve ser adequado para imprimir um argumento do tipo "double"; Ele é
• Arquivos
• Comando split padrão para %.PRECf se PRIMEIRO, INCREMENTO e ÚLTIMO forem todos núme-
• Comando csplit ros decimais de ponto fixo com precisão máxima PREC, e para os casos contrário
• RANDOM
• Comando sort ele será %g.
• Comando cut
• Comando join
• Listar arquivos
• Comando od
> seq 1 2 10 > seq -w -s"; " 7 2 20
• Comando less 1 07; 09; 11; 13; 15; 17; 19
• Comando echo 3 > seq -s"; " 1 0.2 2
• Comando fmt
• Comando printf
5 1,0; 1,2; 1,4; 1,6; 1,8; 2,0
• Comando pr 7 > seq -s"; " -f "%4.2f" 1 0.2 2
• Comando paste 9 1,00; 1,20; 1,40; 1,60; 1,80; 2,00
• Comando comm
> seq -s"; " 7 2 20 > seq -s"; " -f "%4.2f" 2 -0.2 1
• Exemplo de uso do iconv
1; 3; 5; 7; 9 2,00; 1,80; 1,60; 1,40; 1,20; 1,00
Segurança

Arquivos
Salviano A. Leão – 61
Processos no Linux
Comandos para obter informações de arquivos

• Sumário
file Mostra o tipo de arquivo;
Referências
type Determina o tipo de um comando, se ele é um comando instalado nos sistema
Manuais
ou se ele é comando do próprio shell. Ele tem as seguintes opções:
Administração

Shell Script -t Que é a opção padrão, retorna o tipo do comando;


• Comandos da família grep
• Expressões Regulares -p Retorna o caminho do comando;
• Classe POSIX
• Comando tr
-a Retorna todas as informações sobre o comando;
• Comando seq
• Arquivos
• Comando split
touch Cria arquivo vazio;
• Comando csplit
• RANDOM
• Comando sort lsof Mostra arquivos abertos.
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 62
Processos no Linux
Manipulando arquivos

• Sumário
cat Mostra o conteúdo de um arquivo binário ou texto e também pode concaternar
Referências
arquivos.
Manuais
tac Semelhante ao cat mas inverte a ordem;
Administração

Shell Script rev Inverte a ordem dos caracteres


• Comandos da família grep
• Expressões Regulares
> echo Fisica | rev
• Classe POSIX
• Comando tr acisiF
• Comando seq
• Arquivos
• Comando split
• Comando csplit wc Mostra a quantidade de linhas, palavras e byte do arquivo. Suas opções são:
• RANDOM
• Comando sort -c ou - -bytes Mostra a contagem dos bytes;
• Comando cut
• Comando join
-m ou - -chars Mostra a contagem dos caracteres;
• Listar arquivos
• Comando od
• Comando less
-l ou - -lines Mostra a contagem das linhas;
• Comando echo
• Comando fmt -w ou - -words Mostra a contagem das palavras;
• Comando printf
• Comando pr nl Mostra o número de linhas junto com o conteúdo de um arquivo. Esse comando é
• Comando paste
• Comando comm equivalente ao cat -n.
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 63
Processos no Linux
Comando split
Esse comando é usado para quebrar um arquivo em vários pedaços. A sintaxe do
comando é:
• Sumário

Referências
split [OPCAO]... [INPUT [PREFIX]]
Manuais

Administração

Shell Script
A saída será pedaços de tamanho-fixo do INPUT prefizado PREFIXaa, PREFIXab, ...;
• Comandos da família grep O tamanho padrão em linhas é 1000, e o PREFIX padrão é x.
• Expressões Regulares
• Classe POSIX
Todos os argumentos são necessário. A opções são:
• Comando tr
• Comando seq -a N Usa um sufixo de comprimento N, o padrão é 2;
• Arquivos
• Comando split -b SIZE Divide o arquivo fixando a quantidade bytes dos arquivos em SIZE bytes;
• Comando csplit
• RANDOM
-C SIZE Coloque o máximo de SIZE bytes de linhas por arquivo;
• Comando sort
• Comando cut
• Comando join -d Usa sufixos numéricos em vez de alfabético;
• Listar arquivos
• Comando od -l N Use N linhas por arquivo;
• Comando less
• Comando echo O tamanho SIZE dos arquivos podem ter um sufixo multiplicador, e os usuais são:
• Comando fmt
• Comando printf
sufixo valor sufixo valor sufixo valor
• Comando pr
• Comando paste b 512 MB 10002 G 10243
• Comando comm
• Exemplo de uso do iconv
kB 1000 M 10242 T 10004
Segurança
K 1024 GB 10003 TB 10244
Arquivos
Os sufixos em ordem são: K, M, G, T, P, E, Z, Y.
Salviano A. Leão – 64
Processos no Linux
Comando csplit

• Sumário
Esse comando é usado para quebrar um arquivo em seções determinadas pela linha
Referências
de contexto. A sintaxe do comando é:
Manuais
csplit [ OPCAO ]... [ ARQUIVO ] [ PADRAO ]
Administração

Shell Script A saída será pedaços do ARQUIVO separado pelo PADRAO para os arquivos xx00,
• Comandos da família grep
• Expressões Regulares
xx01, ....
• Classe POSIX A opções são:
• Comando tr
• Comando seq -b, - -suffix-format=FORMAT Usa o sprintf FORMAT ao em vez de %02d
• Arquivos
• Comando split
• Comando csplit
-f, - -prefix=PREFIX Usa PREFIX em vez de xx
• RANDOM
• Comando sort -k, - -keep-files Não remove os arquivos de saída em caso de errros.
• Comando cut
• Comando join -n, - -digits=DIGITS Usa um número específico de dígitos em vez de 2
• Listar arquivos
• Comando od
• Comando less
-s, - -quiet, - -silent Não mostra a saída.
• Comando echo
• Comando fmt -z, - -elide-empty-files remove os arquivos de saída vazios.
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 65
Processos no Linux
O padrão

• Sumário
Ele lê o arquivo de entrada ARQUIVO, e com o PADRAO podendo ser:
Referências
• INTEGER Copia até mas não incluí o número específico de linhas
Manuais

Administração • /REGEXP/[OFFSET] Copia até mas não incluí a linha que casa com a ER.
Shell Script
• Comandos da família grep • %REGEXP%[OFFSET] Ignora, mas não incluindo a linha que casa.
• Expressões Regulares
• Classe POSIX • {INTEGER} Repete o padrão especificado previamente esse número de vezes.
• Comando tr
• Comando seq
• Arquivos
• {*} Repete o padrão especificado previamente tantas as vezes quanto for possível.
• Comando split
• Comando csplit A linha de deslocamento OFFSET é necessário ter um sinal de + ou − seguido por um
• RANDOM
inteiro positivo.
• Comando sort
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 66
Processos no Linux
Exemplo do csplit

• Sumário
Ao contrário do comando split, o comando csplit permite que se especifique uma palavra
Referências
que irá indicar o delimitador de cada um dos novos arquivos. Considere por exemplo o
Manuais
arquivo Tese.tex:
Administração

Shell Script
\chapter{Introdução}
• Comandos da família grep Nesse trabalho será discutidos ...
• Expressões Regulares
• Classe POSIX
\chapter{Teoria}
• Comando tr
• Comando seq Nosso sistema pode ser descrito pela Hamiltoniana...
• Arquivos
• Comando split
\chapter{Resultados}
• Comando csplit
• RANDOM Vamos apresentar os resultados teóricos e experimentais,...
• Comando sort
• Comando cut \chapter{Conclusão}
• Comando join
• Listar arquivos
Nosso resultados este de acordo com os resultados
• Comando od experimentais...
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 67
Processos no Linux
Exemplo csplit
Para quebrar o arquivo tese em um por capítulo fazemos:

• Sumário > csplit -f Cap_ Tese.tex "/\\chapter/" {3}


Referências > ls -al
Manuais
total 60
drwxr-xr-x 2 salviano salviano 4096 2010-06-09 09:41 .
Administração
drwxr-xr-x 8 salviano salviano 4096 2010-06-09 09:39 ..
Shell Script -rw-r--r-- 1 salviano salviano 0 2010-06-09 09:41 Cap_00
• Comandos da família grep -rw-r--r-- 1 salviano salviano 63 2010-06-09 09:41 Cap_01
• Expressões Regulares -rw-r--r-- 1 salviano salviano 71 2010-06-09 09:41 Cap_02
• Classe POSIX -rw-r--r-- 1 salviano salviano 83 2010-06-09 09:41 Cap_03
• Comando tr
-rw-r--r-- 1 salviano salviano 87 2010-06-09 09:41 Cap_04
• Comando seq
-rw-r--r-- 1 salviano salviano 304 2010-06-09 09:40 Tese.tex
• Arquivos
• Comando split
• Comando csplit
ou quando não temos ideia de quantos ocorrência do \chapter há no resto, fazemos
• RANDOM
• Comando sort
• Comando cut > csplit -f Cap_ Tese.tex "/\\chapter/" {*}
• Comando join
• Listar arquivos
• Comando od
O que ocorreu foi o seguinte:
• Comando less
• Comando echo • O csplit irá criar vários arquivos iniciados em "Cap_", até um máximo de 4 arquivos
• Comando fmt
• Comando printf
(parâmetro 3, computa-se o número entre colchetes + 1). Este valor indica o número de vezes
• Comando pr que o comando será repetido.
• Comando paste
• Comando comm • Quando não sabemos o número de arquivos contidos usamos o quantificador {*}, ou
• Exemplo de uso do iconv chutamos um número muito grande e usamo a opção -k para ele não reclamar.
Segurança

Arquivos
Salviano A. Leão – 68
Processos no Linux
Gerador de números pseudo-aletórios

A variável especial, $RANDOM, existente no bash,uma vez acessada, gera como saída
• Sumário um número aleatório. Veja só isso:
Referências

Manuais > echo $RANDOM


Administração
10378

Shell Script
• Comandos da família grep
Toda vez que seu conteúdo é acessado, a variável $RANDOM retorna um número alea-
• Expressões Regulares
• Classe POSIX tório entre 0 e 32767. Entretano as vezes é necessário gerar números aleatório em um
• Comando tr determinado intervalo, como por exemplo entre 0 e 100, e para isso
• Comando seq
• Arquivos
• Comando split > echo "$(($RANDOM % 100))"
• Comando csplit 63
• RANDOM > echo "$(($RANDOM % 100))"
• Comando sort
59
• Comando cut
> echo "$(($RANDOM % 100))"
• Comando join
• Listar arquivos
62
• Comando od
> echo "$(($RANDOM % 100))"
• Comando less 82
• Comando echo > echo "$(($RANDOM % 100))"
• Comando fmt 6
• Comando printf
• Comando pr
• Comando paste Para gerar uma lista de 10 números usa-se o loop (esse será mostrado mais adiante).
• Comando comm
• Exemplo de uso do iconv
> for x in $(seq 1 10) ; do echo "$(($RANDOM % 100))" ; done
Segurança

Arquivos
Salviano A. Leão – 69
Processos no Linux
Agora para gerar uma lista de números Para fazer isso, basta inserir algum valor
aleatórios entre entre N0 = 20 e na variável $RANDOM, antes de utilizá-la:
NF = 80, devemos proceder assim
• Sumário > RANDOM=100
∆N = NF − N0 , logo comando deveria
Referências > echo $RANDOM
ser "$((RANDOM%∆N + N0 ))", 9532
Manuais
portanto nesse caso teremos > echo $RANDOM
Administração
1585
Shell Script > echo $RANDOM
• Comandos da família grep
> echo "$((RANDOM %60 +20))" 1295
• Expressões Regulares
• Classe POSIX
73
> echo "$((RANDOM %60 +20))"
• Comando tr
35 As vezes isso não é uma boa ideia, pois
• Comando seq
• Arquivos > echo "$((RANDOM %60 +20))" se repetirmos o processo obtemos os
• Comando split 34 mesmos resultados
• Comando csplit > echo "$((RANDOM %60 +20))"
• RANDOM 58
• Comando sort > RANDOM=100
• Comando cut > echo $RANDOM
• Comando join 9532
• Listar arquivos Como em qualquer função para geração > echo $RANDOM
• Comando od 1585
• Comando less de números dessa natureza, é
> echo $RANDOM
• Comando echo interessante utilizar uma semente (seed) 1295
• Comando fmt
• Comando printf para melhorar a qualidade do resultado.
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 70
Processos no Linux
• Sumário
Para evitar esse problema deve-se variar a semente toda vez que a variável RANDOM
Referências
for usada em um shell script. Há várias alternativas, entretano, mostrarei duas de rápida
Manuais
implementação. A primeira, e muito tradicional, consiste em usar o relógio do sistema
Administração operacional. Com o comando date ele pode retorna o horário no formato de segundos
Shell Script decorridos desde 1 de janeiro de 1970 e atribuir esse valor como sendo a semente da
• Comandos da família grep variável $RANDOM, conforme código abaixo
• Expressões Regulares
• Classe POSIX
• Comando tr > date +%s
• Comando seq 1490552202
• Arquivos > RANDOM=$(date +%s)
• Comando split > echo $RANDOM
• Comando csplit
• RANDOM
• Comando sort
• Comando cut outra possibilidade é usar a opção %N que retorna a hora com precisão de nanosegun-
• Comando join dos e estamos pegando somente essa parte fracionária
• Listar arquivos
• Comando od
• Comando less > date +%N
• Comando echo 746454405
• Comando fmt > RANDOM=$(date +%N)
• Comando printf > echo $RANDOM
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv
Com isso, pode-se usar uma semente capaz de gerar números diferentes a cada exe-
Segurança
cução dos seus shell scripts que necessitem de números aleatórios.
Arquivos
Salviano A. Leão – 71
Processos no Linux
Radom devices

• Sumário
Caso o seu problema necessite de um gerador de números aleatórios sério use o dis-
Referências
positivos /dev/urandom e /dev/random da seguinte forma
Manuais

Administração
> od -vAn -N4 -tu4 < /dev/urandom
573502242
Shell Script
• Comandos da família grep > od -An -N4 -i < /dev/urandom
• Expressões Regulares 2019913170
• Classe POSIX > od -An -N2 -i < /dev/random
• Comando tr
• Comando seq
31949
• Arquivos
• Comando split
• Comando csplit ou ainda
• RANDOM
• Comando sort
• Comando cut > dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "
• Comando join 293454337
• Listar arquivos > dd if=/dev/urandom count=4 bs=1 | od -An -N4 -i
• Comando od
• Comando less
378852248
• Comando echo
• Comando fmt
• Comando printf O comando abaixo gera um texto aleatório, enquanto não for interrompido
• Comando pr
• Comando paste
• Comando comm tr -dc a-z1-4 </dev/urandom | tr 1-2 ' \n' | awk 'length==0 ||
• Exemplo de uso do iconv
֒→ length>50' | tr 3-4 ' ' | sed 's/^ *//' | cat -s | sed 's/ / /g' |
Segurança
֒→ fmt
Arquivos
Salviano A. Leão – 72
Processos no Linux
Comando sort

• Sumário
Classifica as linhas de um arquivo texto ou da entrada padrão, de acordo com as opções
Referências
passadas. A classificação é feita por linhas e as linhas são divididas em campos que é a
Manuais
ordem que as palavras aparecem na linha separadas por um delimitador (normalmente
Administração um espaço). A sintaxe do comando é
Shell Script
sort [ opcoes ] [ arquivo ]
• Comandos da família grep
• Expressões Regulares
• Classe POSIX na qual arquivo é o nome do arquivo que será classificado. Se nenhum arquivo for
• Comando tr
• Comando seq
especificado, será usado o dispositivo de entrada padrão (normalmente o teclado ou
• Arquivos um pipe "). Algumas opções são:
• Comando split
• Comando csplit -b Ignora linhas em branco.
• RANDOM
• Comando sort
• Comando cut
-d Somente usa letras, dígitos e espaços durante a classificação.
• Comando join
• Listar arquivos -f Ignora a diferença entre maiúsculas e minúsculas.
• Comando od
• Comando less -r Inverte o resultado da comparação.
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 73
Processos no Linux
Comando sort: opções

-n Caso estiver classificando um campo que contém números, os números serão clas-
• Sumário sificados na ordem aritmética. Por exemplo, se você tiver um arquivo com os núme-
Referências ros:
Manuais

Administração
> cat lista0
200
Shell Script
• Comandos da família grep 20
• Expressões Regulares 70
• Classe POSIX
• Comando tr
• Comando seq Usando a opção -n, o arquivo será classificado desta forma:
• Arquivos
• Comando split
• Comando csplit > sort -n lista0
• RANDOM 20
• Comando sort
• Comando cut
70
• Comando join 200
• Listar arquivos
• Comando od
• Comando less No caso em que essa opção não é usada, o sort irá classificar o arquivo como uma
• Comando echo
• Comando fmt listagem alfabética (que vai de a até z e do 0 até 9), dessa forma ela terá a seguinte
• Comando printf forma:
• Comando pr
• Comando paste
• Comando comm > sort -n lista0
• Exemplo de uso do iconv 20
Segurança 200
Arquivos 70
Salviano A. Leão – 74
Processos no Linux
Opções do sort

• Sumário
-c Verifica se o arquivo já está classificado. Se não estiver, retorna a mensagem
Referências
"disorder on arquivo".
Manuais
-o SAIDA Grava a saída do comando sort no arquivo SAIDA.
Administração

Shell Script -m ARQUIVO1 ARQUIVO2 Combina o conteúdo de ARQUIVO1 e ARQUIVO2 ge-


• Comandos da família grep
rando um único arquivo. Os dois arquivos precisam estar ordenados antes dessa
• Expressões Regulares
• Classe POSIX opção ser usada.
• Comando tr
• Comando seq -i Ignora os caracteres fora da faixa octal ASCII 040-0176 durante a organização.
• Arquivos
• Comando split
• Comando csplit
-t CARACTER Usa CARACTER como delimitador durante a classificação de linhas.
• RANDOM Por padrão é usado um espaço em branco como delimitador de caracteres.
• Comando sort
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 75
Processos no Linux
Opções do sort

-k POS1, POS2 Específica qual o campo dentro da linha entre POS1 e POS2 que
• Sumário será usado na classificação. Cada posição tem a forma ’[F.C][OPTS]’, onde F é o
Referências número do campo a ser usado, e C é o número do primeiro caractere do início do
Manuais campo. Campos e posições de caracteres são numeradas a partir de 1, uma posição
Administração de caractere zero em POS2 indica o último caractere do campo. Se ’C’ é omitido em
Shell Script POS1, o padrão é 1 (o início do campo), se omitido em POS2, o padrão é 0 (o fim
• Comandos da família grep
• Expressões Regulares
do campo). OPTS são opções de ordenação, que permitem chaves individuais para
• Classe POSIX serem classificados de acordo com as diferentes regras.
• Comando tr
• Comando seq
Exemplo: Para classificar o segundo campo do arquivo lixo.csv cujo separador de
• Arquivos campos é o caracter “;”, use ‘- -key=2,2’ ou (‘-k 2,2’), da seguinte forma:
• Comando split
• Comando csplit sort -t ";" -k 2 ,2 lixo . csv
• RANDOM
• Comando sort
• Comando cut
> sed -n '2,$p' Lista.txt | sort -k 2
• Comando join
• Listar arquivos 294; Alessandra Maria Rodrigues; Física Médica; 7
• Comando od 860; Carlos Souza Costa; Engenharia Física; 6
• Comando less 323; Daniela Mendes Campos; Engenharia Física; 5
• Comando echo
• Comando fmt
133; João Carlos Matos; Física Licenciatura; 5
• Comando printf 876; João Niguém; Física Bacharelado; 3
• Comando pr 524; José Américo Brasil; Física Licenciatura; 1
• Comando paste
876; Mara Borges da Silva; Física Médica; 2
• Comando comm
• Exemplo de uso do iconv 598; Marina Almeida Prado; Física Bacharelado;
Segurança
740; Marina Matias Souza; Física Licenciatura; 4
Arquivos
197; Paulo Abreu Faria; Física Bacharelado;
Salviano A. Leão – 76
Processos no Linux
Exemplos do sort

• Sumário
1 > ls -al | sort -b -g -k5
Referências
2 total 80
Manuais
3 -rw-r--r-- 1 salviano salviano 175 Jun 6 2010 getip
Administração
4 -rw-r--r-- 1 salviano salviano 304 Jun 9 2010 Tese.tex
Shell Script 5 drwxr-xr-x 10 salviano salviano 4096 Mar 25 22:16 ..
• Comandos da família grep
• Expressões Regulares
6 drwxr-xr-x 2 salviano salviano 4096 Mar 25 20:28 .
• Classe POSIX 7 -rw-r--r-- 1 salviano salviano 10598 Mar 22 15:07 ExpReg.txt
• Comando tr 8 -rw-r--r-- 1 salviano salviano 22597 Jun 9 2010 Linux_processos.txt
• Comando seq
9 -rw-r--r-- 1 salviano salviano 28574 Jun 9 2010 comando_find
• Arquivos
• Comando split
• Comando csplit
• RANDOM Sorteando pelo mês:
• Comando sort
• Comando cut
• Comando join
1 > ls -al | sort -b -k6
• Listar arquivos 2 total 80
• Comando od 3 -rw-r--r-- 1 salviano salviano 175 Jun 6 2010 getip
• Comando less
• Comando echo
4 -rw-r--r-- 1 salviano salviano 28574 Jun 9 2010 comando_find
• Comando fmt 5 -rw-r--r-- 1 salviano salviano 22597 Jun 9 2010 Linux_processos.txt
• Comando printf 6 -rw-r--r-- 1 salviano salviano 304 Jun 9 2010 Tese.tex
• Comando pr
7 -rw-r--r-- 1 salviano salviano 10598 Mar 22 15:07 ExpReg.txt
• Comando paste
• Comando comm 8 drwxr-xr-x 2 salviano salviano 4096 Mar 25 20:28 .
• Exemplo de uso do iconv 9 drwxr-xr-x 10 salviano salviano 4096 Mar 25 22:16 ..
Segurança

Arquivos
Salviano A. Leão – 77
Processos no Linux
Comando cut

• Sumário
O comando ’cut’ escreve na saída padrão partes selecionadas de cada linha de cada
Referências
arquivo de entrada ou da entrada padrão se nenhum arquivo for fornecido ou para um
Manuais
arquivo passado como argumento de entrada. Sintaxe:
Administração

Shell Script > cut OPÇÃO ... [FILE] ...


• Comandos da família grep
• Expressões Regulares
• Classe POSIX A OPÇÃO pode ser
• Comando tr
• Comando seq -b, –bytes=LISTA selecione somente esses caracteres
• Arquivos
• Comando split
• Comando csplit
-d, –delimiter=DELIM use o DELIM em vez de TAB no campo delimitador
• RANDOM
• Comando sort -f, –fields=LISTA seleciona somente esses campos; ele também imprime qualquer
• Comando cut
linha que não possua um caracter delimitador, a menos que a opção -s seja especifi-
• Comando join
• Listar arquivos cada
• Comando od
• Comando less -s, –only-delimited não imprime linhas que não possuam um caracter delimitador
• Comando echo
• Comando fmt
• Comando printf
–output-delimiter=STRING usa STRING como o delimitador padrão da saída
• Comando pr
• Comando paste -z, –zero-terminated o delimitador da linha é NUL, não uma nova linha
• Comando comm
• Exemplo de uso do iconv –help Exibe uma ajuda
Segurança

Arquivos
–version Exibe informações da versão
Salviano A. Leão – 78
Processos no Linux
Exemplos
Considere por exemplo

• Sumário > ls -alh | sed "/^d/d"


Referências
-rw-r--r-- 1 salviano salviano 6 Mar 27 08:02 abc
-rw-r--r-- 1 salviano salviano 434 Mar 27 07:20 Caracteres-acentuados.txt
Manuais -rw-r--r-- 1 salviano salviano 28K Mar 27 07:20 comando_find
-rw-r--r-- 1 salviano salviano 11K Mar 27 07:20 ExpReg.txt
Administração -rw-r--r-- 1 salviano salviano 52 Mar 27 07:20 frutas1.txt
-rw-r--r-- 1 salviano salviano 43 Mar 27 07:20 frutas2.txt
Shell Script -rw-r--r-- 1 salviano salviano 291K Mar 27 07:20 Frutas-de-A-a-Z.txt
• Comandos da família grep -rw-r--r-- 1 salviano salviano 175 Mar 27 07:20 getip
• Expressões Regulares -rw-r--r-- 1 salviano salviano 10 Mar 27 07:20 impares
• Classe POSIX -rw-r--r-- 1 salviano salviano 72 Mar 27 07:20 ling-prog.txt
-rw-r--r-- 1 salviano salviano 23K Mar 27 07:20 Linux_processos.txt
• Comando tr
-rw-r--r-- 1 salviano salviano 518 Mar 27 07:20 Lista.txt
• Comando seq -rw-r--r-- 1 salviano salviano 4 Mar 27 08:02 num2
• Arquivos -rw-r--r-- 1 salviano salviano 11 Mar 27 07:20 pares
• Comando split -rw-r--r-- 1 salviano salviano 304 Mar 27 07:20 Tese.tex
> ls -alh | tr -s ' ' | cut -d' ' -f5
• Comando csplit
4,0K
• RANDOM 4,0K
• Comando sort 6
• Comando cut 434
• Comando join 28K
11K
• Listar arquivos
52
• Comando od 43
• Comando less 291K
• Comando echo 175
10
• Comando fmt
72
• Comando printf 23K
• Comando pr 518dpg
• Comando paste 4
• Comando comm 11
304
• Exemplo de uso do iconv > ls -alh | sed "/^d/d" | tr -s ' ' | cut -s -d' ' -f5 | gnuplot -p -e "set style fill pattern; plot
Segurança ֒→ '<cat' w histograms"
> ls -alh | sed "/^d/d" | tr -s ' ' | cut -s -d' ' -f5 | gnuplot -p -e "set style data histogram;
Arquivos ֒→ set style fill solid border; plot '<cat' lc 2 notitle"
Salviano A. Leão – 79
Processos no Linux
Comando join

• Sumário
O comando join (unir) concatena registros de dois arquivos de texto baseado em índi-
Referências
ces comuns entre os registros. O comando funciona como um tipo de banco de dados
Manuais
primitivo, permitindo a montagem de novos arquivos de registros a partir de registros
Administração existentes em diferentes arquivos. Somente dois arquivos podem ser relacionados de
Shell Script cada vez. Os arquivos devem estar ordenados em ordem crescente pelo índice. Pre-
• Comandos da família grep ferencialmente utilize índices numéricos, índices alfanuméricos também são aceitos.
• Expressões Regulares
• Classe POSIX Sintaxe:
• Comando tr
• Comando seq
join [OPÇÕES] [ARQUIVO1][ARQUIVO2]
• Arquivos
• Comando split
• Comando csplit
• RANDOM
• Comando sort -a ARQNUM também imprime linhas impagáveis do arquivo ARQNUM, onde ARQ-
• Comando cut
NUM é 1 ou 2, correspondente a ARQUIVO1 ou ARQUIVO2
• Comando join
• Listar arquivos
• Comando od -e EMPTY substituir campos de entrada em falta com EMPTY
• Comando less
• Comando echo -i, –ignore-case ignora diferenças no caso quando se comparam campos
• Comando fmt
• Comando printf -j FIELD equivalente a ’-1 FIELD -2 FIELD’
• Comando pr
• Comando paste
• Comando comm
-o FORMATO obedecer FORMATO durante a construção da linha de saída
• Exemplo de uso do iconv
-t CHAR usa CHAR como separador de campos de entrada e saída
Segurança

Arquivos
Salviano A. Leão – 80
Processos no Linux
-v NUMARQUIVO semelhante a -a NUMARQUIVO, mas suprime como linhas de saída adjuntas

-1 CAMPO adjunta neste CAMPO do arquivo 1

• Sumário
-2 CAMPO adjunta neste CAMPO do arquivo 2
Referências –check-order verifica se uma entrada está corretamente ordenada, mesmo se todas as linhas
Manuais de saída estiverem pareáveis
Administração
–nocheck-order não verifica se uma saída está corretamente ordenada
Shell Script
• Comandos da família grep –header trata a primeira linha de cada arquivo como um campo cabeçalhos, as imprime sem
• Expressões Regulares
tentar uni-las
• Classe POSIX
• Comando tr
• Comando seq
-z, –zero-terminated delimitador de linha é NUL, não nova linha
• Arquivos
• Comando split
–help mostra esta ajuda e finaliza
• Comando csplit
• RANDOM
–version informa a versão e finaliza
• Comando sort
• Comando cut
• Comando join Considere o seguinte exemplo
> cat arq2
• Listar arquivos a a2
• Comando od > cat arq1 c c2
• Comando less a a1 b b2
• Comando echo c c1
• Comando fmt b b1
• Comando printf
• Comando pr
• Comando paste
• Comando comm > join arq1 arq2
• Exemplo de uso do iconv a a1 a2
c c1 c2
Segurança b b1 b2
Arquivos
Salviano A. Leão – 81
Processos no Linux
Exemplos

Considere o seguinte exemplo


> cat frutas1.txt
Goiaba
• Sumário Manga
> cat frutas Banana
Referências
1 Abacate Abacate
Manuais 2 Abacaxi Abacaxi
3 Amora Banana
Administração 4 Laranja Acerola
5 Morango
Shell Script
• Comandos da família grep
• Expressões Regulares
• Classe POSIX > cat frutas2.txt
Caqui
• Comando tr Laranja
• Comando seq > cat precos Goiaba
• Arquivos 1 R$ 10,00 Pera
2 R$ 12,00 Uva
• Comando split 3 R$ 8,00 Caja
• Comando csplit 4 R$ 15,00 Banana
• RANDOM 5 R$ 13,00
• Comando sort
• Comando cut
• Comando join Nesse caso não possuem um contador e
• Listar arquivos Considere o seguinte exemplo o não estão devidamente ordenadas então
• Comando od
resultado é o seguinte usamos um truque
• Comando less
• Comando echo
• Comando fmt
> join frutas precos > join <(cat -n frutas1.txt) <(cat -n
• Comando printf 1 Abacate R$ 10,00 ֒→ frutas2.txt) | cut -d" " -f2-
• Comando pr 2 Abacaxi R$ 12,00 Goiaba Caqui
• Comando paste 3 Amora R$ 8,00 Manga Laranja
4 Laranja R$ 15,00 Banana Goiaba
• Comando comm
5 Morango R$ 13,00 Abacate Pera
• Exemplo de uso do iconv Abacaxi Uva
Segurança
Banana Caja
Acerola Banana
Arquivos
Considere o seguinte exemplo Salviano A. Leão – 82
Processos no Linux
Visualizadores de início e fim de arquivo

• Sumário
head Mostra as linhas iniciais de um arquivo texto. As opções são
Referências -c N Mostra os N-bytes do início do arquivo;
Manuais

Administração
-n N Mostra as N primeiras linhas do arquivo. O padrão é mostrar as 10 primeiras.
Shell Script
• Comandos da família grep tail Mostra as linhas finais de um arquivo texto. As opções são
• Expressões Regulares
• Classe POSIX
-c N Mostra os N-bytes do fim do arquivo;
• Comando tr
• Comando seq
• Arquivos -n N Mostra as N últimas linhas do arquivo. O padrão é mostrar as 10 últimas.
• Comando split
• Comando csplit
• RANDOM more é um filtro para paginar o texto na tela, com algumas opções. Ele já esta meio
• Comando sort obsoleto e é mais conveniente usarmos o seu substituto que possuí mais recurso, o
• Comando cut
• Comando join comando less.
• Listar arquivos
• Comando od less é um filtro para paginar o texto na tela, com uma série de opções. Ele é mais
• Comando less
• Comando echo
eficiente e mais rápido.
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 83
Processos no Linux
Comando od

• Sumário É o Octal Dump, que serve para mostrar o código de cada caractere de um arquivo ou
Referências texto. Além de octal, também mostra os códigos em hexadecimal e ASCII. Algumas
Manuais opções mais úteis são
Administração
-A, –address-radix=RADIX formato de saída para arquivos; RADIX é um dos [doxn],
Shell Script
• Comandos da família grep para Decimal, Octal, Hex ou None
• Expressões Regulares
• Classe POSIX -t, –format=TYPE Seleciona o formato de saída ou formatos;
• Comando tr
• Comando seq -a ou -t a Mostra os nomes dos caracteres;
• Arquivos
• Comando split
• Comando csplit
-b ou -t o1 Mostra os caracteres em octal;
• RANDOM
• Comando sort -c ou -t c Mostra os caracteres em ASCII ou com barras de ESCAPE;
• Comando cut
• Comando join -x Mostra os caracteres em hexadecimal.
• Listar arquivos
• Comando od
Este comando é muito útil para encontramos caracteres especiais escondidos em al-
• Comando less
• Comando echo guns arquivos.
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 84
Processos no Linux
Exemplos do comando od

• Sumário $ cat Arq_com_caracteres_especiais


200
Referências
20
Manuais 70
Administração 1
Shell Script
2
• Comandos da família grep
. 2
• Expressões Regulares : 3
• Classe POSIX 4
• Comando tr x
• Comando seq x x 8
• Arquivos x
• Comando split
• Comando csplit
• RANDOM $ od -a Arq_com_caracteres_especiais
• Comando sort 0000000 2 0 0 nl 2 0 nl 7 0 nl sp sp sp sp sp 1
• Comando cut 0000020 nl sp sp sp sp sp 2 nl . sp sp sp sp 2 nl :
• Comando join 0000040 sp sp sp sp 3 nl sp sp sp sp sp 4 nl sp sp sp
• Listar arquivos 0000060 sp sp x nl sp sp sp sp sp x sp sp ht sp sp x
• Comando od 0000100 sp sp ht ht sp 8 nl sp sp sp sp sp x nl sp nl
• Comando less 0000120
• Comando echo
• Comando fmt
• Comando printf > od -A d -t c frutas1.txt
• Comando pr 0000000 G o i a b a \n M a n g a \n B a n
• Comando paste
0000016 a n a \n A b a c a t e \n A b a c
• Comando comm
0000032 a x i \n B a n a n a \n A c e r o
• Exemplo de uso do iconv
0000048 l a \n \n
Segurança 0000052
Arquivos
Salviano A. Leão – 85
Processos no Linux
Editores para linha de comando

• Sumário
ed Editor de texto orientado a linhas.
Referências
vi Editor de texto comum a quase todos os sistemas tipo Unix.
Manuais

Administração nano Editor de texto muito usado nos GNU/Linux atuais, e extremamente versátil e
Shell Script poderoso.
• Comandos da família grep
• Expressões Regulares emacs Editor de texto muito usado por ser extremamente versátil e poderoso.
• Classe POSIX
• Comando tr
• Comando seq
mcedit Editor integrado ao GNU Midnight Commander, cujo pacote linux é o mc, de
• Arquivos uso fácil e simples.
• Comando split
• Comando csplit pico Pequeno editor de texto;
• RANDOM
• Comando sort
• Comando cut
sed Editor de texto orientado para fluxo.
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 86
Processos no Linux
Comando less

• Sumário
O less é um filtro para paginar o texto na tela, que permite mover-se no texto em todas
Referências
as direções. Para navegar no texto, seus comandos são similares aos do emacs. Aqui
Manuais
listamos alguns:
Administração
ESPAÇO ou ^V or f or ^F Move o texto N linhas a frente. N refere-se ao tamanho
Shell Script
padrão em linhas do terminal usado. O comando z redefine esse valor
• Comandos da família grep
• Expressões Regulares
• Classe POSIX z Redefine o tamanho padrão em linhas do terminal.
• Comando tr
• Comando seq /PADRÃO Pesquisa para frente o PADRÃO no texto.
• Arquivos
• Comando split
?PADRÃO Pesquisa para trás o PADRÃO no texto.
• Comando csplit
• RANDOM
• Comando sort q ou Q ou :q ou :Q ou ZZ Sai do ambiente less.
• Comando cut
• Comando join Para maiores detalhes de navegação consulte o manual.
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 87
Processos no Linux
Comando echo

• Sumário Mostra um texto. Comando extremamente


> echo -e "teste\fteste\t X"
Referências útil. A sintaxe do comando é: teste
Manuais teste X
Administração echo [OPCOES]... [STRING]...
Shell Script
• Comandos da família grep
• Expressões Regulares A opções pdem ser:
• Classe POSIX
-n Não quebra a linha no final. > echo -e "X1\rX2\rX3"
• Comando tr
• Comando seq
X3
• Arquivos -e Habilita a interpretação dos caracte-
• Comando split
• Comando csplit res especiais (Escape), listados na ta-
• RANDOM bela.
• Comando sort
• Comando cut > echo -e "teste1\cteste2\t X"
• Comando join
-E Desabilita a interpretação dos carac- teste1
• Listar arquivos teres especiais (Escape).
• Comando od
• Comando less Exemplos:
• Comando echo
• Comando fmt
• Comando printf > echo -e "teste\nteste\b X" > echo -e "X1\tX2\tX3\n\t\tX5"
• Comando pr teste X1 X2 X3
• Comando paste test X X5
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 88
Processos no Linux
Tabela de caracteres de ESCAPE

• Sumário Escape Descrição


Referências

Manuais
\\ barra invertida
Administração
\a Som de alerta (bipe).
Shell Script
\b Caracter backspace (apaga um caracter).
• Comandos da família grep \c Além desse ponto, não produz uma saída.
• Expressões Regulares
• Classe POSIX
\f Introduz uma nova linha, que inicia na coluna chamada.
• Comando tr \n Introduz nova linha.
• Comando seq
• Arquivos
\r Retorno de carro. Mostra só o que está a direita dele.
• Comando split \t Tabulação horizontal.
• Comando csplit
• RANDOM
\v Tabulação vertical.
• Comando sort \0nnn Caractere cujo código ASCII é nnn (octal).
• Comando cut
• Comando join
\xnn Caractere cujo hexadecimal é nn.
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 89
Processos no Linux
Comando fmt

• Sumário É um formatador de parágrafos simples, podendo adicionar ou remover quebra de li-


Referências nhas e espaços, para que o texto seja mantido dentro do número máximo de colunas
Manuais específicas. O resultado é sempre enviado a saída padrão, ou seja, ao terminal. Sua
Administração sintaxe é a seguinte:
Shell Script
• Comandos da família grep
fmt [-WIDTH] [OPCOES]... [ARQUIVO]...
• Expressões Regulares
• Classe POSIX
• Comando tr
• Comando seq As opções são:
• Arquivos
• Comando split -c, - -crown-margin Preserva a indentação das duas primeiras linhas.
• Comando csplit
• RANDOM
-p, - -prefix=STRING Só reformata as linhas que iniciam com a palavra STRING, re-
• Comando sort
• Comando cut anexando o prefixo as linhas formatadas.
• Comando join
• Listar arquivos -s, - -split-only Quebra linhas longas, mas não preenche o texto.
• Comando od
• Comando less
• Comando echo
-t, - -tagged-paragraph Indentação da primeira linha diferente da segunda.
• Comando fmt
• Comando printf -u - -uniform-spacing Um espaço entre as palavras, e dois após as sentenças.
• Comando pr
• Comando paste -w, – width=WIDTH Largura máxima das linhas, o valor padrão é 75 colunas.
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 90
Processos no Linux
Comando fold

• Sumário
O comando fold permite alterar a largura das linhas de um arquivo. Em sistemas
Referências
GNU/Linux, o comando fold faz parte do pacote textutils.
Manuais
Esta alteração pode ser feita contando-se os bytes, palavras, ou através de um valor
Administração pré-definido para o comprimento de linha que se desenha.
Shell Script O comportamento padrão do comando fold é quebrar as linhas em 80 colunas.
• Comandos da família grep Vejamos um exemplos:
• Expressões Regulares
• Classe POSIX
• Comando tr > fold -s -w 70 texto.txt
• Comando seq
• Arquivos
• Comando split Com estas opções as linhas serão quebradas na 70a coluna, após um espaço em
• Comando csplit
• RANDOM branco (opção -s), impedindo que palavras sejam quebradas.
• Comando sort
• Comando cut
• Comando join
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 91
Processos no Linux
Comando printf

• Sumário
Comando que formata a saída de um texto. Sua sintaxe é a seguinte:
Referências

Manuais
printf [FORMATO] [ARGUMENTOS]...
Administração

Shell Script
em que:
• Comandos da família grep
• Expressões Regulares
FORMATO é uma cadeia de caracteres que contem 3 tipos de objeto:
• Classe POSIX
• Comando tr
• Comando seq
• caracteres simples;
• Arquivos
• Comando split • caracteres para especificação de formato;
• Comando csplit
• RANDOM • sequência de escape no padrão da linguagem C.
• Comando sort
• Comando cut
• Comando join
ARGUMENTOS é a cadeia a ser impressa sob o controle do formato.
• Listar arquivos
• Comando od
# printf " Ola , esse eh o comando printf "
• Comando less
Ola , esse eh o comando printf #
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 92
Processos no Linux
Especificações do FORMATO

• Sumário
Cada um dos caracteres utilizados para especificação de formato é precedido pelo ca-
Referências
racter % e logo a seguir vem a especificação de formato de acordo com a tabela:
Manuais
CARACTER Descrição
Administração

Shell Script \\ barra invertida


• Comandos da família grep
• Expressões Regulares
\c Simples caractere
• Classe POSIX \d Número no sistema decimal
• Comando tr
• Comando seq
\e Notação científica exponencial
• Arquivos \f Número com ponto decimal (float)
• Comando split
O menor entre os formatos %e e %f com supressão dos zeros
• Comando csplit \g
• RANDOM não significativos
• Comando sort
• Comando cut
\o Número no sistema octal
• Comando join \s Cadeia de caracteres
• Listar arquivos
• Comando od
\x Número no sistema hexadecimal
• Comando less \% Imprime um %. Não existe nenhuma conversão .
• Comando echo
• Comando fmt
• Comando printf # printf "% s \ n " 'O pi eh : '
• Comando pr
O pi eh :
• Comando paste
# printf "% f \ t % e \ t % g \ n " 3.1415 3.1415 3.1415
• Comando comm
• Exemplo de uso do iconv
3.141500 3.141500 e +00 3.1415
Segurança

Arquivos
Salviano A. Leão – 93
Processos no Linux
Sequências de Escape do printf

• Sumário
As sequências de escape padrão da linguagem C são sempre precedidas por um
Referências
contra-barra (\) e as reconhecidas pelo comando printf são:
Manuais

Administração Sequência Efeito


Shell Script
\\ barra invertida
• Comandos da família grep
• Expressões Regulares \a Soa o beep
• Classe POSIX
\b Volta uma posição (backspace)
• Comando tr
• Comando seq \f Salta para a próxima página lógica (form feed)
• Arquivos
\n Salta para o início da linha seguinte (line feed)
• Comando split
• Comando csplit \r Volta para o início da linha corrente (carriage return)
• RANDOM
\t Avança para a próxima marca de tabulação
• Comando sort
• Comando cut
• Comando join
• Listar arquivos
• Comando od # printf "%05d\n" {13..20} printf "%05.2f\n" {13..20}
• Comando less 00013 13.00
• Comando echo 00014 14.00
• Comando fmt 00015 15.00
• Comando printf 00016 16.00
• Comando pr 00017 17.00
• Comando paste 00018 18.00
• Comando comm
00019 19.00
• Exemplo de uso do iconv
00020 20.00
Segurança

Arquivos
Salviano A. Leão – 94
Processos no Linux
Exemplos

• Sumário
# printf "%s\t%s\n" "1" "2" "3" "4" "5" "6"
Referências
1 2
Manuais 3 4
Administração 5 6
Shell Script
• Comandos da família grep
# printf "%.*f\n" 10 4.3
• Expressões Regulares 4.3000000000
• Classe POSIX # printf "%.*f\n" 4 4.3
• Comando tr 4.3000
• Comando seq
• Arquivos # printf "%d\n" 0x41
• Comando split 65
• Comando csplit
• RANDOM # printf -v Mensagem "Ola usuario %s" "$USER"
• Comando sort
# echo $Mensagem
• Comando cut
Ola usuario salviano
• Comando join
• Listar arquivos
• Comando od # printf "%#10.9g\n" 3.1415
• Comando less 3.14150000
• Comando echo # printf "%#10.8g\n" 3.1415
• Comando fmt 3.1415000
• Comando printf # printf "%#10.7g\n" 3.1415
• Comando pr 3.141500
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 95
Processos no Linux
Comando pr

• Sumário
Página arquivos texto ou a entrada padrão para impressão. Este comando faz a pa-
Referências
ginação de um arquivo texto e opcionalmente ajusta o número de colunas e mostra o
Manuais
resultado na saída padrão. Sintaxe:
Administração

Shell Script
pr [OPÇÕES] [ARQUIVO]
• Comandos da família grep
• Expressões Regulares
• Classe POSIX na qual ARQUIVO é o arquivo que será paginado para impressão, e as OPÇÕES podem
• Comando tr
• Comando seq
ser:
• Arquivos
• Comando split [NUM] Inicia a numeração de páginas na página [PAGINA]
• Comando csplit
• RANDOM -[NUM] Mostra a saída com [NUM] colunas.
• Comando sort
• Comando cut
-c Imprime o caracter CTRL como "^"na saída padrão.
• Comando join
• Listar arquivos
• Comando od -F, -f Usa avanço de página ao invés de linhas em branco para separar páginas.
• Comando less
• Comando echo -e[caracter [tamanho]] Usa o caracter [caracter] como tabulação (o padrão é tab) e o
• Comando fmt
• Comando printf
espaço da tabulação [tamanho].
• Comando pr
• Comando paste -h [nome] Mostra [nome] ao invés do nome do arquivo no cabeçalho.
• Comando comm
• Exemplo de uso do iconv -l [num] Define o número máximo de linhas por página para [num].
Segurança

Arquivos
Salviano A. Leão – 96
Processos no Linux
OPÇÕES

• Sumário
-m Imprime vários arquivos em paralelo, um por coluna.
Referências
-r Oculta mensagens de erro de abertura de arquivos.
Manuais

Administração -s[CAHR , –separator[=CHAR]] Separa as colunas por um único character CHAR.


Shell Script
• Comandos da família grep -t Omite o cabeçalho.
• Expressões Regulares
• Classe POSIX -w [num] Ajusta a largura da página para [num] colunas (o padrão é 72).
• Comando tr
• Comando seq
• Arquivos
Para maiores informações consulte,
• Comando split
• Comando csplit > info pr
• RANDOM
• Comando sort
• Comando cut
• Comando join Por exemplo, considere o arquivo
• Listar arquivos
• Comando od
> cat ling-prog.txt
• Comando less
Linguagens de programção
• Comando echo
• Comando fmt
Fortran
• Comando printf
Python
• Comando pr C
• Comando paste C++
• Comando comm Lisp
• Exemplo de uso do iconv Lua
Segurança
Ruby
Perl
Arquivos
Java
Salviano A. Leão – 97
Processos no Linux
• Sumário
O comando a seguir
Referências
> pr -l 20 -h "Teste do comando pr" ling-prog.txt | cat -n -
Manuais
1
Administração 2
Shell Script 3 2017-03-26 22:58 Teste do comando pr P
• Comandos da família grep 4
• Expressões Regulares 5
• Classe POSIX 6 Linguagens de programção
• Comando tr 7 Fortran
• Comando seq 8 Python
• Arquivos
9 C
• Comando split
10 C++
• Comando csplit
• RANDOM
11 Lisp
• Comando sort 12 Lua
• Comando cut 13 Ruby
• Comando join 14 Perl
• Listar arquivos 15 Java
• Comando od 16
• Comando less 17
• Comando echo 18
• Comando fmt 19
• Comando printf
20
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 98
Processos no Linux
Comando pr

• Sumário
Considere os dois seguintes arquivos:
Referências

Manuais
> cat users.txt: > cat senhas.txt
Administração João 12345
Shell Script José 51234
• Comandos da família grep Maria 45123
• Expressões Regulares
• Classe POSIX
• Comando tr
• Comando seq
• Arquivos
Para unir eles em um único arquivo, faz-se
• Comando split
• Comando csplit > pr -m -t -s\ users.txt senhas.txt
• RANDOM
• Comando sort
• Comando cut
• Comando join Note que logo após o -s\ existe dois espaços, depois os nomes dos arquivos.
• Listar arquivos A saída do comando acima será:
• Comando od
• Comando less
• Comando echo João 12345
• Comando fmt José 51234
• Comando printf Maria 45123
• Comando pr
• Comando paste
• Comando comm O mesmo resultado é obtido com o comando paste
• Exemplo de uso do iconv

Segurança
> paste users.txt senhas.txt
Arquivos
Salviano A. Leão – 99
Processos no Linux
Comando paste

• Sumário
O paste une linhass de arquivos. Sintaxe
Referências

Manuais
paste [OPÇÕES] ... [ARQUIVO] ...
Administração

Shell Script
• Comandos da família grep • Escreve linhas que consistem das correspondentes sequências das linhas de cada
• Expressões Regulares
• Classe POSIX
ARQUIVO, separadas por TABs, para saída padrão.
• Comando tr
• Comando seq • Sem ARQUIVO, ou quando ARQUIVO for -, leia a entrada padrão.
• Arquivos
• Comando split • Os argumentos obrigatórios para opções longas são obrigatórios para opções curtas
• Comando csplit
• RANDOM também.
• Comando sort
• Comando cut As OPÇÕES são:
• Comando join
• Listar arquivos
-d, –delimiters=LIST reusa os characteres da LISTA em vez dos TABs
• Comando od
• Comando less
• Comando echo
-s, –serial Cola um arquivo por vez em vez de em paralelo
• Comando fmt
• Comando printf -z, –zero-terminated o delimitador de linha é NUL, não uma nova linha
• Comando pr
• Comando paste –help Exibe uma ajuda
• Comando comm
• Exemplo de uso do iconv
–version Exibe informações da versão
Segurança

Arquivos
Salviano A. Leão – 100
Processos no Linux
Exemplos

• Sumário Considere os seguinte arquivos de exem-


> paste num2 abc num2
Referências plo: 1 a 1
Manuais 2 b 2
Administração
c
> cat num2
Shell Script 1
• Comandos da família grep 2
• Expressões Regulares
Misturando as linhas a partir da entrada
> cat abc
• Classe POSIX
a padrão (stdin)
• Comando tr
b
• Comando seq
• Arquivos
c > paste - abc - < num2
• Comando split 1 a 2
• Comando csplit b
• RANDOM
Agora podemos trabalhar eles c
• Comando sort
• Comando cut
• Comando join
> paste num2 abc
Juntando linhas consecutivas com espaço
• Listar arquivos
• Comando od 1 a como delimitador
• Comando less 2 b
• Comando echo c > seq 4 | paste -d ' ' - -
• Comando fmt
1 2
• Comando printf
• Comando pr
3 4
• Comando paste duplicando colunas
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 101
Processos no Linux
Exemplos
Considere os 2 arquivos criados da seguinte forma:

• Sumário > seq 1 2 10 > impares


Referências > seq 2 2 10 > pares
Manuais

Administração
Para ver o conteúdo dos arquivos criados, vamos usar o paste:
Shell Script
• Comandos da família grep
• Expressões Regulares > paste impares pares
• Classe POSIX 1 2
• Comando tr 3 4
• Comando seq 5 6
• Arquivos 7 8
• Comando split 9 10
• Comando csplit
• RANDOM
• Comando sort
• Comando cut
Agora vamos transformar a coluna do pares em linha:
• Comando join
• Listar arquivos > paste -s pares
• Comando od 2 4 6 8 10
• Comando less
• Comando echo
• Comando fmt
• Comando printf
O separador default é TAB, mas isso pode ser alterado com a opção -d.
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 102
Processos no Linux
Para calcular a soma do conteúdo dos pares primeiramente faríamos:

• Sumário > paste -s -d'+' pares # também poderia ser -sd'+'


Referências 2+4+6+8+10
Manuais

Administração
e depois passaríamos esta linha para a calculadora (bc) e então ficaria:
Shell Script
• Comandos da família grep
• Expressões Regulares > paste -s -d'+' pares | bc
• Classe POSIX 30
• Comando tr
• Comando seq
• Arquivos Assim sendo, para calcular o fatorial do número contido em $Num, basta:
• Comando split
• Comando csplit
• RANDOM > seq $Num | paste -sd'*' | bc
• Comando sort
• Comando cut
• Comando join Por exemplo, o fatorial de é
• Listar arquivos
• Comando od
• Comando less > seq 6 | paste -sd'*' | bc
• Comando echo 720
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 103
Processos no Linux
Comando comm
O comando comm, parte do pacote coreutils, compara dois arquivos ordenados
linha por linha e escreve na saída padrão as linhas que são comuns, mais as linhas
• Sumário
que são exclusivas de cada arquivo. A sintaxe do comando
Referências

Manuais
comm [-123][--help][--version] ARQV1 ARQV2
Administração

Shell Script
• Comandos da família grep Parâmetros:
• Expressões Regulares
• Classe POSIX -1 Exclui as linhas únicas do ARQ1.
• Comando tr
• Comando seq
• Arquivos
-2 Exclui as linhas únicas do ARQ2.
• Comando split
• Comando csplit -3 Mostra as linhas que são únicas em cada arquivo.
• RANDOM
• Comando sort –check-order Verifica se os arquivos de entrada estão ordenados e se todas as
• Comando cut
• Comando join linhas de entrada possuem uma correspondẽncia.
• Listar arquivos
• Comando od –nocheck-order Não verifica se os arquivos de entrada estão ordenados.
• Comando less
• Comando echo –output-delimiter=STR As colunas estão separadas pela string STR
• Comando fmt
• Comando printf
• Comando pr
-z, –zero-terminated O delimintador de linha é NUL, não uma nova linha
• Comando paste
• Comando comm –help ajuda online.
• Exemplo de uso do iconv

Segurança –version informações sobre a versão de exibição.


Arquivos
Salviano A. Leão – 104
Processos no Linux
Descrição

• Sumário
Antes de usar o “comm”, os arquivos de entrada devem ser classificados usando a
Referências
sequência de agrupamento especificada pela localidade ’LC_COLLATE’, com as novas
Manuais
linhas de arrasto significativas. Se um arquivo de entrada terminar em um caractere de
Administração não-nova-linha, uma nova linha será adicionada silenciosamente. O comando ’sort’ sem
Shell Script opções sempre gera um arquivo que é entrada adequada para ’comm’. Sem opções,
• Comandos da família grep ’comm’ produz três colunas de saída. A coluna 1 contém linhas exclusivas para ARQV1,
• Expressões Regulares
• Classe POSIX a coluna 2 contém linhas exclusivas para ARQV2 e a coluna 3 contém linhas comuns a
• Comando tr ambos os arquivos. As colunas são separadas por um único caractere TAB.
• Comando seq
• Arquivos
• Comando split
As opções -1, -2 e -3 suprimem a impressão das colunas correspondentes. Ao contrário
• Comando csplit
• RANDOM de alguns outros utilitários de comparação, ’comm’ tem um status de saída que não
• Comando sort
depende do resultado da comparação. Após a conclusão normal ’comm’ produz um
• Comando cut
• Comando join código de saída de zero. Se houver um erro, ele sai com status diferente de zero.
• Listar arquivos
• Comando od
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 105
Processos no Linux
Exemplos

• Sumário
Por exemplo, considere os ARQ1 e ARQ2, para mostrar somente as linhas em comun
Referências
à ambos os arquivos, ou seja, aquelas presentes em ambos faça
Manuais
> comm -12 ARQ1 ARQ2
Administração

Shell Script
• Comandos da família grep
Já para mostrar as linhas que são únicas em ambos os arquivos faça
• Expressões Regulares
• Classe POSIX
• Comando tr > comm -3 ARQ1 ARQ2
• Comando seq
• Arquivos
• Comando split
• Comando csplit
Exclui as linhas únicas de ARQV1
• RANDOM
• Comando sort > comm -1 ARQV1 ARQV2
• Comando cut
• Comando join
• Listar arquivos
Exclui as linhas únicas de ARQV2
• Comando od
• Comando less
• Comando echo > comm -2 ARQV1 ARQV2
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 106
Processos no Linux
Exemplo

> cat frutas1.txt > cat frutas2.txt


• Sumário Goiaba Caqui
Manga Laranja
Referências
Banana Goiaba
Manuais Abacate Pera
Administração Abacaxi Uva
Shell Script
Banana Caja
• Comandos da família grep Acerola Banana
• Expressões Regulares
• Classe POSIX
• Comando tr
O comando comm sem opção mostra três colunas. A Primeira coluna é aquela única
• Comando seq
• Arquivos de ARQV1. A segunda coluna é aquela única de ARQV2 e a terceira é a comun entre
• Comando split
os dois arquivos.
• Comando csplit
• RANDOM
• Comando sort > comm <(sort frutas1.txt | uniq ) <(sort frutas2.txt | uniq)
• Comando cut Abacate
• Comando join Abacaxi
• Listar arquivos
Acerola
• Comando od
Banana
• Comando less
• Comando echo
Caja
• Comando fmt Caqui
• Comando printf Goiaba
• Comando pr Laranja
• Comando paste Manga
• Comando comm Pera
• Exemplo de uso do iconv Uva
Segurança

Arquivos
Salviano A. Leão – 107
Processos no Linux
• Sumário
Mostra as linhas comnuns de frutas1.txt e frutas2.txt
Referências
> comm -12 <(sort frutas1.txt | uniq ) <(sort frutas2.txt | uniq)
Manuais
Banana
Administração Goiaba
Shell Script
• Comandos da família grep
• Expressões Regulares Mostra somente as linhas únicas de frutas1.txt e frutas2.txt
• Classe POSIX
• Comando tr
> comm -3 <(sort frutas1.txt | uniq ) <(sort frutas2.txt | uniq)
• Comando seq
Abacate
• Arquivos
• Comando split
Abacaxi
• Comando csplit Acerola
• RANDOM Caja
• Comando sort Caqui
• Comando cut Laranja
• Comando join Manga
• Listar arquivos Pera
• Comando od Uva
• Comando less
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 108
Processos no Linux
• Sumário
Exclui as linhas únicas de frutas1.txt
Referências
> comm -1 <(sort frutas1.txt | uniq ) <(sort frutas2.txt | uniq)
Manuais
Banana
Administração Caja
Shell Script
Caqui
• Comandos da família grep Goiaba
• Expressões Regulares Laranja
• Classe POSIX Pera
• Comando tr Uva
• Comando seq
• Arquivos
• Comando split Exclui as linhas únicas de frutas2.txt
• Comando csplit
• RANDOM
• Comando sort > comm -2 <(sort frutas1.txt | uniq ) <(sort frutas2.txt | uniq)
• Comando cut Abacate
• Comando join Abacaxi
• Listar arquivos Acerola
• Comando od Banana
• Comando less Goiaba
• Comando echo
Manga
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 109
Processos no Linux
Exemplo de uso do iconv
Considere o seguinte arquivo Caracteres-acentuados.txt

• Sumário > cat Caracteres-acentuados.txt


Troque ā, á, ǎ, & à por a.
Referências
Troque ē, é, ě, & è por e.
Manuais Troque ı̄, í, ı̌, & ì por i.
Troque ō, ó, ǒ, & ò por o.
Administração Troque ū, ú, ǔ, & ù por u.
Troque ǖ, ǘ, ǚ, & ǜ por ü.
Shell Script Troque Ā, Á, Ǎ, & À por A.
• Comandos da família grep Troque Ē, É, Ě, & È por E.
• Expressões Regulares Troque Ī, Í, Ǐ, & Ì por I.
Troque Ō, Ó, Ǒ, & Ò por O.
• Classe POSIX
Troque Ū, Ú, Ǔ, & Ù por U.
• Comando tr
Troque Ǖ, Ǘ, Ǚ, & Ǜ por Ü.
• Comando seq > iconv -f utf8 -t ascii//TRANSLIT Caracteres-acentuados.txt
• Arquivos Troque a, a, a, & a por a.
• Comando split Troque e, e, e, & e por e.
• Comando csplit Troque i, i, i, & i por i.
Troque o, o, o, & o por o.
• RANDOM Troque u, u, u, & u por u.
• Comando sort Troque u, u, u, & u por u.
• Comando cut Troque A, A, A, & A por A.
• Comando join Troque E, E, E, & E por E.
Troque I, I, I, & I por I.
• Listar arquivos
Troque O, O, O, & O por O.
• Comando od Troque U, U, U, & U por U.
• Comando less Troque U, U, U, & U por U.
• Comando echo
• Comando fmt
• Comando printf
• Comando pr
• Comando paste
• Comando comm
• Exemplo de uso do iconv

Segurança

Arquivos
Salviano A. Leão – 110
Processos no Linux
• Sumário

Referências

Manuais

Administração

Shell Script

Segurança
• Privilégios
• Permissões no linux
• Comando chmod

Arquivos
Segurança
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 111


Segurança de acesso aos arquivos

• Sumário
chown Comando para alterar o dono;
Referências
chgrp Comando para alterar o grupo;
Manuais

Administração chmod comando para alterar as permissões;


Shell Script

Segurança
• Privilégios
• Permissões no linux
• Comando chmod

Arquivos

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 112


Permissões no linux

• Sumário
No Linux, como em outros sistemas Unix, cada arquivo tem uma permissão. As
Referências
permissões são atributos dos arquivos que especifica se ele pode ser lido, executado
Manuais
ou escrito. Estas permissões definem o que um usuário pode fazer. Para saber se um
Administração
programa é executável ou não, execute um ’ls -l’ e veja no lado esquerdo se o arquivo
Shell Script tem X nos seus argumentos, como no exemplo abaixo:
Segurança
• Privilégios $ ls -al
• Permissões no linux
drwxr-xr-x 2 root root 4,0K 2010-06-08 09:53 hsperfdata_root/
• Comando chmod
drwxr-xr-x 2 salviano salviano 4,0K 2010-06-08 11:10 hsperfdata_salviano/
Arquivos
drwx------ 3 salviano salviano 4,0K 2010-06-08 08:48 kde-salviano/
Processos no Linux
drwx------ 2 salviano salviano 4,0K 2010-06-08 08:31 keyring-kecE07/
Shell Script
drwx------ 2 salviano salviano 4,0K 2010-06-08 13:46 ksocket-salviano/
O sed 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 test2
lrwxrwxrwx 1 salviano salviano 5 2010-06-08 14:07 testx -> test2

Salviano A. Leão – 113


Dono, grupo e permissão

• Sumário Arquivo Dono Grupo Permissões


Referências

Manuais
hsperfdata_root/ root root drwxr-xr-x
Administração
hsperfdata_salviano/ salviano salviano drwxr-xr-x
Shell Script
kde-salviano/ salviano salviano drwx- - - - - -
Segurança
keyring-kecE07/ salviano salviano drwx- - - - - -
• Privilégios ksocket-salviano/ salviano salviano drwx- - - - - -
• Permissões no linux
• Comando chmod mc-salviano/ salviano salviano drwx- - - - - -
Arquivos orbit-gdm/ gdm gdm drwx- - - - - -
Processos no Linux orbit-root/ root root drwx- - - - - -
Shell Script orbit-salviano/ salviano salviano drwx- - - - - -
O sed 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- -

Salviano A. Leão – 114


• Sumário
Como vemos as permissões de cada arquivo/diretório são representadas por uma
Referências
série de letras r, w, x, l ou d! Vamos ver o que representa cada uma delas:
Manuais Permissões => tipo dono grupo todos
Administração drwxrwxrwx => d rwx rwx rwx
Shell Script 0111222333 => 0 111 222 333
Segurança
• Privilégios • No caso acima, a primeira coluna (numero 0) indica se o nome listado é um
• Permissões no linux
diretório, um link ou um arquivo. Se for um diretório ele terá o caractere d, se for um
• Comando chmod
link um caractere l e por último se for um arquivo regular terá o símbolo -.
Arquivos

Processos no Linux • Portanto, de acordo com nossa tabela anterior, o arquivo testx é um link, test1 e
Shell Script
test2 são arquivos e o restante diretórios.
O sed

Salviano A. Leão – 115


Outros tipos

• Sumário
Também há casos em que no lugar do ’d’, aparecem outras letras que indicam outros
Referências
tipos de arquivos. A letra ’l’ significa que é um link simbólico, as letras ’c’ e ’b’
Manuais
correspondem à dispositivos (/dev). Veja alguns exemplos abaixo:
Administração $ ls -al /dev/
Shell Script
lrwxrwxrwx 1 root root 3 2010-06-08 08:29 scd0 -> sr0
0 brw-rw---- 1 root disk 8, 0 2010-06-08 08:29 sda
Segurança
• Privilégios
0 brw-rw---- 1 root disk 8, 1 2010-06-08 08:29 sda1
• Permissões no linux 0 brw-rw---- 1 root disk 8, 2 2010-06-08 08:29 sda2
• Comando chmod 0 brw-rw---- 1 root disk 8, 3 2010-06-08 08:54 sda3
Arquivos 0 brw-rw---- 1 root disk 8, 4 2010-06-08 08:29 sda4
Processos no Linux
0 brw-rw---- 1 root disk 8, 5 2010-06-08 08:29 sda5
0 brw-rw---- 1 root disk 8, 6 2010-06-08 08:29 sda6
Shell Script
0 brw-rw---- 1 root disk 8, 7 2010-06-08 08:29 sda7
O sed
0 brw-rw---- 1 root disk 8, 16 2010-06-08 08:29 sdb
0 crw-rw---- 1 root disk 21, 0 2010-06-08 08:29 sg0
0 crw-rw---- 1 root cdrom 21, 1 2010-06-08 08:29 sg1
0 crw-rw---- 1 root disk 21, 2 2010-06-08 08:29 sg2
0 drwxrwxrwt 2 root root 200 2010-06-08 13:40 shm/

Salviano A. Leão – 116


Permissões do dono

• Sumário
• No exemplo aseguir, mostra-se um diretório do sistema:
drwxr-xr-x 2 root root 4096 2010-04-28 13:51 bin
Referências
|----------> Contém a letra 'd' na primeira coluna, é um diretório
Manuais

Administração • Agora vamos examinar a coluna do dono (a dos números 1), que mostra as
Shell Script permissões que o dono do arquivo possuí. Por exemplo considere o arquivo
Segurança -rwxr--r-- 1 salviano users 13 2010-06-08 13:44 test1
• Privilégios ||\--> salviano, dono do arquivo pode executar o arquivo, x=executable!
• Permissões no linux |\---> salviano, dono do arquivo pode gravar no arquivo, w=writable!
• Comando chmod \----> salviano, dono do arquivo pode ler o arquivo, r=readable!
Arquivos

Processos no Linux
• Agora vamos examinar a coluna do grupo (a dos números 2), que mostra as
Shell Script permissões que o grupo do dono do arquivo possuí. Por exemplo considere o
O sed arquivo:
-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

Salviano A. Leão – 117


Permissões de outros

• Sumário
• Por sua vez a coluna que representa todos os outros usuários do sistema
Referências
(composta pelos números 3), refere as permissões para todos os outros usuários
Manuais
do sistema, sem ser o dono e os participantes do grupo-do-dono do mesmo.
Administração Considere por exemplo:
Shell Script
-r--r--rwx 1 salviano backup 13 2010-06-08 13:46 test2
| | ||\--> Todos os usuários (exceto salviano e usuários do
Segurança
| | || grupo backup) tem permissão para executar o arquivo!
• Privilégios
| | |\---> Todos os usuários (exceto salviano e usuários do
• Permissões no linux
• Comando chmod
| | | grupo backup) tem permissão para gravar no arquivo!
\--\--\----> Todos os usuários tem permissão para ler o arquivo!
Arquivos

Processos no Linux • Ao referir a um diretório o sinalizador x (executável) diz se o diretório está ou não
Shell Script acessível, já que só se pode EXECUTAR diretórios... Exemplo:
O sed drwxr--r-- 1 root root 13 2010-06-08 13:46 Lixao
||||| \---> Todos os podem ler o conteúdo do diretório, mas não
||||| podem usar o comando 'cd' para entrar nele, pois não
||||| há o sinalizador 'x' para a quarta coluna.
||||\------> O grupo 'root' pode ler o conteúdo do diretório,
|||| mas não pode usar 'cd' para entrar no diretório.
|||\-------> O 'root' pode usar 'cd' para entrar no diretório.
||\--------> O 'root' pode gravar arquivos nesse diretório.
|\---------> O 'root' pode ler o interior desse diretório.
\----------> Indica que o nome listado é um diretório.

Salviano A. Leão – 118


Comando chmod

• Sumário
O comando chmod pode ser usado para mudar os sinalizadores ’rwx’ dos arquivos
Referências
e/ou diretórios, a sintaxe básica do comando é:
Manuais
chmod [ ugoa ]{ -+}[ rwx ] n o m e _ d o _ a r q u i v o _ o u_ d ir e to r io
Administração

Shell Script Exemplo: Para mudar a permissão do arquivo (u=user) para o dono poder ler e gravar
Segurança (rw) no ’arquivo1.txt’, digite:
• Privilégios
• Permissões no linux
$ chmod u + rw arquivo1 . txt
• Comando chmod

Arquivos
Para desfazer o comando a troca de permissões anteriores, digite:
Processos no Linux

Shell Script $ chmod u - rw arquivo1 . txt


O sed
Os sinais + e − definem se as permisões serão ativadas ou desativadas. Por
exemplo,
$ chmod a+r arquivo2.txt
-----> Todos (a=all) podem ler o 'arquivo2.txt'

$ chmod o+w arquivo3.txt


-----> Outros usuários (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'

Salviano A. Leão – 119


Exemplo do comando chmod

• Sumário
O comando chmod pode também ser usado com números, em vez dos flags. Este
Referências
método é chamado de octal, veja o exemplo abaixo:
Manuais
$ chmod -c 664 arquivo . txt
Administração

Shell Script

Segurança Representação octal


• Privilégios
• Permissões no linux
• Comando chmod Número Combinação Significado
Arquivos 0 Nenhuma permissão
Processos no Linux 1 Permissão para executar
Shell Script 2 Permissão para gravar
O sed 3 1+2 Permissão para gravar e executar
4 Permissão para ler
5 4+1 Permissão para ler e executar
6 4+2 Permissão para ler e gravar
7 4+2+1 Permissão para ler, gravar e executar

Salviano A. Leão – 120


Exemplo

• Sumário $ chmod -c 664 arquivo . txt


Referências

Manuais O comando acima muda as permissões do ’arquivo.txt’, dando permissões de leitura e


Administração escrita ao seu dono (o número 6 na primeira coluna), de leitura e escrita aos usuário
Shell Script que pertencem ao mesmo grupo-dono (o número 6 na segunda coluna) e de leitura a
Segurança todos os outros usuários do sistema (o número 4 na última coluna).
• Privilégios
• Permissões no linux O comando chown é simples e pode ser usado para mudar o dono e o grupo-dono de
• Comando chmod um arquivo/diretório. Ele é usado da seguinte forma:
Arquivos

Processos no Linux
$ chown -c usuario . grupo a r q u i v o _ o u _ d ir et or io
$ chown usuario : grupo a r q u i v o _ o u _ di re to ri o
Shell Script
$ chown salviano . users test2
O sed $ chown - cR salviano . salviano / home / salviano

Salviano A. Leão – 121


• Sumário

Referências

Manuais

Administração

Shell Script

Segurança

Arquivos
• date
• compactar
• Comando tar Arquivos
• rsync

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 122


Manipulando data e hora

date Mostra ou altera a data e hora do sistema;


• Sumário

Referências Formato Descrição


Manuais %a Nome do dia da semana abreviado (Dom..Sáb)
Administração
%A Nome do dia da semana (Domingo..Sábado)
%b Nome do mês abreviado (Jan..Dez)
Shell Script
%B Nome do mês (Janeiro..Dezembro)
Segurança
%c Data completa (Sat Nov 04 12:02:33 EST 1989)
Arquivos %y Ano (dois dígitos)
• date
%Y Ano (quatro dígitos)
• compactar
• Comando tar %m Mês (01..12)
• rsync %d Dia (01..31)
Processos no Linux %j Dia do ano (001..366)
%H Horas (00..23)
Shell Script
%M Minutos (00..59)
O sed
%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 calendário

Salviano A. Leão – 123


Compactar: Fazer backups

• Sumário
tar Cria um arquivo, que é formado pela sequência dos outros, em fila. Ele não usa
Referências
nenhum algooritmo de compactação.
Manuais
compress Compactador
Administração

Shell Script uncompress Descompactador do compress.


Segurança
zcat Comprime ou expande arquivos comprimidos.
Arquivos
• date
• compactar gzip Comprime
• Comando tar
• rsync gunzip Expande arquivos comprimidos co gzip.
Processos no Linux
bzip2 Comprime ou expande arquivos comprimidos.
Shell Script

O sed

Salviano A. Leão – 124


Comando tar

• Sumário É utilizado para agrupar e desagrupar arquivos e diretórios em um ánico arquivo ou


Referências dispositivo físico, como disquetes e fitas. Estes dispositivos variam de sistema para
Manuais sistema. A sua sintaxe é
Administração
tar { - c | - x | - t } [ - v ] [ - f { dispositivo | arqv1 }] { arqv2 | dire torio }
Shell Script

Segurança
onde dispositivo é o arquivo de dispositivo do sistema, arqv1 é o nome do arquivo do
Arquivos
agrupamento, arqv2 é o nome do arquivo a ser agrupado e diretorio é o nome do
• date
• compactar diretório a ser agrupado.
• Comando tar
• rsync

Processos no Linux

Shell Script

O sed

Salviano A. Leão – 125


Comando tar: opções

• Sumário
-A Une ao final de um arquivo tar um outro arquivo tar;
Referências
-c Cria um novo arquivo;
Manuais

Administração -d Encontra as diferenças existentes entres os arquivos compactados e os do


Shell Script sistema;
Segurança
- -delete Apaga um arquivo do compactado;
Arquivos
• date
• compactar -f Indica o nome do arquivo final (que será o arquivo compactado);
• Comando tar
• rsync -t Lista o conteúdo do arquivo;
Processos no Linux
-r Adiciona arquivos ao já existente;
Shell Script

O sed
-u Adiciona somente arquivos com data mais recente do que a do arquivo que estiver
no arquivo compactado;

-x Descompacta o arquivo;

-v Mostra os arquivos que estão sendo processados;

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

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

Salviano A. Leão – 126


Exemplos do Comando tar

• Sumário
• Para agrupar dois ou mais arquivos em um único arquivo:
Referências $ tar - cvf programas . tar prog . c prog2 . c
Manuais

Administração
• Para agrupar o diretório de trabalho e seus sub-diretórios em um único arquivo:
Shell Script

Segurança $ tar - cvf tudo . tar *


Arquivos
• date
• compactar • Para agrupar dois arquivos tar, unindo ao primeiro arquivo o segundo
• Comando tar
• rsync
$ tar - Af primeiro . tar segundo . tar
Processos no Linux

Shell Script

O sed
• 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

Salviano A. Leão – 127


exemplo do tar

• Sumário
• Para desagrupar vários arquivos de um arquivo criado pelo comando:
Referências $ tar - xvf tudo . tar prog . c bin /* doc / prog . txt
Manuais

Administração
• Para listar os arquivos agrupados em um arquivo criado pelo comando:
Shell Script

Segurança $ tar - tvf programas . tar


Arquivos
• date
• compactar • Para verificar se um arquivo está agrupado no arquivo criado pelo comando:
• Comando tar
• rsync
$ tar - tvf programa . tar prog2 . c
Processos no Linux

Shell Script

O sed
• Para agrupar arquivos no dispositivo padrão:

$ tar - cv *

• Para desagrupar todos os arquivos do dispositivo padrão:

$ tar - xv

• Para listar os arquivos do dispositivo padrão:


$ tar - tv
Salviano A. Leão – 128
Usando o tar para fazer backups

• Sumário
O comando tar pode ser usado para copiar arquivos mantendo-se as permissões
Referências
originais e os donos, tanto localmente quanto através da rede.
Manuais
• Para realizar esta cópia localmente:
Administração

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


Segurança

Arquivos
• date
• Para realizar a cópia remotamente:
• compactar
• Comando tar $ tar cvf - [ origem ] | rsh [ sistema remoto ] '( cd [ destino ]; tar xv
• rsync

Processos no Linux
• Para duplicar um diretório
Shell Script

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

• Cópia rápida de arquivos

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

Salviano A. Leão – 129


Incluindo a data no backup

• Sumário
A seguir mostramos alguns exemplos de como incluir a data atual no nome do arquivo
Referências
tar.
Manuais
• Neste exemplo, será criado um tar do diretório ~/Dados, com o nome de
Administração
Backup_dados_data.tar.gz:
Shell Script
$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y)".tar.gz ~/Dados
Segurança
Backup_dados_08.Jun.2010.tar.gz
Arquivos
• date $ tar -zcvf Backup_dados_"$(date +%d%m%y)".tar.gz ~/Dados
• compactar Backup_dados_080610.tar.gz
• Comando tar
• rsync
• Vamos incluir também a hora e minutos, não utilize ":"como separador porque é um
Processos no Linux
simbolo não válido em nome de arquivos, exemplos:
Shell Script
$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y-%H-%M)".tar.gz ~/Dados
O sed Backup_dados_08.Jun.2010-23-41.tar.gz

Salviano A. Leão – 130


Sincronização de Conteúdo com rsync

• Sumário
Um método rápido e versátil de fazer cópias locais e remotas. a sua sintaxe é:
Referências Local : rsync [ OPCOES ...] FONTE ... [ DESTINO ]
Manuais

Administração Para transferir de via rede a sintaxe é a seguinte:


Shell Script
Envia : rsync [ OPCOES ...] FONTE ... [ USER ] @ [ HOST ]:[ DESTIN O ]
Segurança
Recebe : rsync [ OPCOES ...] [ USER ] @ [ HOST ]: FONTE [ DESTINO ]
Arquivos
• date
• compactar Vejamos alguns exemplos:
• Comando tar
• rsync $ rsync - avz -e ssh polaron . ufg . br :/ home / salviano .
Processos no Linux

Shell Script
O comando acima irá copiar, no diretório corrente, todo o diretório chamado
O sed
/home/salviano.
Já o comando

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

irá copiar apenas o conteúdo do diretório /home/salviano


O comando usa o ssh com a porta 22.

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

Salviano A. Leão – 131


rsync: significado de algumas diretivas

• Sumário
-a - archive, basicamente indica que voce quer que a cópia seja recursiva e que tudo
Referências
seja preservado (links simbólicos, por exemplo);
Manuais
-v - verbose, escreva tudo que estiver fazendo;
Administração

Shell Script -z - compactar os arquivos transferidos;


Segurança
-e - específica o shell remoto a ser usado, no nosso caso, ssh, o que garante que os
Arquivos
• date dados serão transmitidos usando criptografia;
• compactar
• Comando tar -p Preserva as permissões.
• rsync

Processos no Linux • Ele copia apenas o que mudou na árvore de diretórios. De um arquivo modificado
Shell Script ele irá transferir apenas o blocos novos ou alterados.
O sed
• Antes de transferir os dados, faz uma comparação do arquivo na origem e no
destino. Os arquivos são quebrados em segmentos e os seus checksums são
comparados. Os pedaços cujos checksums forem diferentes são transmitidos.

• O rsync pode ser usado para espelhar uma máquina.

Salviano A. Leão – 132


• Sumário

Referências

Manuais

Administração

Shell Script

Segurança

Arquivos

Processos no Linux
• Comando kill
• Comandos nice e renice Processos no Linux
• ps
• top
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 133


Processos no Linux

• Sumário
O que apresentaremos a seguir foi adaptado da seguinte página
Referências
http://www.infowester.com/linprocessos.php .
Manuais
Nos sistemas operacionais, um processo é a forma de representar um programa em
Administração execução. É o processo que utiliza os recursos do computador - processador,
Shell Script memória, etc - para a realização das tarefas para as quais a máquina é destinada.
Segurança O sistema operacional lida com uma infinidade de processos e, por isso, é necessário
Arquivos ter meios que permitam controlá-los. Para isso, os processos contam com um conjunto
Processos no Linux de características, dentre as quais:
• Comando kill
• Comandos nice e renice • Proprietário do processo;
• ps
• top
• Estado do processo (em espera, em execução, etc);
• fg e bg
• Comando fuser
• Comando pstree • Prioridade de execução;
• nohup
• Comandos para • Recursos de memória.
navegação

Shell Script

O sed

Salviano A. Leão – 134


Quanto aos processos temos

• Sumário
• Cada processo possuí um dono e um PID (Process Identifier), um número de
Referências
identificação que o sistema dá a cada processo. Para cada novo processo, um
Manuais
novo número deve ser atribuído, ou seja, não se pode ter um único PID para dois
Administração ou mais processos ao mesmo tempo.
Shell Script
• Os sistemas baseados em Unix precisam que um processo já existente se duplique
Segurança
para que a cópia possa ser atribuída a uma tarefa nova. Quando isso ocorre, o
Arquivos
processo "copiado"recebe o nome de "processo pai", enquanto que o novo é
Processos no Linux
• Comando kill denominado "processo filho". É nesse ponto que o PPID (Parent Process Identifier)
• Comandos nice e renice passa a ser usado: o PPID de um processo nada mais é do que o PID de seu
• ps
• top processo pai.
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 135


Os UID e GID

• Sumário
• Cada processo precisa ter um proprietário, pois só assim o sistema saberá, através
Referências
das permissões fornecidas pelo proprietário, quem pode e quem não pode executar
Manuais
o processo em questão. Para lidar com os donos, o sistema usa os números UID e
Administração GID.
Shell Script
• O Linux gerencia os usuários e os grupos através de números conhecidos como
Segurança
UID (User Identifier) e GID (Group Identifier). Como é possível perceber, UID são
Arquivos
números de usuários e GID são números de grupos. Os nomes dos usuários e dos
Processos no Linux
• Comando kill grupos servem apenas para facilitar o uso humano do computador.
• Comandos nice e renice
• ps • Cada usuário precisa pertencer a um ou mais grupos. Como cada processo (e
• top
• fg e bg
cada arquivo) pertence a um usuário, logo, esse processo pertence ao grupo de
• Comando fuser seu proprietário. Assim sendo, cada processo está associado a um UID e a um
• Comando pstree
• nohup
GID.
• Comandos para
navegação • Os números UID e GID variam de 0 a 65536. Dependendo do sistema, o valor
Shell Script limite pode ser maior. No caso do usuário root, esses valores são sempre 0 (zero).
O sed
Assim, para fazer com que um usuário tenha os mesmos privilégios que o root, é
necessário que seu GID seja 0.

Salviano A. Leão – 136


Sinais de processos

• Sumário
• Os sinais são meios usados para que os processos possam se comunicar e para
Referências
que o sistema possa interferir em seu funcionamento. Por exemplo, se o usuário
Manuais
executar o comando kill para interromper um processo, isso será feito por meio de
Administração um sinal.
Shell Script
• Quando um processo recebe um determinado sinal e conta com instruções sobre o
Segurança
que fazer com ele, tal ação é colocada em prática. Se não houver instruções
Arquivos
pré-programadas, o próprio Linux pode executar a ação de acordo com suas
Processos no Linux
• Comando kill rotinas.
• Comandos nice e renice
• ps
• top
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 137


Alguns sinais comuns

• Sumário
STOP esse sinal tem a função de interromper a execução de um processo e só
Referências
reativá-lo após o recebimento do sinal CONT;
Manuais
CONT esse sinal tem a função de instruir a execução de um processo após este ter
Administração
sido interrompido;
Shell Script

Segurança SEGV esse sinal informa erros de endereços de memória;


Arquivos
TERM esse sinal tem a função de terminar completamente o processo, ou seja, este
Processos no Linux
• Comando kill deixa de existir após a finalização;
• Comandos nice e renice
• ps ILL esse sinal informa erros de instrução ilegal, por exemplo, quando ocorre divisão
• top
• fg e bg por zero;
• Comando fuser
• Comando pstree KILL esse sinal tem a função de "matar"um processo e é usado em momentos de
• nohup
• Comandos para
criticidade.
navegação

Shell Script Os comando kill, kilall e pkill são comandos que o usuário pode usar para enviar um
O sed sinal qualquer sinal para o sistema, porém, se ele for usado de maneira isolada, ou
seja, sem o parâmetro de um sinal, o kill por padrão executa o sinal TERM.

Salviano A. Leão – 138


Comando kill

• Sumário
Ele envia um sinal para um processo do sistema. A sua sintaxe é
Referências $ kill - SINAL PID
Manuais

Administração Como exemplo, vamos supor que você deseja interromper temporariamente a
Shell Script execução do processo de PID 4220. Para isso, pode-se usar o seguinte comando:
Segurança
$ kill - STOP 4220
Arquivos

Processos no Linux
• Comando kill
Para que o processo 4220 volte a ser executado, basta usar o comando:
• Comandos nice e renice
• ps $ kill - CONT 4220
• top
• fg e bg
Se o sinal precisa ser enviado a todos os processos, pode-se usar o número -1 no
• Comando fuser
• Comando pstree lugar do PID. Por exemplo:
• nohup
• Comandos para $ kill - STOP -1
navegação

Shell Script

O sed

Salviano A. Leão – 139


Comando kill listando sinais
O comando
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
• Sumário 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
Referências
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
Manuais 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
Administração 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
Shell Script 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
Segurança
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
Arquivos 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Processos no Linux
• Comando kill Cada sinal possuí um número associado a ele, assim se desejamos matar o processo
• Comandos nice e renice 4220, fazemos
• ps
• top
$ kill -9 4220
• fg e bg
• Comando fuser
• Comando pstree Agora, imagine que você não saiba qual o PID de um processo, neste caso, pode-se
• nohup
• Comandos para
usar o comando killall, desde que você saiba o nome do processo. A sintaxe é:
navegação

Shell Script
killall - SINAL nome - do - processo
O sed
ou ainda, podemos usar o pkill

pkill - SINAL nome - do - processo

Por exemplo:

killall - STOP vi
Salviano A. Leão – 140
Estado dos processos

• Sumário
Quando um processo é criado, isso não significa que ele será imediatamente
Referências
executado. Além disso, determinados processos podem ser temporariamente
Manuais
paralisados para que o processador possa executar um processo prioritário. Isso quer
Administração dizer que os processos, em certos momentos, podem estar em situações de execução
Shell Script diferentes. O Linux trabalha, essencialmente, com quatro tipos de situação, isto é,
Segurança estados:
Arquivos
Executável o processo pode ser executado imediatamente;
Processos no Linux
• Comando kill
• Comandos nice e renice Dormente o processo precisa aguardar algo ocorrer para ser executado. Só após
• ps esse "algo ocorrer"é que ele passa para o estado executável;
• top
• fg e bg
• Comando fuser
Zumbi o processo é considerado "morto", mas, por alguma razão, ainda existe;
• Comando pstree
• nohup Parado o processo está "congelado", ou seja, não pode ser executado.
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 141


Comandos nice e renice

• Sumário
Os comandos nice e renice estão associados ao conceito de gentileza. Um processo
Referências
pode ter prioridade em relação a outros em sua execução. Quando um processo é
Manuais
gentil, significa que ele “oferece a gentileza” de permitir que um processo com
Administração prioridade maior que a sua seja executado antes dele. Os níveis de gentileza, também
Shell Script chamados de nice, são determinados através de números. Quanto mais alto for o valor
Segurança nice, mais gentil é o processo. Geralmente, o intervalo de números usados no nice são
Arquivos os inteiros entre -19 e 19.
Processos no Linux Embora determinar a prioridade de um processo não seja uma prática comum, afinal,
• Comando kill
o próprio Linux faz muito bem essa tarefa, isso pode ser necessário em alguma
• Comandos nice e renice
• ps situação. Para isso, utiliza-se um comando que recebe o mesmo nome do conceito:
• top
nice. A sintaxe é:
• fg e bg
• Comando fuser
• Comando pstree nice -n prioridade processo
• nohup
• Comandos para
navegação
Por exemplo:
Shell Script

O sed
nice -n -5 ntpd

No exemplo, o ntpd recebe prioridade -5. Trata-se de uma prioridade alta, afinal, como
já dito, quanto menor o número menor sua gentileza.

Salviano A. Leão – 142


Exemplos do renice

• Sumário
Se um determinado processo está em execução, isso acontece com uma prioridade já
Referências
definida. Para alterar um processo nessa condição, usa-se o comando renice, cuja
Manuais
sintaxe é:
Administração
renice prioridade opção processo/destino
Shell Script

Segurança

Arquivos As opções do renice são:


Processos no Linux
• Comando kill -u a alteração ocorrerá nos processos do usuário informado;
• Comandos nice e renice
• ps -g a alteração ocorrerá nos processos do grupo indicado;
• top
• fg e bg -p a alteração ocorrerá no processo cujo PID for informado.
• Comando fuser
• Comando pstree
• nohup
Um exemplo:
• Comandos para
navegação
renice +19 1000 -u salviano
Shell Script

O sed
Neste caso, o comando renice alterou a prioridade do processo 1000, assim como a
prioridade dos processos do usuário salviano.

Salviano A. Leão – 143


Verificando processos com o ps

• Sumário
Esse comando informa quais os processos em execução atualmente, quais os UIDs e
Referências
PIDs correspondentes, entre outros. As opções mais importantes desse comando são
Manuais
os seguintes:
Administração
-a Mostra todos os processos existentes;
Shell Script

Segurança -e Exibe as variáveis de ambiente relacionadas aos processos;


Arquivos
-f Exibe a árvore de execução dos processos;
Processos no Linux
• Comando kill
• Comandos nice e renice
-l Exibe mais campos no resultado;
• ps
• top -m Mostra a quantidade de memória ocupada por cada processo;
• fg e bg
• Comando fuser -u Exibe o nome do usuário que iniciou determinado processo e a hora em que isso
• Comando pstree
• nohup ocorreu;
• Comandos para
navegação
-x Exibe os processos que não estão associados a terminais;
Shell Script

O sed -w Se o resultado de processo não couber em uma linha, essa opção faz com que o
restante seja exibido na linha seguinte.

Salviano A. Leão – 144


Exemplo do ps

• Sumário
Por exemplo:
$ ps aux
Referências 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
Manuais
root 2 0.0 0.0 0 0 ? S 08:13 0:00 [kthreadd]
Administração 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]
Shell Script 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]
Segurança 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]
Arquivos
root 9 0.0 0.0 0 0 ? S 08:13 0:00 [migration/2]
Processos no Linux 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]
• Comando kill
root 12 0.0 0.0 0 0 ? S 08:13 0:00 [migration/3]
• Comandos nice e renice root 13 0.0 0.0 0 0 ? S 08:13 0:00 [ksoftirqd/3]
• ps
• top $ ps alx
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
• fg e bg
4 0 1 0 20 0 23692 1960 poll_s Ss ? 0:00 /sbin/init
• Comando fuser 1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
• Comando pstree 1 0 3 2 -100 - 0 0 migrat S ? 0:00 [migration/0]
• nohup 1 0 4 2 20 0 0 0 ksofti S ? 0:27 [ksoftirqd/0]
• Comandos para 5 0 5 2 -100 - 0 0 watchd S ? 0:00 [watchdog/0]
navegação 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]
Shell Script 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]
O sed 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]

Salviano A. Leão – 145


Descrição dos campos de saída do ps

• Sumário
USER nome do usuário dono do processo;
Referências
UID Número de identificação do usuário dono do processo;
Manuais

Administração PID Número de identificação do processo;


Shell Script
PPID Número de identificação do processo pai;
Segurança

Arquivos %CPU Porcentagem do processamento usado;


Processos no Linux
• Comando kill %MEM Porcentagem da memória usada;
• Comandos nice e renice
• ps
VSZ Indica o tamanho virtual do processo;
• top
• fg e bg
• Comando fuser RSS Sigla de Resident Set Size, indica a quantidade de memória usada (em KB);
• Comando pstree
• nohup TTY Indica o identificador do terminal do processo;
• Comandos para
navegação
START Hora em que o processo foi iniciado;
Shell Script

O sed TIME Tempo de processamento já consumido pelo processo;

COMMAND Nome do comando que executa aquele processo;

PRI Valor da prioridade do processo;

Salviano A. Leão – 146


• Sumário
NI Valor preciso da prioridade (geralmente igual aos valores de PRI);
Referências
WCHAN Mostra a função do kernel onde o processo se encontra em modo
Manuais
suspenso;
Administração

Shell Script STAT Indica o estado atual do processo, sendo representado por uma letra:
Segurança
R executável;
Arquivos

Processos no Linux D em espera no disco;


• Comando kill
• Comandos nice e renice
S Suspenso;
• ps
• top
• fg e bg T interrompido;
• Comando fuser
• Comando pstree Z Zumbi;
• nohup
• Comandos para
navegação
Essas letras podem ser combinadas e ainda acrescidas de:
Shell Script W processo paginado em disco;
O sed
< processo com prioridade maior que o convencional;

N processo com prioridade menor que o convencional;

L processo com alguns recursos bloqueados no kernel.

Salviano A. Leão – 147


Verificando processos com o top/htop

• Sumário
O comando ps trabalha como se tirasse uma fotografia da situação dos processos
Referências
naquele momento. O comando top/htop, por sua vez, coleta as informações, mas as
Manuais
atualiza regularmente. Geralmente essa atualização ocorre a cada 10 segundos. A
Administração sintaxe do comando top é a seguinte:
Shell Script
top - opcao
Segurança

Arquivos Entre as opções, tem-se as que se seguem:


Processos no Linux
• Comando kill -d n atualiza o top após n segundos.
• Comandos nice e renice
• ps -c Exibe a linha de comando ao invés do nome do processo;
• top
• fg e bg
• Comando fuser
-i Faz o top ignorar processos em estado zumbi;
• Comando pstree
• nohup -s Executa o top em modo seguro.
• Comandos para
navegação
É possível manipular alguns recursos do comando top através das teclas do teclado.
Shell Script
Por exemplo, para atualizar imediatamente o resultado exibido, basta pressionar a tecla
O sed
de espaço. Se pressionar a tecla q, o top é finalizado. Pressione a tecla h enquanto
estiver utilizando o top para ver a lista completa de opções e teclas de atalho.

Salviano A. Leão – 148


Controle de processos

• Sumário
Para se ter ainda mais controle sobre os processos executados no Linux, pode-se
Referências
utilizar os seguintes comandos:
Manuais
jobs mostra os processos que estão parados ou executando em segundo plano
Administração
(background). Quando um processo está nessa condição, significa sua execução é
Shell Script
feita pelo kernel sem que esteja vinculada a um terminal, ou seja, ele é executado
Segurança
enquanto o usuário usa outros comandos e aplicativos. A sua sintaxe é:
Arquivos

Processos no Linux -l lista os processos através do PID;


• Comando kill
• Comandos nice e renice -r lista apenas os processos em execução;
• ps
• top
-s lista apenas os processos parados.
• fg e bg
• Comando fuser
• Comando pstree
No início da linha ele mostra um número entre colchetes, o qual indica a ordem do
• nohup processo usada pelo jobs.
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 149


Primeiro plano e segundo plano

• Sumário
fg e bg ele enviam um processo respectivamente para o primeiro plano (foreground)
Referências
e segundo plano (background). Para usar o bg, deve-se paralisar o processo. Isso
Manuais
pode ser feito pressionando-se as teclas Ctrl + Z no teclado. Em seguida, digita-se o
Administração comando da seguinte forma:
Shell Script
$ bg + numero
Segurança

Arquivos ou ainda
Processos no Linux
• Comando kill $ bg % numero
• Comandos nice e renice
• ps
• top
O número mencionado corresponde ao valor de ordem informado no início da linha
• fg e bg quando o comando jobs é usado.
• Comando fuser
• Comando pstree
Quanto ao comando fg, a sintaxe é a mesma:
• nohup
• Comandos para $ fg + numero
navegação

Shell Script

O sed

Salviano A. Leão – 150


Comando fuser

• Sumário
O comando fuser mostra qual processo faz uso de um determinado arquivo ou
Referências
diretório. Sua sintaxe é:
Manuais
fuser - opcao caminho ( do arquivo ou diretorio )
Administração

Shell Script Entre as opções, tem-se:


Segurança
-k finaliza o processo que utiliza o arquivo/diretório em questão;
Arquivos

Processos no Linux
-i deve ser usada em conjunto com a opção k e serve para perguntar se a finalização
• Comando kill
• Comandos nice e renice do processo deve ser feita;
• ps
• top -u mostra o proprietário do processo;
• fg e bg
• Comando fuser
-v o resultado é mostrado em um padrão de exibição semelhante ao comando ps.
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 151


Comando pstree

• Sumário
Esse comando mostra processos relacionados em formato de árvore. Sua sintaxe é:
Referências pstree - opcao PID
Manuais

Administração Entre as opções, tem-se:


Shell Script
-u mostra o proprietário do processo;
Segurança

Arquivos -p exibe o PID após o nome do processo;


Processos no Linux
• Comando kill -c mostra a relação de processos ativos;
• Comandos nice e renice
• ps
-G usa determinados caracteres para exibir o resultado em um formato gráfico.
• top
• fg e bg
• Comando fuser
Um detalhe importante: se ao digitar o comando pstree o PID não for informado, todos
• Comando pstree os processos serão listados.
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 152


Comandos de controle de execução

• Sumário
nohup Esse comando possibilita ao processo ficar ativo mesmo quando o usuário
Referências
faz logout. É da natureza dos sistemas baseados em Unix interromper processos
Manuais
caso seu proprietário não esteja mais ativo, por isso, o nohup pode ser muito útil.
Administração Sua sintaxe é:
Shell Script
nohup comando
Segurança

Arquivos

Processos no Linux
time Determina a quantidade de tempo consumida durante a execução de um
• Comando kill determinado comando mais outras informações. Por exemplo,
• Comandos nice e renice
• ps
$ time ls
• top
total 3,0M
• fg e bg 4,0K Aula_prosper.tex 24K lista-de-comandos.tex
• Comando fuser 8,0K bash.tex 8,0K Lista_dos_comando_basicos.tex
• Comando pstree 20K Comandos_Basicos.tex 4,0K lista_tabelas
• nohup 20K Comandos_Basicos.tex.backup 4,0K lista-verbatim01.tex
• Comandos para 4,0K IntroBash/ 4,0K Makefile
navegação
4,0K linux-pauloaguiar/ 36K Notas_01.tex
Shell Script

O sed real 0m0.003s


user 0m0.000s
sys 0m0.010s

Salviano A. Leão – 153


Executando tarefas agendadas

• Sumário
at e batch agenda tarefas a serem executadas pelo sistema.
Referências
atq lista as tarefas agendadas com o comando at.
Manuais

Administração atrm remove tarefas agendadas.


Shell Script
cron O cron pode ser interpretado como um serviço do Linux que é carregado
Segurança
durante o processo de boot do sistema. Trata-se de uma ferramenta que permite
Arquivos
programar a execução de comandos e processos de maneira repetitiva ou apenas
Processos no Linux
• Comando kill uma única vez.
• Comandos nice e renice
• ps crontab editor de tarefas do cron.
• top
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 154


Comandos especiais

• Sumário • join • uniq


Referências
• paste • sed
Manuais

Administração
• cut • awk
Shell Script

Segurança • tr • sleep
Arquivos
• comm • bc
Processos no Linux
• Comando kill
• Comandos nice e renice
• tee
• ps
• top
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 155


Comandos para navegação

• Sumário
curl
Referências
wget
Manuais

Administração lynx
Shell Script
elinks
Segurança

Arquivos surfraw
Processos no Linux
• Comando kill youtube-dl
• Comandos nice e renice
• ps
• top
• fg e bg
• Comando fuser
• Comando pstree
• nohup
• Comandos para
navegação

Shell Script

O sed

Salviano A. Leão – 156


• Sumário

Referências

Manuais

Administração

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script
• O Shell
Shell Script
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 157


O Shell

• Sumário

Referências
Shell ou interpretador
Manuais

Administração
Programas e comandos
Shell Script

Segurança
Núcleo ou Kernel
Arquivos

Processos no Linux Hardware


Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 158


Shell Script Básico

• Sumário
Será que funciona? Um script mínimo em Bash, com apenas duas linhas, pode ser
Referências
visto abaixo
Manuais
# ! / b i n / bash
Administração

Shell Script
echo " H el l o , World ! "
Segurança

Arquivos A primeira linha indica que o shell Bash será usado para interpretar o script e, embora
Processos no Linux não seja obrigatória, sua inclusão é considerada uma boa prática. Tanto, que se
Shell Script atribuiu a denominação carinhosa de "sha-boom"aos seus dois primeiros caracteres,
• O Shell
• Shell Script Básico
denotando algo que se pode traduzir para o português como "o início de um passe de
• Pipes mágica". A segunda linha contém a única ação que será realmente executada, e que
• Variáveis
resultará na exibição do texto "Hello, World!"no terminal.
O sed
Deve-se tornar o script um arquivo executável e para isso use o seguinte comando
para que seu script seja reconhecido pelo sistema como um comando executável:

# chmod +x helloworld.sh

Agora para executar o script faça

#./helloworld.sh

Salviano A. Leão – 159


Pipes

• Sumário
Pipes representam um conceito da família Unix de sistemas operacionais através do
Referências
qual se possibilita que a saída de um programa seja usada como a entrada de outro.
Manuais
# ! / b i n / bash
Administração

Shell Script
l s − l | sed −e " s / [ aei o ] / u / g "
Segurança

Arquivos O trecho de script acima faz uso de um pipe. Ele pode ser entendido da seguinte
Processos no Linux maneira: o comando ls -l é executado e sua saída, ao invés de exibida no terminal,
Shell Script é enviada para o programa sed que manipula o texto da forma que lhe é conveniente.
• O Shell
• Shell Script Básico
Exemplo de script: conta palavras
• Pipes
• Variáveis
> cat /etc/passwd | egrep -o '\w+' | sed '/^[0-9]/d' | sort -f | uniq
O sed ֒→ -c -i | sort -n -r

Esse comando contas as palavras no arquivo /etc/passwd.

Salviano A. Leão – 160


Variáveis

• Sumário
Variáveis em Bash podem ser usadas da mesma maneira que se costuma usá-las na
Referências
maioria das linguagens de programação, com duas distinções. A primeira delas
Manuais
refere-se ao fato de que em Bash, não é necessário declarar variáveis. A simples
Administração atribuição de um valor para um nome resulta na alocação de uma variável com aquele
Shell Script nome. Segundo, as variáveis não são tipadas. O que significa que uma mesma
Segurança variável pode conter, em momentos distintos, valores de tipos diferentes.
Arquivos Assim, o script abaixo é perfeitamente válido. Note a ausência obrigatória de espaços
Processos no Linux entre o nome da variável e o operador de atribuição.
Shell Script
• O Shell # ! / b i n / bash
• Shell Script Básico
• Pipes
• Variáveis var =" H el l o , World ! "
O sed echo $var

var =10
echo $var

Salviano A. Leão – 161


Redirecionamento

• Sumário Operador Ação


Referências < Redireciona a entrada padrão (STDIN)
Manuais > Redireciona a saída padrão (STDOUT)
Administração 2> Redireciona a saída de erro (STDERR)
Shell Script >> Redireciona a saída padrão, anexando
Segurança 2>> Redireciona a saída de erro, anexando
Arquivos | Conecta a saída padrão com a entrada padrão de outro comando
Processos no Linux
2>&1 Conecta a saída de erro na saída padrão
Shell Script
>&2 Conecta a saída padrão na saída de erro
• O Shell
• Shell Script Básico >&- Fecha a saída padrão
• Pipes
2>&- Fecha a saída de erro
• Variáveis
3<>arq Conecta o descritor de arquivos 3 ao arquivo ’arq’
O sed
<<FIM Alimenta a entrada padrão (Here Document)
<<-FIM Alimenta a entrada padrão, cortando TABs
<(cmd) A saída do comando ’cmd’ é um arquivo: diff <(cmd1) <(cmd2)
>(cmd) A entrada do comando ’cmd’ é um arquivo:
tar cf >(bzip2 -c >file.tbz) $dir

Salviano A. Leão – 162


Operadores aritméticos

• Sumário Operador Função Operador Função


Referências + Adição == Igual
Manuais - Subtração != Diferente
Administração * Multiplicação > Maior
Shell Script / Divisão >= Maior ou Igual
Segurança % Módulo < Menor
Arquivos
** Exponenciação <= Menor ou Igual
Processos no Linux

Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 163


Operadores de atribuição

• Sumário Operador Função


Referências = Atribui valor a uma variável
Manuais += Incrementa a variável por uma constante
Administração -= Decrementa a variável por uma constante
Shell Script *= Multiplica a variável por uma constante
Segurança /= Divide a variável por uma constante
Arquivos %= Resto da divisão por uma constante
Processos no Linux
++ Incrementa em 1 o valor da variável
Shell Script
-- Decrementa em 1 o valor da variável
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 164


Operadores de BIT

• Sumário Operador Função


Referências << Deslocamento à esquerda
Manuais >> Deslocamento à direita
Administração & E de bit (AND)
Shell Script | OU de bit (OR)
Segurança ^ OU exclusivo de bit (XOR)
Arquivos ~ Negação de bit
Processos no Linux
! NÃO de bit (NOT)
Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 165


Operadores

• Sumário Operadores lógicos Função


Referências && Atribui valor a uma variável
Manuais || Incrementa a variável por uma constante
Administração
Operadores de BIT Função: atribuição
Shell Script
<<= Deslocamento à esquerda
Segurança
>>= Deslocamento à direita
Arquivos
&= E de bit (AND)
Processos no Linux
|= OU de bit (OR)
Shell Script
• O Shell ^= OU exclusivo de bit (XOR)
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 166


Variáveis especiais

• Sumário Variável Parâmetros Posicionais


Referências $0 Parâmetro número 0 (nome do comando ou função)
Manuais $1 Parâmetro número 1 (da linha de comando ou função)
Administração .
.
Shell Script
. Parâmetro número N . . .
Segurança
$9 Parâmetro número 9 (da linha de comando ou função)
Arquivos ${10} Parâmetro número 10 (da linha de comando ou função)
.
Processos no Linux .
. Parâmetro número NN . . .
Shell Script
• O Shell $# Número total de parâmetros da linha de comando ou função
• Shell Script Básico
$* Todos os parâmetros, como uma “string” única
• Pipes
• Variáveis $@ Todos os parâmetros, como várias strings protegidas
O sed Variável Miscelânea
$$ Número PID do processo atual (do próprio script)
$! Número PID do último job em segundo plano
$_ Último argumento do último comando executado
$? Código de retorno do último comando executado

Salviano A. Leão – 167


Expansão de variáveis

• Sumário Sintaxe Expansão Condicional


Referências ${var:-texto} Se var não está definida, retorna ’texto’
Manuais ${var:=texto} Se var não está definida, defina-a com ’texto’
Administração ${var:?texto} Se var não está definida, retorna o erro ’texto’
Shell Script ${var:+texto} Se var está definida, retorna ’texto’, senão retorna o vazio
Segurança

Arquivos

Processos no Linux

Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 168


Expansão de variáveis

• Sumário Sintaxe Expansão de “Strings”


Referências ${var} É o mesmo que $var, porém não ambíguo
Manuais ${#var} Retorna o tamanho da string
Administração ${!var} Executa o conteúdo de $var (igual 'eval \$$var')
Shell Script ${!texto*} Retorna os nomes de variáveis começadas por ’texto’
Segurança ${var:N} Retorna o texto a partir da posição ’N’
Arquivos ${var:N:tam} Retorna ’tam’ caracteres a partir da posição ’N’
Processos no Linux
${var#texto} Corta ’texto’ do início da string
Shell Script
${var##texto} Corta ’texto’ do início da string (* guloso)
• O Shell
• Shell Script Básico ${var%texto} Corta ’texto’ do final da string
• Pipes
${var%%texto} Corta ’texto’ do final da string (* guloso)
• Variáveis
${var/texto/novo} Substitui ’texto’ por ’novo’, uma vez
O sed
${var//texto/novo} Substitui ’texto’ por ’novo’, sempre
${var/#texto/novo} Se a string começar com ’texto’, substitui ’texto’ por ’novo’
${var/%texto/novo} Se a string terminar com ’texto’, substitui ’texto’ por ’novo’

Salviano A. Leão – 169


Blocos e agrupamentos

• Sumário Sintaxe Descrição Exemplo


Referências
"..." Protege uma string, mas reconhece $, \ e ` como especiais "abc"
'...' Protege uma string completamente (nenhum caractere é especial) 'abc'
Manuais
$'...' Protege uma string completamente, mas interpreta \n, \t, \a, etc $'abc\n'
Administração
`...` Executa comandos numa subshell, retornando o resultado `ls`
Shell Script {...} Agrupa comandos em um bloco { ls ; }
Segurança (...) Executa comandos numa subshell ( ls )
Arquivos $(...) Executa comandos numa subshell, retornando o resultado $( ls )
Processos no Linux
((...)) Testa uma operação aritmética, retornando 0 ou 1 ((5 > 3))
$((...)) Retorna o resultado de uma operação aritmética $((5+3))
Shell Script
• O Shell
[...] Testa uma expressão, retornando 0 ou 1 (alias do comando ’test’) [ 5 -gt 3
• Shell Script Básico [[...]] Testa uma expressão, retornando 0 ou 1 (podendo usar && e ||) [[ 5 > 3
• Pipes
• Variáveis

O sed

Salviano A. Leão – 170


Comando if

• Sumário
O comando if é um comando para tomada de decisão. O mesmo realiza uma
Referências
determinada ação quando um requisito é atendido. Sintaxe:
Manuais

Administração
if [ condicao 1 ]; then
comando 1
Shell Script elif [ condicao 2]
Segurança comando 2
Arquivos
else
comando 3
Processos no Linux
fi
Shell Script
• O Shell
• Shell Script Básico No exemplo a seguir o usuário digitará um valor na tela e só sera exibida uma
• Pipes
• Variáveis mensagem na tela caso esse valor seja maior, igual ou menor do que o número 10.
O sed
#!/bin/bash
echo -n "Digite um algo: "
read Entrada
if [ "$Entrada" -eq "10" ]; then
echo "Entrou com o numero 10"
elif [ "$Entrada" -lt 10 ]; then
echo "Entrou com um numero menor que 10"
else
echo "Entrou com um numero maior que 10"
fi

Salviano A. Leão – 171


Opções do comando test ou []

• Sumário Operador Função


Referências -lt É menor que (LessThan)
Manuais -gt É maior que (GreaterThan)
Administração Comparação Numérica -le É menor igual (LessEqual)
Shell Script -ge É maior igual (GreaterEqual)
Segurança -eq É igual (EQual)
Arquivos -ne É diferente (NotEqual)
Processos no Linux
Operador Função
Shell Script
• O Shell = É igual
• Shell Script Básico Comparação de Strings != É diferente
• Pipes
• Variáveis -n É não nula
O sed -z É nula
Operador Função
! NÃO lógico (NOT)
Operadores Lógicos
-a E lógico (AND)
-o OU lógico (OR)

Salviano A. Leão – 172


Testes em arquivos

• Sumário Operador Função


Referências -b É um dispositivo de bloco
Manuais -c É um dispositivo de caractere
Administração -d É um diretório
Shell Script -e O arquivo existe
Segurança -f É um arquivo normal
Arquivos -g O bit SGID está ativado
Processos no Linux
-G O grupo do arquivo é o do usuário atual
Shell Script
-k O sticky-bit está ativado
• O Shell
• Shell Script Básico -L O arquivo é um link simbólico
• Pipes
-O O dono do arquivo é o usuário atual
• Variáveis Testes em arquivos
-p O arquivo é um named pipe
O sed
-r O arquivo tem permissão de leitura
-s O tamanho do arquivo é maior que zero
-S O arquivo é um socket
-t O descritor de arquivos N é um terminal
-u O bit SUID está ativado
-w O arquivo tem permissão de escrita
-x O arquivo tem permissão de execução
-nt O arquivo é mais recente (NewerThan)
-ot O arquivo é mais antigo (OlderThan)
-ef O arquivo é o mesmo (EqualFile) Salviano A. Leão – 173
Laço for e while

• Sumário
O laço for é uma executa uma ação repetitivamente até que uma condição seja
Referências
atendida.
Manuais
Sintaxe:
Administração
for contador in limite_contador;
Shell Script
do
Segurança acao
Arquivos done
Processos no Linux

Shell Script O while é um tipo de laço que existe em várias linguagens de programação. O
• O Shell
• Shell Script Básico
mesmo executa uma ação enquanto um requisito não é atendido.
• Pipes Sintaxe:
• Variáveis

O sed while [ condicao ]


do
acao
done

Salviano A. Leão – 174


Obtendo informaçoes da imagem

• Sumário
Para obter Informações da imagem
Referências
# file carros_01.png
Manuais
carros_01.png: PNG image data, 640 x 633, 8-bit/color RGB, non-interlaced
Administração

Shell Script # file carros_01.jpg


carros_01.jpg: JPEG image data, JFIF standard 1.02
Segurança

Arquivos # identify carros_01.jpg


Processos no Linux carros_01.jpg JPEG 640x633 640x633+0+0 8-bit DirectClass 125KB 0.000u 0:00.000
Shell Script
• O Shell
# identify carros_01.png
• Shell Script Básico carros_01.png PNG 640x633 640x633+0+0 8-bit DirectClass 728KB 0.000u 0:00.000
• Pipes
• Variáveis # identify -format "%wx%h" carros_01.jpg
O sed
640x633

# imageinfo --geom carros_01.jpg


640x633

# imageinfo --geom carros_01.png


640x633

# convert carros_01.jpg -print "%wx%h\n" /dev/null


640x633

Para maiores detalhes do comando identity -format veja: na página do


imagemagick.
Salviano A. Leão – 175
usando o find

• Sumário
Para encontrar uma imagem cuja as dimensões sejam menores que 300, faça:
Referências
> find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | a
Manuais
384 288 ./carros_16.jpg
Administração 384 288 ./carros_14.jpg
Shell Script 384 288 ./carros_15.jpg
Segurança

Arquivos
encontrar imagen
Processos no Linux

Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis

O sed

Salviano A. Leão – 176


Expressões Regulares

• Sumário
Pode-se dizer que uma Expressão Regular (ER) é um método formal, com uma sintaxe
Referências
própria, de se especificar um padrão ou um conjunto de padrões de texto.
Manuais

Administração A especificação deste padrão pode ser feita via uma composição de símbolos, ou seja,
Shell Script um conjunto de caracteres literais agrupados com metacaracteres formando uma
Segurança expressão regular. Os metacaracteres são caracteres específicos que possuem
Arquivos funções especiais em uma expressão regular.
Processos no Linux

Shell Script
Quando a expressão regular é aplicada a textos e retorna com sucesso o resultado
• O Shell
• Shell Script Básico esperado, o que ocorre quando o texto contém trechos que satisfazem exatamente a
• Pipes todas as condições impostas na ER. Nesse caso, diz−se que o texto “casou” com a
• Variáveis
ER.
O sed

A ERs servem para se dizer algo abrangente de forma específica. Definido o padrão
de busca, tem−se uma lista (finita ou não) de possibilidades de casamento.

Salviano A. Leão – 177


• Sumário
Por um exemplo, em um ER todos os caracteres literais que estiverem dentro de um
Referências
“[]”, um metacaracteres, podem ocorrer, enquanto o metacaractere curinga *, significa
Manuais
qualquer caractere em qualquer quantidade. Assim, por exemplo temos que a
Administração
expressão regular
Shell Script

Segurança
• [bmpv]ala pode casar com: bala, mala, pala, vala.
Arquivos

Processos no Linux • [bmpv]ala* pode casar com: balada, malaria, palanque, valado.
Shell Script
• O Shell As ERs são úteis para buscar ou validar textos variáveis como:
• Shell Script Básico
• Pipes • data e horário;
• Variáveis

O sed • número IP;

• endereço de e−mail;

• endereço de Internet;

• número de matricula de uma lista discente;

• dados numa coluna específica de um arquivo csv;

• dados que estão entre <tags></tags> em um arquivo html;

Salviano A. Leão – 178


Metacaracteres

• Sumário Caractere Resultado/Uso


Referências Representa qualquer caractere único, exceto uma quebra de li-
Manuais . nha ou de parágrafo. Por exemplo, a ER "cur.a" retornará tanto
Administração "curva"como "curta".
Shell Script Localiza zero ou um dos caracteres antes de "?". Por exemplo, a
?
Segurança ER "Textos?" localizará "Texto"e "Textos".
Arquivos
Localiza zero ou mais caracteres antes de "*". Por exemplo, a ER
Processos no Linux
* "12*5" localizará "125", "1235", "12335", "12345", e assim por
Shell Script
• O Shell
diante.
• Shell Script Básico Localiza um ou mais caracteres antes de "+". Por exemplo, a ER
• Pipes
• Variáveis
"AX.+4" localizará "AXx4", mas não "AX4".
O sed
+ Sempre localiza a cadeia de caracteres mais longa possível que
corresponda a ER. Se o parágrafo contiver a cadeia de caracteres
"AX 4 AX4", a expressão toda irá casar.
Localiza o termo de pesquisa só quando ele está no início da linha.
^
Exemplo: "^Lara".
Localiza o termo de pesquisa só quando ele está no final da linha.
Exemplo: "Silva$".
$
O $ sozinho representa um fim de parágrafo. Desta forma, é pos-
sível localizar e substituir quebras de parágrafos.

Salviano A. Leão – 179


Tabelas de Metacaracteres

• Sumário Metacaractere Nome Metacaractere Nome


Referências . Ponto ^ Circunflexo
Manuais [] Lista $ Cifrão
Administração [^] Lista negada \b Borda
Shell Script
? Opcional \ Escape
Segurança
* Asterisco | Ou
Arquivos
+ Mais () Grupo
Processos no Linux
{} Chaves \1 Retrovisor
Shell Script
• O Shell
• Shell Script Básico
• Pipes
• Variáveis Representantes
O sed
Metacaractere Nome Representa
. Ponto Um caractere qualquer
[...] Lista Uma lista de caracteres permitidos
[^...] Lista negada Uma lista de caracteres proibidos

Salviano A. Leão – 180


• Sumário
Quantificadores
Referências
Metacaractere Nome Representa um caractere
Manuais
? Opcional Zero ou uma vez
Administração
* Asterisco Zero, ou mais vezes
Shell Script
+ Mais Um ou mais vezes
Segurança

Arquivos
{n,m} Chaves De n até m vezes
Processos no Linux
Âncoras
Shell Script
• O Shell
• Shell Script Básico Metacaractere Nome Representa
• Pipes ^ Circunflexo O início da linha
• Variáveis
$ Cifrão O fim da linha
O sed
\b Borda O início ou fim de uma palavra

Outros

Metacaractere Nome Função


\" Escape Torna literal o caractere "
| Ou Ou um ou outro
(...) Grupo Delimita um grupo
\1 ... \9 Retrovisor Textos casados nos grupos 1 . . . 9

Salviano A. Leão – 181


Comandos grep, fgrep e egrep
Procuram em um ou mais arquivos por linhas que contém um padrão de busca, ou
seja, por uma expressão regular simples ou estendida.
• Sumário
Sintaxe:
Referências

Manuais grep / fgrep / egrep [ Op ç õ es ] padr ã o arquivos


Administração

Shell Script
Opções:
Segurança
• -F: O mesmo que fgrep. Interpreta padrão como uma ER sem metacaracteres.
Arquivos

Processos no Linux • -E: Similar a egrep. Interpreta padrão como uma ER estendida.
Shell Script
• O Shell • -r: Faz procura recursiva.
• Shell Script Básico
• Pipes • -e expr: Procura pela ER expr.
• Variáveis

O sed • -n: Exibe o número de linhas que contém o padrão.

• -c: Exibe apenas o número de linhas que contém o padrão de busca.

• -f arquivo: Lê o padrão a partir do arquivo especificado.

• -i: Não diferencia maiúsculas de minúsculas na procura.

• -l: Exibe os nomes de arquivos que contém o padrão.

• -v: Exibe as linhas que não contém o padrão.

• -w: Procura apenas palavras inteiras.


Salviano A. Leão – 182
Exemplos de uso

• Sumário
Observação: recomenda-se que o padrão esteja entre apóstrofos (’), pois alguns
Referências
caracteres tem significado especial para o shell e podem ser interpretados
Manuais
erroneamente.
Administração Exemplos: Procura a palavra "nobody"dentro do arquivo /etc/passwd e exibe o
Shell Script número da linha onde ela ocorre:
Segurança
# grep -n nobody / etc / passwd
Arquivos 18: nobody : x :65534:65534: nobody :/ nonexistent :/ usr / sbin / nologin
Processos no Linux

Shell Script Procura todos os arquivos abaixo de /etc que possuem a palavra mouse:
• O Shell
• Shell Script Básico # grep -r mouse / etc /*
• Pipes
• Variáveis
Outros exemplos:
O sed

# grep -n root / etc / passwd


# grep -v bash / etc / passwd | grep -v nologin
# grep -c false / etc / passwd

Salviano A. Leão – 183


Caractere Resultado/Uso
A pesquisa interpreta o caractere especial que segue o "\"como
um caractere normal, e não como uma expressão regular (exceto
• Sumário \
para as combinações \n, \t, \> e \<). Por exemplo, "tree\."
Referências
localizará "tree.", mas não "treed"ou "trees".
Manuais
Representa uma quebra de linha que foi inserida com a combina-
Administração
ção de teclas Shift+Enter. Para transformar a quebra de linha em
Shell Script \n
uma quebra de parágrafo, insira \n nas caixas Procurar e Substituir
Segurança
por e, em seguida, execute uma ação Localizar e substituir.
Arquivos

Processos no Linux
Representa uma tabulação. Você também pode usar essa expres-
\t
Shell Script
são na caixa Substituir por.
• O Shell Verifica pelos limites de uma palavra. Por exemplo, "\bbook"
• Shell Script Básico
• Pipes localiza "bookmark"mas não localiza "checkbook"enquanto que
\b
• Variáveis "book\b" localiza "checkbook"mas não "bookmark". A palavra
O sed discreta "book"é encontrada em ambos termos de pesquisa.
^$ Busca linha em branco.
^. Procura o primeiro caractere de uma linha.
^[mnt] Busca linha que iniciem com m, n ou t.
^[^psr] Busca linha que não iniciem com p, s ou r.

Salviano A. Leão – 184


O arquivo /etc/passwd
Usaremos o arquivo /etc/passwd nos testes a seguir. O conteúdo desse arquivo é:

• Sumário > cat /etc/passwd


root:x:0:0:root:/root:/bin/bash
Referências
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
Manuais sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
Administração man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
Shell Script mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
Segurança uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
Arquivos www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
Processos no Linux irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
Shell Script nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
• O Shell libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
• Shell Script Básico messagebus:x:102:106::/var/run/dbus:/bin/false
• Pipes usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
• Variáveis ntp:x:105:110::/home/ntp:/bin/false
whoopsie:x:106:114::/nonexistent:/bin/false
O sed lightdm:x:107:115:Light Display Manager:/var/lib/lightdm:/bin/false
postfix:x:108:118::/var/spool/postfix:/bin/false
debarchiver:x:109:121:Deb archiving tool,,,:/var/lib/debarchiver:/bin/false
pulse:x:110:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
partimag:x:111:124:Partimage Server,,,:/var/lib/partimaged/:/bin/false
rtkit:x:112:125:RealtimeKit,,,:/proc:/bin/false
logcheck:x:113:126:logcheck system account,,,:/var/lib/logcheck:/bin/false
saned:x:114:127::/home/saned:/bin/false
dictd:x:115:128:Dictd Server,,,:/var/lib/dictd:/bin/false
salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
avahi:x:116:131:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
avahi-autoipd:x:117:132:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
colord:x:118:133:colord colour management daemon,,,:/var/lib/colord:/bin/false
gdm:x:119:134:Gnome Display Manager:/var/lib/gdm:/bin/false
hplip:x:120:7:HPLIP system user,,,:/var/run/hplip:/bin/false
kernoops:x:121:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
debian-spamd:x:122:135::/var/lib/spamassassin:/bin/sh
speech-dispatcher:x:123:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh

Salviano A. Leão – 185


• Sumário
São várias linhas, uma para cada usuário. O separador de informações é o caractere
Referências
dois−pontos ":"e cada linha possui sete campos, no seguinte formato:
Manuais

Administração
login:senha:UID:GID:Nome Completo:Diretório $HOME:shell
Shell Script

Segurança
Todas as senhas estão protegidas em outro arquivo, por isso há somente uma letra
Arquivos
"x"em seu lugar. Analisando a primeira linha, sabemos que ela é referente ao
Processos no Linux
administrador do sistema ("root"). Seu número de usuário (UID) e seu número de
Shell Script
• O Shell
grupo são iguais: zero. Seu nome é "root"mesmo, seu diretório padrão é o "/root"e seu
• Shell Script Básico shell de login é "bash".
• Pipes
• Variáveis

O sed

Salviano A. Leão – 186


Exemplos de uso dos metacaracteres

Circunflexo ^: Cifrão $:
• Sumário
> grep ^root /etc/passwd > grep -n bash$ /etc/passwd
Referências root:x:0:0:root:/root:/bin/bash 1:root:x:0:0:root:/root:/bin/bash
> grep -n ^root /etc/passwd 35:salviano:x:1000:1000:Salviano de Araujo
Manuais 1:root:x:0:0:root:/root:/bin/bash ֒→ Leão,,,:/home/salviano:/bin/bash

Administração

Shell Script

Segurança
Recomenda-se que se proteja a ER, assim usa-se
Arquivos

Processos no Linux > grep -n 'sh$' /etc/passwd


1:root:x:0:0:root:/root:/bin/bash
Shell Script 35:salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
• O Shell 42:debian-spamd:x:122:135::/var/lib/spamassassin:/bin/sh
• Shell Script Básico 43:speech-dispatcher:x:123:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
• Pipes
• Variáveis

O sed Uso combinado do ponto com a lista

> grep -n '^.[a]' /etc/passwd


2:daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
6:games:x:5:60:games:/usr/games:/usr/sbin/nologin
7:man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
14:backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
30:partimag:x:111:124:Partimage Server,,,:/var/lib/partimaged/:/bin/false
33:saned:x:114:127::/home/saned:/bin/false
35:salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash

Salviano A. Leão – 187


O ponto também pode ser usado para se procurar por linhas de um tamanho fixo,
independente do seu conteúdo. Que tal se obter apenas as linhas que possuam
exatamente 32 caracteres?
• Sumário

Referências
> grep '^...............................$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
Manuais \end{code}
Será que ali tem 32 pontos mesmo? Como saber ao certo?
Administração Para certificar faz-se,
\begin{code}
Shell Script
grep '^...............................$' /etc/passwd | wc -c
Segurança 32

Arquivos

Processos no Linux
Colocar vários pontinhos, não é conveniente.
Shell Script
As chaves {}
• O Shell
• Shell Script Básico As ER facilitam este tipo de tarefa também. Colocando um número entre chaves "{}",
• Pipes
indica-se uma quantidade de repetições do caractere (ou metacaractere) anterior:
• Variáveis

O sed
> grep '^.\{31\}$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
\end{code}
Como as chaves fazem parte de um conjunto avançado de Expressões
Regulares ("extended"), então o egrep lida melhor com elas. Assim
\begin{code}
> egrep '^.{31}$' /etc/passwd
root:x:0:0:root:/root:/bin/bash

Para verificar,

> egrep '^.{31}$' /etc/passwd | wc -c


32

Salviano A. Leão – 188


As chaves também aceitam intervalos, sendo possível informar uma faixa de
repetições válidas. Para procurar por linhas que tenham entre 30 a 40 caracteres:

• Sumário > egrep '^.{30,40}$' /etc/passwd


root:x:0:0:root:/root:/bin/bash
Referências bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
Manuais sync:x:4:65534:sync:/bin:/bin/sync
Administração
libuuid:x:100:101::/var/lib/libuuid:
ntp:x:105:110::/home/ntp:/bin/false
Shell Script saned:x:114:127::/home/saned:/bin/false

Segurança

Arquivos
Se omitir o segundo número e manter a vírgula, fica uma faixa aberta, sem fim. Assim
Processos no Linux
pode se informar repetições de "no mínimo N vezes". Para obter as linhas que
Shell Script
• O Shell
possuem 80 caracteres ou mais:
• Shell Script Básico
• Pipes > egrep '^.{80,}$' /etc/passwd
• Variáveis gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
avahi-autoipd:x:117:132:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
O sed
speech-dispatcher:x:123:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh

E claro, essa repetição também pode ser usada para caracteres comuns ou outros
metacaracteres além do ponto. Que tal repetir uma lista? Um bom exemplo é procurar
os usuários que têm um UID ou GID com 4 dígitos ou mais:

> egrep '[0123456789]{4,}' /etc/passwd


sync:x:4:65534:sync:/bin:/bin/sync
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
kernoops:x:121:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
Salviano A. Leão – 189
Isso também pode ser feito de uma forma mais simples:

> egrep '[0-9]{4,}' /etc/passwd


sync:x:4:65534:sync:/bin:/bin/sync
• Sumário nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
Referências salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
kernoops:x:121:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
Manuais

Administração

Shell Script O curinga .* (AND)


Segurança Quando se procura por dois trechos específicos numa mesma linha, não importando o
Arquivos
que há entre eles, usa−se o curinga ".*"para significar "qualquer coisa". Um exemplo é
Processos no Linux
procurar os usuários que começam com r, s ou p e usam o shell bash:
Shell Script
• O Shell
• Shell Script Básico > egrep '^[rsp].*bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
• Pipes salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash
• Variáveis

O sed

O ou | (OR)
Para fazer o OR lógico, onde se procura por uma coisa ou outra, deve−se usar o pipe
"e delimitar as opções com os parênteses "()":

> egrep '^(salviano|nobody|root):' /etc/passwd


root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
salviano:x:1000:1000:Salviano de Araujo Leão,,,:/home/salviano:/bin/bash

A ER "x(ab|c)?y" localizará "xy", "xaby"ou "xcy"


Salviano A. Leão – 190
• Sumário

Referências

Manuais

Administração

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script
O sed
O sed
• SED
• awk

Salviano A. Leão – 191


SED

• Sumário
O que é o sed? O sed de fato possui características de:
Referências • um editor de textos, mas ele não é um;
Manuais

Administração • uma linguagem de programação, mas ele não é uma;


Shell Script
• um comando do UNIX, mas ele não é um.
Segurança

Arquivos De fato, devido a todas as suas características, pode-se dizer que ele é um pouco de
Processos no Linux tudo que foi citado e um pouco mais
Shell Script (Para maiores detalhes veja o site do Aurelio Marinho Jargas). É uma ferramenta
O sed muito útil, que permite ao usuário uma grande flexibilidade de uso.
• SED
• awk
Referências:

• http://sed.sourceforge.net/

• http://aurelio.net/sed/

• http://aurelio.net/sed/1liners-ptBR.txt

Salviano A. Leão – 192


Sintaxe do sed

• Sumário
A sua sintaxe básica é a seguinte:
Referências # sed ' express ão ' arquivo
Manuais

Administração Com o SED é possível substituir e “casar” padrões, sempre por meio de Expressões
Shell Script Regulares. O SED lê um arquivo, linha por linha, e aplica a expressão do parâmetro
Segurança passado a cada uma das linhas.
Arquivos

Processos no Linux

Shell Script

O sed
• SED
• awk

Salviano A. Leão – 193


Funções do sed

• Sumário Operador Nome Função


Referências a append anexa um texto após o [BUFFER]
Manuais b branch pula até uma marcação
Administração c change troca o [BUFFER] por um texto
Shell Script d delete apaga o [BUFFER]
Segurança D delete apaga a primeira linha do [BUFFER]
Arquivos e execute executa um comando do sistema #GNU-sed
Processos no Linux
F filename imprime o nome do aquivo atual #GNU-sed
Shell Script
g get copia texto do [RESERVA] pro [BUFFER] (sobrescreve)
O sed
G get copia texto do [RESERVA] pro [BUFFER] (anexa)
• SED
• awk h hold copia texto do [BUFFER] pro [RESERVA] (sobrescreve)
H hold copia texto do [BUFFER] pro [RESERVA] (anexa)
i insert insere um texto antes do [BUFFER]
l list imprime o [BUFFER] mostrando caracteres invisíveis
n next carrega a próxima linha no [BUFFER]
N next anexa a próxima linha no [BUFFER]
p print imprime o conteúdo do [BUFFER]
P print imprime a primeira linha do [BUFFER]
q quit imprime o [BUFFER] e finaliza o Sed
Q quit descarta o [BUFFER] e finaliza o Sed #GNU-sed

Salviano A. Leão – 194


• Sumário Operador Nome Função
Referências r read mostra conteúdo do arquivo após o [BUFFER]
Manuais R read mostra uma linha do arquivo após o [BUFFER] #GNU-sed
Administração s substitute substitui um trecho de texto por outro
Shell Script t tee pula na marcação, se um s/// funcionou
Segurança
T tee pula na marcação, se nenhum s/// funcionou #GNU-sed
Arquivos
v version aborta se a versão do sed for incompatível #GNU-sed
Processos no Linux
w write grava o [BUFFER] num arquivo
grava a 1a¯ linha do [BUFFER] num arquivo #GNU-sed
Shell Script
W write
O sed
• SED
x eXchange troca os conteúdos do [BUFFER] e [RESERVA]
• awk y ? troca caracteres
z zap limpa o conteúdo do [BUFFER] #GNU-sed

Nota:

[BUFFER - ] Buffer padrão do sed (pattern space).

[RESERVA - ] Buffer reserva do sed (hold space)

Salviano A. Leão – 195


Endereço

• Sumário O endereço não é um comando, mas sim o seu contexto. É o elemento que diz
Referências exatamente em quais linhas um comando, ou bloco deles, deverá ser aplicado.
Manuais
O QUE FAZER ---> comando
Administração

Shell Script ONDE FAZER


Segurança
---> endere ç o
Arquivos

Processos no Linux
Há três tipos de endereços:
Shell Script

O sed 1. Endereço pelo número da linha;


• SED
• awk 2. Endereço pelo conteúdo da linha;

3. Endereço múltiplo, que abrange mais de uma linha.

Um endereço sempre aponta para uma linha inteira.


Pode-se redefinir os três tipos de endereço e ilustrar como cada um deles é
interpretado pelo sed:

1. "Quero a linha número N";

2. "Quero a linha que contém a palavra ABCDE";

3. "Quero todas as linhas que estejam entre essas duas linhas".

Salviano A. Leão – 196


Como endereçar pelo número da linha

• Sumário
A maneira mais simples de se determinar um endereço é indicar diretamente sua
Referências
posição no arquivo, informando ao sed o número da linha à qual se quer aplicar o
Manuais
comando. Por exemplo, para apagar a 7a¯ linha de um arquivo:
Administração
# sed '7 d ' arquivo
Shell Script

Segurança Fácil, não? Observe que o espaço em branco entre o endereço e o comando é
Arquivos opcional, então também poderia ser ’7d’.
Processos no Linux

Shell Script
Como endereçar a primeira e/ou a última linha
O sed
• SED
• awk Para endereçar a primeira linha: 1. Para apagá-la?

# sed '1 d ' arquivo

O caractere especial de endereço: o cifrão $, representa a posição da última linha do


arquivo. Então é fácil apagar a última linha:

# sed '$ d ' arquivo

Note que em sistemas UNIX o uso das aspas simples é obrigatório. Sem elas o shell
tentaria expandir a variável ’$d’ e o sed receberia um comando vazio.

Salviano A. Leão – 197


linha que contém uma determinada palavra

• Sumário
Considere o seguinte arquivo
Referências > cat arq1 . txt
Manuais Cop é rnico 1473 1543
Administração
Galileu 1564 1642
Kleper 1571 1630
Shell Script
Newton 1643 1727
Segurança Laplace 1749 1827
Arquivos
Lagrange 1736 1813
Hamilton 1805 1865
Processos no Linux
Maxwell 1831 1879
Shell Script Planck 1858 1947
O sed
• SED Vamos retirar a linha com o Hamilton
• awk

# sed '/ Hamilton /d ' arq1 . txt


Cop é rnico 1473 1543
Galileu 1564 1642
Kleper 1571 1630
Newton 1643 1727
Laplace 1749 1827
Lagrange 1736 1813
Maxwell 1831 1879
Planck 1858 1947

Salviano A. Leão – 198


Vamos apagar as linhas que contém 1643

# sed '/1643/d ' arq1 . txt


Cop é rnico 1473 1543
• Sumário Galileu 1564 1642
Referências
Kleper 1571 1630
Laplace 1749 1827
Manuais
Lagrange 1736 1813
Administração Hamilton 1805 1865
Shell Script Maxwell 1831 1879
Planck 1858 1947
Segurança

Arquivos
Com uma pequena ajuda de uma ER
Processos no Linux

Shell Script # sed '/1.43/d ' arq1 . txt


O sed
Galileu 1564 1642
• SED Kleper 1571 1630
• awk Laplace 1749 1827
Lagrange 1736 1813
Hamilton 1805 1865
Maxwell 1831 1879
Planck 1858 1947

Vamos apagar as linhas entre Kleper e Newton:

# sed '/ Kleper / ,/ Newton /d ' arq1 . txt


Cop é rnico 1473 1543
Galileu 1564 1642
Laplace 1749 1827
Lagrange 1736 1813
Hamilton 1805 1865
Maxwell 1831 1879
Planck 1858 1947 Salviano A. Leão – 199
Para gerar uma listagem com o nome de “Newton” repetido três vezes faça:

# sed '/ Newton / p ; / Newton / p ; / Newton /p ' arq1 . txt


Cop é rnico 1473 1543
• Sumário Galileu 1564 1642
Referências
Kleper 1571 1630
Newton 1643 1727
Manuais
Newton 1643 1727
Administração Newton 1643 1727
Shell Script Newton 1643 1727
Laplace 1749 1827
Segurança
Lagrange 1736 1813
Arquivos Hamilton 1805 1865
Processos no Linux Maxwell 1831 1879
Planck 1858 1947
Shell Script

O sed
• SED Mas ficar repetindo, um comando não é conveniente, então podemos agrupá-lo da
• awk seguinte forma

# sed -n '/ Newton /{ p ; p ; p ;} ' arq1 . txt


Newton 1643 1727
Newton 1643 1727
Newton 1643 1727
Newton 1643 1727

Um bloco está sempre associado a um endereço, e a chave de fechamento


"}" é como se fosse um comando do sed, devendo portanto ser separada de
outros comandos com ponto-e-vírgula ";". Ao fechar o bloco, coloque sempre
um ; antes da "}".
Salviano A. Leão – 200
Exemplos: com metacaracteres
Considere agora o caso em que você deseja quais os físicos que morreram no século
XVII, e para isso faça
• Sumário

Referências # sed -n '/^.*16[0 -9]\{2\} $ / p ' arq1 . txt


Galileu 1564 1642
Manuais
Kleper 1571 1630
Administração

Shell Script
Note que o metacaractere * é guloso e vai até o final da frase. Por sua vez a ER
Segurança
\{2\} significa o número de vezes que ele poderá casar com o caractere anterior e
Arquivos
nesse caso um número decimal.
Processos no Linux
Poderíamos usar o metacaractere \+, que significa casar uma ou mais vezes, assim,
Shell Script
teríamos
O sed
• SED
# sed -n '/^.*16[0 -9]\+ $ / p ' arq1 . txt
• awk
Galileu 1564 1642
Kleper 1571 1630

Considere agora o caso em que você deseja quais os físicos que nasceram no século
XVIII, e para isso faça

# sed -n '/^.*17[0 -9]\{2\}.*[0 -9]\{4\}/ p ' arq1 . txt


Laplace 1749 1827
Lagrange 1736 1813

# sed -n '/^.*17[0 -9]\+.*[0 -9]\{4\}/ p ' arq1 . txt


Laplace 1749 1827
Lagrange 1736 1813

Salviano A. Leão – 201


Como endereçar um trecho entre duas linhas
Para apagar da linha 5 à linha 10 de um arquivo? Um modo braçal seria

• Sumário # sed '5 d ; 6 d ; 7 d ; 8 d ; 9 d ; 10 d ' arquivo


Referências

Manuais
A melhor forma é:
Administração
# sed '5 ,10 d ' arquivo
Shell Script

Segurança Então agora podemos misturar todos os tipos de endereço. Veja os exemplos:
Arquivos
1 ,/ Newton /
Processos no Linux
7,$
Shell Script / Galileu / , $
O sed / Kleper / ,/ Lagrange /
• SED 1,$
• awk

Como endereçar um trecho entre duas linhas, excluindo-as Para tal considere o
arquivo numeros.txt (que vai de um a dez):

# sed -n '1 , $p ' numeros . txt


um
dois
tr ê s
quatro
cinco
seis
sete
oito
nove
dez
Salviano A. Leão – 202
Para destacar tudo entre as linhas que contiverem um e cinco, incluindo as próprias
linhas delimitadoras, temos:

# sed '/ um / ,/ cinco / s /^/ - - -/ ' numeros . txt


• Sumário
--- um
Referências --- dois
Manuais --- tr ê s
--- quatro
Administração
--- cinco
Shell Script seis
Segurança sete
oito
Arquivos
nove
Processos no Linux dez
Shell Script

O sed Mas, se quisermos excluir as linhas delimitadoras, devemos tratá-las individualmente,


• SED
• awk
dentro de um bloco:

# sed '/ um / ,/ cinco / {/ um / b ; / cinco / b ; s /^/ - - -/ ;} ' numeros . txt


um
--- dois
--- tr ê s
--- quatro
cinco
seis
seis
sete
oito
nove
dez

Salviano A. Leão – 203


• Sumário
Mais detalhadamente:
Referências / um / ,/ cinco / {
Manuais / um / b
Administração
/ cinco / b
s /^/ - - -/
Shell Script

Segurança ;#
Arquivos
;#
;#
Processos no Linux
;#
Shell Script ;#
O sed ;#
• SED }
• awk

Entre a linha ’um’ e a linha ’cinco’ . . . faça:

Se for a linha ’um’, salte para o fim do script e processe a próxima linha (ou
seja, não faça nada nesta) se for a linha ’cinco’, salte para o fim do script e
processe a próxima linha (ou seja, não faça nada nesta) nos outros casos,
coloque ’- - -’ no começo da linha.

Salviano A. Leão – 204


Como negar um endereço, não aplicando comandos nele
Assim como podemos definir um endereço para aplicação de um comando, também
podemos determinar que um comando não seja aplicado nesse endereço, ou seja, que
• Sumário
o comando se aplica a todas as linhas menos aquela.
Referências
Por exemplo, para apagar todas as linhas do arquivo menos a linha 7:
Manuais

Administração $ sed '7! d ' arquivo


Shell Script

Segurança O modificador de endereço é o caractere "!"que é responsável pela negação do


Arquivos endereço.
Processos no Linux

Shell Script Exemplo:


O sed
• SED # sed -n '/ dois / ,/ cinco / !p ' numeros . txt
• awk um
seis
sete
oito
nove
dez

O mesmo vale para um bloco de comandos e para um endereço duplo:

/ padr ã o /! { p ; d ; }
/ padr ã o1 / ,/ padr ã o2 /! { p ; d ; }

Com blocos, a leitura fica: "Aplique os comandos do bloco em TODAS as linhas


EXCETO as do endereço".
Salviano A. Leão – 205
• Sumário
Em outro exemplo, vamos emular o comando head do UNIX, que imprime as 10
Referências
primeiras linhas de um arquivo. Uma das possibilidades seria esta:
Manuais
# sed '11 , $ d ' arquivo
Administração

Shell Script apague da linha 11 até o fim do arquivo.


Segurança Ou então, usando o modificador !, podemos inverter a lógica e fazer assim:
Arquivos
# sed '1 ,10! d ' arquivo
Processos no Linux

Shell Script
apague todas as linhas EXCETO da linha 1 até a 10
O sed
• SED
• awk
Interrompendo o processamento

Imprimindo apenas as 10 primeiras linhas do arquivo:

sed '10 q ' arquivo ao chegar na linha 10 , pare .

Ou ainda, para obter apenas os cabeçalhos de uma mensagem de e-mail, que são
separados do corpo da mensagem por uma linha em branco:

sed '/^ $ /q ' pare na primeira linha em branco que achar

Salviano A. Leão – 206


Exemplos

• Sumário # sed '1 ,/ co /{ / o / s /^/ - - -/ ; } ' numeros . txt


Referências um
Manuais
--- dois
tr ê s
Administração
--- quatro
Shell Script --- cinco
Segurança
seis
sete
Arquivos
oito
Processos no Linux nove
Shell Script dez
O sed
• SED Um outro exemplo,
• awk
# sed '1 ,/ e$ /{ / s / s /^/ - - -/ ; } ' numeros . txt
um
--- dois
--- tr ê s
quatro
cinco
--- seis
--- sete
oito
nove
dez

Salviano A. Leão – 207


Para tarefas como extração de dados, onde se busca apenas a primeira ocorrência e
nada mais, o comando de interrupção de processamento pode ser utilizado.
• Sumário Coloque num bloco o comando desejado e a interrupção. Como a interrupção só pode
Referências ser executada uma vez, está feito nosso "condicional"para obter apenas o primeiro.
Manuais Exemplo: extrair do arquivo apenas a primeira linha com a letra "o":
Administração
# sed -n '/ o /{ p ; q ; } ' numeros . txt
Shell Script
dois
Segurança

Arquivos Para extrair as primeiras linhas diferentes de uma linha em branco:


Processos no Linux
sed '/^ $ /q ' arquivo
Shell Script

O sed
• SED
Traduzindo: "Ao encontrar a primeira linha em branco do arquivo, saia".
• awk

> sed 's/a/X/3g' <<< abracadabra


abracXdXbrX
> sed 's/mar/terr/' <<< Maremoto
Maremoto
> sed 's/mar/terr/I' <<< Maremoto
terremoto
> sed 's/.*/&-&/' <<< quero
quero-quero
> echo "A física computacional é dez" | sed -r 's/([a-z]{6})
֒→ ([a-z]{13})/\2 \1/'
A computacional física é dez
> sed -r 's#^([0-9]{2})/([0-9]{2})/([0-9]{1,})#\3/\2/\1#' <<< $(date
֒→ +"%d/%m/%Y")
2017/04/03
Salviano A. Leão – 208
Inserindo Linhas

Inserindo uma linha


> seq 5 | sed '2,4c Subst.
• Sumário ֒→ linhas 2 a 4'
> seq 5 | sed '3a3,5' 1
Referências
1 Subst. linhas 2 a 4
Manuais 2 5
Administração 3
3,5
Shell Script
4
Segurança 5 Para inserir espaços em branco
Arquivos

Processos no Linux > seq 5 | sed '3a\ 3,5'


1
Shell Script
> seq 5 | sed '3i2,5' 2
O sed
1 3
• SED 3,5
• awk 2
2,5 4
3 5
4
5

> seq 5 | sed -r


֒→ '3a\3,5\n3,4\n3,3'
1
> seq 5 | sed '3c Nova Linha
2
֒→ 3'
3
1
3,5
2
3,4
Nova Linha 3
3,3
4
4
5
5
Salviano A. Leão – 209
• Sumário
> dpkg -l "*maxima*" | sed -n '/^ii/ p' | sed 's/^ii *\([a-z,-]*\)
Referências
֒→ *\(.*\)/sudo apt-get install -y \1/g'
Manuais

Administração > dpkg -l "*maxima*" | sed -n '/^ii/ p' | sed -r 's/^ii *([a-z,-]*)
֒→ *(.*)/sudo apt-get install -y \1/g'
Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script

O sed
• SED
• awk

Salviano A. Leão – 210


• Sumário

Referências

Manuais

Administração

Shell Script

Segurança

Arquivos

Processos no Linux

Shell Script
O awk
O sed

Salviano A. Leão – 211


Introdução

• Sumário
O awk é uma linguagem procedural (ou imperativa) interpretada. As suas vantagens
Referências
em relação as compiladas são:
Manuais
• se for necessário fazer frequentemente alterações em vários arquivos texto, onde
Administração
quer que seja que certos padrões apareçam;
Shell Script

Segurança • se for necessário extrair dados de algumas linhas de um arquivo enquanto o resto é
Arquivos descartado.
Processos no Linux
Ou seja, com awk é possível gerenciar tarefas simples de "reformatar dados"com ape-
Shell Script
nas algumas linhas de código.
O sed
Função básica do awk é procurar por linhas (ou outras unidades de texto) em arquivos
que possuem certos padrões especificados no programa; para cada "padrão"(pattern)
deve haver uma ação associada, isto é, quando uma linha corresponde a um dos pa-
drões, awk realiza a ação especificada naquela linha; depois, awk continua proces-
sando as linhas de entrada desta maneira até encontrar o fim do arquivo de entrada;
o conjunto de comandos "padrão-ação"pode aparecer literalmente como um programa
ou em um arquivo específico com a opção -f "; arquivos de entrada são lidos em ordem;
se não há arquivos, a entrada padrão é lida.

Salviano A. Leão – 212


Executando um Programa awk
Existem várias maneiras de executar um programa awk.
Se o programa é pequeno, é mais fácil incluí-lo no comando de execução. Por
• Sumário
exemplo:
Referências

Manuais
awk '<Programa>' <Arq1Entrada> <Arq2Entrada> ...
Administração

Shell Script

Segurança
<programa> consiste numa série de padrões e ações. Este comando é usado quando
Arquivos
programas simples são escritos no momento que se deseja utilizá-los. Este formato de
Processos no Linux comando instrui o shell, ou interpretador de comandos, para iniciar o awk e usar o
Shell Script programa para processar registros nos arquivos de entrada. As aspas simples em
O sed torno do programa instruem o shell para: não interpretar os caracteres awk como
caracteres especiais do shell; e tratar todo o programa como um único argumento para
awk e permitir que o programa tenha mais do que uma linha.
Também é possível executar o awk sem arquivos de entrada. Neste caso, quando se
digita a linha de comando:

awk PADRAO ACAO

Salviano A. Leão – 213


Quando o awk encontra um padrão na busca ele executa a ação padrão que é imprimir
o registro inteiro que é $0
• Sumário
awk '/pattern/'
Referências

Manuais

Administração O awk aplica o programa à entrada padrão, o que significa que tudo que for digitado no
Shell Script terminal até que seja pressionado CTRL+d. O exemplo a seguir copia os caracteres
Segurança digitados para a saída padrão.
Arquivos

Processos no Linux > awk '{ print }'


Shell Script
Este eh um exemplo
Este eh um exemplo
O sed
da utilizacao do awk!
da utilizacao do awk!
Fim!
Fim!
> _

Salviano A. Leão – 214


Variáveis do awk

• Sumário Variável Descrição


Referências NR contém o número do registro atual
Manuais NF contém o número de registros por campo
Administração FS indica o separador de campos
Shell Script RS indica o separador de registros
Segurança OFS indica o separador de campo do arquivo de saída
Arquivos ORS indica o separador de registros do arquivo de saída
Processos no Linux

Shell Script

O sed

Salviano A. Leão – 215


Exemplo de Bloco

• Sumário
> awk 'BEGIN {print "Nome Nasce Morre"}
Referências
֒→ {print } END {print "Numero total ", NR }' arq1.txt
Manuais Nome Nasce Morre
Administração Nicolau Copérnico 1473 1543
Galileu Galilei 1564 1642
Shell Script
Johannes Kepler 1571 1630
Segurança René Descartes 1596 1650
Arquivos Blaise Pascal 1623 1662
Processos no Linux
Isaac Newton 1643 1727
Pierre Simon Laplace 1749 1827
Shell Script
Joseph Louis Lagrange 1736 1813
O sed Benjamin Franklin 1706 1790
Charles Augustin de Coulomb 1736 1806
Michael Faraday 1791 1867
William Rowan Hamilton 1805 1865
William Thomson 1824 1907
James Clerk Maxwell 1831 1879
Max Karl Ernst Ludwig Planck 1858 1947
Albert Einstein 1879 1955
Heinrich Rudolf Hertz 1857 1894
Jules Henri Poincaré 1854 1912
Hendrik Antoon Lorentz 1853 1928
Wilhelm Conrad Röntgen 1845 1923
Numero total 20

Salviano A. Leão – 216

Você também pode gostar