Você está na página 1de 22

Relance Comandos Linux.

Professor Eduardo Vieira


eduardo.barbosa@ifb.edu.br 1

Recursos do Terminal ................................................8


Gerenciamento de Pacote ..........................................9
Processo & Memria ..................................................9
Usurio & Grupos ....................................................10
Propriedade & Permisso........................................10
RELANCE Configurao & Hardware......................................10

Comandos Linux
Sistema .......................................................................11
Tela & Temporizador...............................................12
Localizadores ............................................................12
Repetidores................................................................12
Expresso e Aritmticos ..........................................13
Arquivos de Configurao......................................14
As pessoas aceitaro sua idia muito mais facilmente se voc Variveis de Ambiente ............................................15
disser a elas que quem a criou foi Albert Einstein.
Lei de Comim
Smbolos do Shell .....................................................15
Shell Script.................................................................18
Outras Linguagens ...................................................22

Prefcio
O objetivo proposto por este texto tcnico de auxiliar na
compreenso e utilizao dos comandos Linux, alm de
Tabela de Termos
constituir uma referncia para consultas rpidas sempre que Argumento: valor de referncia a ser trabalho pelo programa.
for necessrio. Dado tal sentido justifica a forma da Background: plano de fundo ou segundo plano.
abordagem que tender a ser resumida, qualquer
Backspace: tecla que excluir caracteres.
alongamento do texto suficientemente conveniente para
destacar elementos ou aspectos fundamentais. Concatenar: ato de unir duas ou mais parte em apenas uma.
Comando: programa invocado via terminal.
O presente trabalho organizado a informar os termos Distro: abreviao de distribuio Linux.
aplicados a este texto, a instruir o formato empregado, os Foreground: plano de frente ou primeiro plano.
modos de execuo e acesso, orientar sobre o ambiente de
GID: Group Identification (Identificador do Grupo).
teste e na sequncia os comandos so categorizados por
finalidade - nos casos de mais de uma natureza Home: diretrio pessoal do usurio.
permanecer a dominante. Todos os comandos so Interpolar: intercalao de partes literais com as de
exemplificados seguidos de pelo menos um exemplo para significncia de execuo.
ilustrar a forma de utilizao. A ltima grande parte discorre Lao: sinnimo de Loop.
sobre arquivos de configurao, varivies de configurao e Literal: sinnimo de String.
o shell nos seus elementos referentes a smbolos e a Loop: Execuo repetitiva de comando at o alcance de
linguagem. determinada condio ou esgotamento de valores.
Opo: mecanismo que mudar o comportamento padro de
um programa.

Contedo PCI: Peripheral Component Interconnect (Interconexo de


Componentes Perifricos).
PID: Process Identification (Identificador do Processo).
Tabela de Termos ....................................................... 1
PGID: Process Group Identification (Identificador do Grupo do
Compreender o Formato........................................... 2 Processo).
Recursividade: ao de operar sobre si mesmo.
Modo de Execuo e Acesso..................................... 2
Regex: abreviao inglesa de expresso regular.
Ambiente de Teste ..................................................... 3 Root: administrador (super usurio) de sistema operacional do
tipo Linux.
Manuais ....................................................................... 3
Sintaxe: forma convencionada.
Arquivo & Diretrio .................................................. 3

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 2

SO: abreviao de Sistema Operacional. prximo exemplo do comando cp possivelmente no ter o


String: conjunto de caracteres. arquivo chamado file1 no diretrio corrente, logo para
Wildcard: caracter curinga para representar um ou mais
viabilizar o teste necessrio criar tal arquivo e depois
caracteres. proceder com o teste:
^ (Acento Circunflexo): representa a tecla CTRL.
$ touch file1 # Criado arquivo file1 vazio.
$ cp file1 file1.backup #Realizando o teste.

Compreender o Formato Ao executar o comando apt-get com o argumento scribus,


no significa que voc tenha o pacote scribus instalado em
Por se tratar de um guia rpido a forma resumida a seu sistema operacional e os valores dos argumentos nos
prevista e conhecida para este tipo de texto. O exemplos no so absolutos, voc poder mud-los, desde
entendimento sobre o formato da sintaxe dos comandos e que respeite o tipo de valor esperado:
exemplos precisam ser compreendidos neste momento para
evitar desentendimentos ou equvocos. $ apt-get purge scribus

Todo comando tem uma sintaxe a ser seguida, seja simples Ao ltimo ponto que no sero abordadas todas as opes
ou um pouco mais complexa. Alguns comandos no de todos os comandos apresentados, apenas as mais
necessitam de opo ou argumento, como o caso do pwd e importantes, usuais e/ou interessantes. Caso queira saber
do clear. Para utiliz-los basta digitar no terminal: mais sobre determinado comando utilize o comando man.

$ pwd
$ clear
Modo de Execuo e Acesso
Outros comandos recebem somente opes ou no. Se a Existem dois modos bsicos relativos a operao de um
utilizao de opes for facultativo, ento ela aparecer programa ou acesso arquivos e dispositivos, sendo elas na
entre colchetes para indicar visualmente como visto abaixo forma limitada ou privilegiada.
para o comando free:
As aes sobre objetos do prprio usurio ou programas
free [opes] que lem dados do sistema operacional sem provocar
qualquer anormalia ou violao de segurana e a alterao
Existem outros comandos, que alm das opes tambm de configurao de conta ou da sesso podem ser realizados
recebem argumentos. O comando cp, por exemplo, recebe na forma limitada. Observe que para indicar tal modo
dois argumentos obrigatrios, sendo o primeiro o recurso usado o smbolo "$" (cifro) no incio da linha de comandos,
alvo e o outro a localizao que ser enviado a cpia do como ser percebido nos exemplos adiante.
recurso. Para indicar essa sintaxe posta seguinte na forma:
Outras aes como alterao de parmetros, argumentos ou
cp [opes] recurso destino mudana do sistema de permisso de determinado objeto
de outro usurio, renicializao e desligamento do
Observe que o argumento esperado disposto na forma computador, alterao do estado ou mudana da prioridade
nomeada, ao invs de chamar arg1 e arg2, assim foi de processos ou monitoramento de recursos restritos so
colocado como recurso e destino para refletir o tipo de valor viveis atravs do acesso privilegiado, tambm chamado de
correto esperado pelo programa. modo root (Super Usurio). O smbolo "#" (cerquilha) no
incio da linha de comandos representa esse modo elevado.
Alguns programas no exigem qualquer tipo de opo,
apenas esperado um argumento ou mais, por exemplo, o Tenha em mente que os smbolos tratados so convenes,
type, que tem como nica entrada o nome de qualquer mas que podem ser alterados nos arquivos de configurao
programa: do sistema ou nas variveis de ambiente, alm de ser
possvel atravs do comando sudo adquirir
type programa temporariamente acesso ou execuo privilegiada estando
no modo limitado. Observe abaixo a ordem das partes e ao
Fique atento que todos os exemplos so ilustrativos, isto executar o comando dmidecode de acesso restrito atravs
no significa que ao executar no terminal, por exemplo, o do sudo ser exigido a senha do Super Usurio:
comando basename com o argumento /tmp/hello.odt ter
tal arquivo como visto abaixo: $ sudo dmidecode t 0

$ basename /tmp/hello.odt .odt

Voc poder criar tal arquivo para viabilizar a realizar do


teste do referido exemplo. Da mesma forma que no

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 3

Ambiente de Teste
Ex:
7. Semelhante ao exemplo 6, porm na forma resumida:
$ man -k '^[a-z][0-9].$'
Ex:
8. Localiza apenas os nomes dos manuais que tenham
Se esta for a sua primeira vez ou no senti-se seguro para correspondncia de acordo com a expresso regular:
realizar os exemplos expostos, ento utilize uma mquina $ man --names-only --regex '^[0-9].+'
virtual ou um computador sem uso cotidiano. Entre as duas Ex:
9. Encontra os nomes dos manuais correspondentes baseado no
opes, a forma mais comum a utilizao de ambiente wildcard interrogao:
virtualizado, pois qualquer falha que prejudicaria o correto $ man --names-only --wildcard 'c?t'
funcionamento ficar isolado dentro do prprio sistema
operacional virtualizado.

O VirtualBox, VMware e Virtual PC so os mais populares


Arquivo & Diretrio
para suportar plenamento o processo de virtualizao. Ao basename caminho [sufixo] Imprime a ltima parte do
preparar uma mquina virtual sempre tire uma cpia dela caminho.
no final do processo de criao, isto ser bem til quando Ex:
1. Imprimi o nome do ltimo diretrio, a sada do comando
qualquer erro acontecer, pois poder substituir o arquivo do bin:
sistema operacional com problemas pela cpia anterior sem $ basename /usr/bin
2. Mostra o nome do arquivo sem a extenso odt:
Ex:
grande dificuldades, alm de evitar todo o processo de
instalao e configurao que j foi realizado. $ basename /tmp/utf8.odt .odt
Ex:
3. Equivalente ao exemplo 2:
Prefira realizar os testes nas distribuies Debian, tais como $ basename s .odt /tmp/utf8.odt
Ex:
Ubuntu, Mint, Zorin, Peppermint, alm do prprio. No site 4. Suporte para vrios caminhos de uma nica vez:
http://www.distrowatch.com dispem em sua pgina inicial $ basename -a /tmp/brasero /home/he-man
100 distribuies Linux para download. Sempre observe a
questo da arquitetura, pois importante para o sucesso no base64 [opes] [arquivo] Codifica e decodifica uma
processo de virtualizao ou instalao fsica. entrada de dados ou um arquivo para texto.
Ex:
1. O executvel do Doro PDF convertido para texto simples
(codificar), assim possvel trafegar o arquivo por canais que
Os exemplos desenvolvidos nesta obra foram realizados
possuam filtros de segurana, por exemplo servios de e-mail:
sobre o bash, Bourne Again Shell, logo no existem garantias $ base64 doro-pdf.exe > /tmp/doro.txt
do correto funcionamento em outros shells como Korn, C Ex:
2. Revertendo o processo do exemplo anterior (decodificar):
Shell ou Z Shell. Caso no tenha o bash, instale-o atravs do $ base64 d /tmp/doro.txt > /tmp/doro.exe
seu gerenciador de pacotes da distribuio escolhida, outra Ex: 3. Codificando e decodificando um arquivo PDF. A forma longa
forma de obter a partir do endereo eletrnico: de -d --decode:
http://ftp.gnu.org/gnu/bash. $ base64 bash-guide.pdf > guide
$ base64 --decode guide > bg.pdf
4. Com strings, tambm, possvel realizar o mesmo processo:
Ex:

Manuais $ echo Arch Enemy | base64

info [opes] [item] Imprime o documento Info do cat [opes] arquivo Visualiza o contedo do arquivo.
1. Imprime o texto do arquivo /etc/apt/source.list:
Ex:
comando.
$ cat /etc/apt/source.list
1. Realiza a sada do manual do programa ifconfig:
Ex:

2. Imprime em tela o contedo do arquivo /etc/aliases com


Ex:
$ info ifconfig
enumerao das linhas do texto:
man [opes] comando Renderiza o manual de referncia $ cat n /etc/aliases
Ex:
de um programa. 3. Apresenta em sequncia o contedo dos arquivos (operao
1. Mostra o manual de uso do programa stat:
Ex: de concatenao) authors.txt, publishers.txt e readers.txt:
$ man stat $ cat authors.txt publishers.txt readers.txt
2. Busca na descrio de todos os manuais pela palavra process
Ex:

(processo): chattr [opes] atributos arquivo Altera os atributos do


$ man k 'process' arquivo.
1. Torna o arquivo config imutvel:
Ex:
Ex:
3. Pela fora bruta faz uma busca global pela palavra-chave
$ chattr +i config
memory e apresenta em sequncia o manual que tenha
2. Remove o atributo de apendamento do arquivo sum:
Ex:
correspondncia:
$ man K memory $ chattr a sum
Ex:
4. Faz breve descrio do programa a2p:
Ex:
3. Remove o atributo de imutabilidade, efeito contrrio do
$ man f a2p exemplo 1:
$ chattr i config
5. Imprime na tela o caminho do manual do programa gcc:
Ex:
Ex:
$ man wW gcc 4. Aplica o atributo de apendamento de forma recursiva sobre o
Ex:
6. Realiza busca nos nomes ou descries dos manuais baseado diretrio files:
$ chattr -R +a files
em expresso regular:
$ man --regex '^[a-z][0-9].$'

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 4

cp [opes] recurso destino Copia arquivos e diretrios. $ cut -d ';' -f 4- --output-delimiter=" " <<FILE
1. Realiza uma cpia do arquivo file1 para o nome file1.backup:
Ex: > This;is;text;test;for;command;cut.
$ cp file1 file1.backup > Virtual;file;by;here;document.
> FILE
2. Copia recursivamente o diretrio dir2 para /tmp:
Ex:

$ cp R dir2 /tmp
Ex:
du [opes] [recurso] Estima o espao usado pelo arquivo.
3. Em modo incremental solicita confirmao antes de 1. Calcula o tamanho do diretrio /bin em megabytes:
Ex:

sobrescrever o arquivo screen, caso exista em ~/others: $ du m /bin


$ cp -i /tmp/screen ~/others
2. Imprime o tamanho em bytes do arquivo hostname em /etc:
Ex:

4. Cria um hard link do arquivo file em home de nome hx:


Ex:
$ du -b /etc/hostname
$ cp l /tmp/file ~/hx Ex:
3. Exibe no formato legvel para humanos a quantidade da
5. Preserva o arquivo heros caso ele exista no local de destino:
Ex:
medida do arquivo /etc/passwd:
$ cp n /tmp/heros ~/heros $ du -h /etc/passwd
6. Cria um link simblico de nome tomcat do arquivo tomcat7:
Ex: Ex:
4. Apresenta o sumrio final legvel para humanos referente ao
$ cp s tomcat7 tomcat diretrio /opt:
7. Imprime em tela quais arquivos com a extenso php foram
Ex:
$ du s /opt
copiados para o diretrio backup: Ex:
5. No inclui na contagem subdiretrios, apenas os arquivos
$ cp v *.php backup/ presentes na raiz de /usr:
8. Copia todos os arquivos do diretrio files que comecem com
Ex:
$ du S /usr
"0", "1" ou "2" seguindos de "a", "b" ou "c" para a pasta moved: Ex:
6. Excluir da contagem os arquivos e diretrios que contenham
$ cp files/[0-2][a-c]* moved .config em /etc:
9. Reproduz os arquivos com a extenso doc do diretrio articles $ du --exclude=*.config /etc
Ex:

para magazine: Ex:


7. Ignora na contagem qualquer arquivo ou diretrio que tenha
$ cp articles/*.doc magazine/ algum nmero em /etc:
Ex:
10. Copia os arquivos que comecem com a letra "a" seguido de $ du --exclude=*[0-9]* /etc
"0", "1" ou "2" e de extenso txt para a pasta boards: Ex:
8. Ignora na contagem os diretrios que sejam .cache, .local e
$ cp files/a[0-2]*.txt boards .config em home:
11. Reproduz para o diretrio masters os arquivos de /tmp que
Ex:
$ du --exclude=.{cache,local,config} ~
no tiverem a extenso odt:
$ cp /tmp/!(*.odt) masters file [opes] arquivos Determina o tipo do arquivo.
1. Mostra o tipo do arquivo ls presente em /bin:
Ex:
12. Faz cpia para planets os arquivos que tenham a extenso
Ex:

xml ou pdf que esto no diretrio descriptions: $ file /bin/ls


Ex:
$ cp descriptions/*.{xml,pdf} planets/ 2. Imprime as informaes sobre o tipo de todos os arquivos da
pasta /bin:
cut [opes] [arquivo] Extair determinadas partes do texto $ file /bin/*
de um arquivo. Ex:
3. Apresenta o mine do arquivo /bin/ls:
1. Seleciona do texto apenas o primeiro byte de cada linha:
Ex:
$ file i /bin/ls
$ cut -b 1 <<FILE Ex:
4. Apresenta em modo breve o tipo do arquivo /bin/gunzip:
> This is text test for command cut. $ file -b /bin/gunzip
> Virtual file by document here. Ex:
> FILE 5. Dispensa o processo de buffer para provocar a sada imediata
Ex:
2. Extrai do primeiro at o 18 byte: dos tipos dos arquivos em home que comecem com .gnome:
$ cut -b 1-18 <<FILE $ file -n ~/.gnome*
> This is text test for command cut.
> Virtual file by document here. grep [opes] padro [arquivo] Imprimi as linhas que
> FILE
Ex: correspondem a um padro.
3. Exibe do texto do 23 byte at o ltimo de cada linha: Ex:
1. Seleciona toda as linhas que contenham a palavra root do
$ cut -b 23- <<FILE
arquivo /etc/group:
> This is text test for command cut.
$ grep root /etc/group
> Virtual file by document here. Ex:
> FILE 2. Extrai as linhas que esto em caixa alta ou baixa que
4. Define como delimitador (opo "-d") entre campos o espao contenham a palavra reboot da sada do comando last:
Ex:

em branco e apresenta a primeira palavra de cada linha: $ last | grep i reboot


Ex:
$ cut -d ' ' -f 1 <<FILE 3. Exibe as linhas que correspondem a expresso regular:
> This is text test for command cut. $ grep e '^a.*[a-z]$' /etc/passwd
> Virtual file by here document. Ex:
4. Executa uma expresso regular extendida no texto do arquivo
> FILE
Ex: passwd em /etc:
5. Apresenta de cada linha o primeiro ao terceiro campo e tem
$ grep -E '^a.*[a-z]$|^b.+[0-9]' /etc/passwd
como delimitador o ponto-e-vrgula: Ex:
$ cut -d ';' -f 1-3 <<FILE 5. Realiza a seleo invertida, apenas as linhas que no
> This;is;text;test;for;command;cut. contenham a palavra root em /etc/passwd:
> Virtual;file;by;here;document. $ grep v root /etc/passwd
6. Imprime as linhas que contenham a palavra bash por inteiro
> FILE Ex:
Ex:
6. Extrai de cada linha o quarto campo em diante, toma como em /etc/bash.bashrc:
delimitador entre as palavras o ponto-e-vrgula e o delimitador $ grep -w bash /etc/bash.bashrc
entre os campos de sada permanece como espao em branco:

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 5

Ex:
7. Conta a quantidade de linhas correspondentes ao padro $ ln sf internet net
domain em /etc/hosts.deny: Ex:
4. Semelhante ao exemplo anterior, porm um link hard:
$ grep -c domain /etc/hosts.deny $ ln f internet net
8. Trata o arquivo binrio /bin/ls como texto e imprime as
Ex:
5. Pergunta se deseja remover o link de nome mint antes da
Ex:

ocorrncias correspondentes a linux: operao:


$ grep -a linux /bin/ls $ ln i distros mint
9. Exclui da pesquisa pela palavra host os arquivos que
Ex:
6. Gera um link simblico entre diretrios onde browser aponta
Ex:

comecem com o nome hosts em /etc: para chromium:


$ grep host --exclude=/etc/hosts* /etc/host* $ ln s chromium browser
10. Ignora da pesquisa pela palavra host os diretrios que
Ex:

comecem com a letra "b" em /etc: ls [opes] [arquivo] Lista o contedo do diretrio.
Ex:
$ grep host --exclude-dir=/etc/b* /etc/bash* 1. Mostra os objetos (arquivos e diretrios) da pasta corrente:
Ex:
11. Realiza uma busca recursiva em todos os arquivos de todos $ ls
diretrios em /etc pela palavra host: 2. Acrescenta a listagem os arquivos ocultos do diretrio home:
Ex:

$ grep -R host /etc $ ls a ~


3. Aplica aos itens da pasta /usr/bin caractere classificador:
Ex:

head [opes] [arquivo] Imprimi as primeiras linhas de um $ ls F /usr/bin


arquivo. 4. Lista apenas o nome dos subdiretrios em /etc:
Ex:

1. Seleciona as 5 primeiras linhas do arquivo shadow em /etc:


Ex:
$ ls -d /etc/*
$ head -5 /etc/shadow Ex:
Ex:
5. Apresenta a data completa com hora dos objetos do diretrio
2. Mostra as 10 primeiras linhas (comportamento padro) da atual:
sada do comando lspci: $ ls --full-time
$ lspci | head Ex:
Ex:
6. No imprime o nome dos objetos que comecem entre "d" a
3. Imprime os 3 primeiros bytes (equivale a 3 caracteres) do "f":
arquivo numerical: $ ls --hide=[d-f]*
$ head -c 3 numerical
7. Adiciona a listagem o inode dos objetos em home:
Ex:
Ex:
4. Imprime os 2 primeiros kilobytes (2048 caracteres) do $ ls -i ~
arquivo numerical: Ex:
8. Imprime todas as informaes como permisses, dono, grupo
$ head -c 2K numerical
e data de alterao/criao do objetos em /opt:
5. Os 10 primeiros megabytes de numerical:
Ex:
$ ls l /opt
$ head -c 10M numerical
9. Coloca todos os objetos selecionados em /bin entre vrgulas:
Ex:

6. Os 2 primeiros gigabytes de numerical:


Ex:
$ ls m /bin
$ head -c 2G numerical Ex:
10. Ao invs de apresentar o nome do dono e do grupo do
objeto so trocados por UID (User Id) e GID (Group Id) para os
less [opes] [arquivos] Realiza a paginao de sada de objetos de /lib:
dados com navegao. $ ls n /lib
1. Pagina o contedo do arquivo source.list em /etc/apt:
Ex:
11. Apresenta os arquivos de home na ordem inversa:
Ex:
$ less /etc/apt/source.list
$ ls n ~
Ex:
2. Pagina com o nmero da linha da impresso de dados do
12. Imprime todos os objetos em /etc de forma recursiva:
Ex:
comando lshw: $ ls R /etc
$ lshw | less N
13. Ordena os arquivos de /proc por extenso, tal opo
Ex:
Ex:
3. Aps a ltima pgina ocorre a sada sem a necessidade do uso
suportar outros valores de ordenao (none, time, size e version):
da tecla "q": $ ls -sort=extension /proc
$ lshw | less e Ex:
Ex: 13. Seleciona os objetos que comecem entre as letras "a" e "c"
4. Mostra no rodap o percentual ou bytes j paginados da
do diretrio /etc. Use optivamente a opo "d" para facilitar a
sada do comando ls:
visualizao:
$ ls /etc | less M
$ ls -d /etc/[a-c]*
Ex:
5. Destaca na sada as correspondncias de acordo com a Ex:
14. Imprime qualquer arquivos ou diretrio que tenha um
expresso regular:
nmero em seu nome:
$ ls /etc | less --pattern=l[aeiou].*[e-f]$
$ ls -d /etc/*[0-9]*
6. Ao encontrar vrias linhas em branco no arquivo blanks as
Ex:
Ex:
15. Apenas os arquivos comecem com a letra "r" e o final sejam
consideras como uma ao imprimir na tela:
um numeral entre "0" a "6" seguido de ponto e a letra "d":
$ less -s blanks
$ ls -d /etc/r*[0-6].d
Ex:
16. Apresenta os objetos que comecem com a letra "h", a
ln [opes] recurso alvo Cria links entre arquivos.
segunda posio podendo ser qualquer caractere e seguido de "st":
1. Cria um link do tipo simblico, onde file2 aponta para file1:
Ex:
$ ls -d /etc/h?st*
$ ln s file1 file2 Ex:
17. Comece com a letra "f", sendo a segunda, terceira e quarta
2. Cria um link do tipo hard, onde file2 apontam para o mesmo
Ex:
posio em aberto para qualquer caractere desde que seguido por
local no disco de file1:
"b":
$ ln file1 file2
$ ls -d /etc/f???b*
3. Fora a criao de um link simblico de nome net para o
Ex:

arquivo internet: lsattr [opes] [arquivo] Lista os atributos de arquivo.

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 6

1. Mostra os atributos do arquivo config: 5. No sobrescreve o arquivo existente no diretrio ~/test:


Ex: Ex:

$ lsattr config $ mv n /tmp/hello ~/test


Ex: Ex:
2. Imprime os atributos de todos os arquivos nos subdiretrios 6. Imprimi em tela a execuo da operao:
da pasta atual na forma recursiva: $ mv v files/*.xml /opt/files
$ lsattr -R
3. Inclui na listagem de atributos os arquivos ocultos em home:
Ex:
nl [opes] [arquivo] Enumera as linhas de um arquivo.
1. Enumera as linhas do contedo do arquivo cpuinfo em proc
Ex:
$ lsattr a ~
4. Lista os atributos do diretrio /etc:
Ex: na forma sequencial:
$ lsattr -d /etc $ nl /proc/cpuinfo
Ex:
2. Aplica a enumerao de linhas a sada de dados do programa
lsof [opes] [nomes] Lista os arquivos abertos. lsusb:
Ex: $ lsusb | nl
1. Apresenta todos os objetos em aberto pelo sistema:
Ex:
$ lsof 3. Posto em sequncia os arquivos so concatenados em apenas
Ex:
2. Seleciona todos os arquivos do processo de PID 5504: uma sada enumerada:
$ lsof p 5504 $ nl x/listone y/listtwo z/listtree
Ex:
Ex:
3. Lista todos os processos que comecem com letra "c": 4. Incrementa a enumerao das linhas 20 a 20 para o arquivo
$ lsof -c 'c' ~/.bashrc_history:
Ex: $ nl i 20 ~/.bashrc_history
4. Extende o exemplo anterior para as letras "c", "r" e "e": Ex:
$ lsof c 'c' c 'r' c 'e' 5. Aplica o separador ">>" entre o nmero da linha e o contedo
Ex:
5. Busca os nomes dos arquivos em aberto que correspondam a de /etc/hosts:
$ nl s ' >> ' /etc/hosts
palavra virtual. Coloque o termo entre barras, use "b" para Ex:
expresso regular bsica e "i" para insensvel a caixa: 6. Inicia a contagem das linhas a partir do nmero 4,
$ lsof c '/virtual/bi' comportamento padro iniciar de 1:
Ex: $ nl v 4 /etc/hosts
6. Seleciona as linhas correspondentes ao diretrio Ex:
/media/linux/HD1TB: 7. Altera a quantidade de colunas para 2 entre a esquerda e a
$ lsof +D '/media/linux/HD1TB' numerao do contedo de /etc/mime.types:
Ex: $ nl w 2 /etc/mime.types
7. Extrai as linhas da listagem dos recursos relacionados ao PGID
6857:
$ lsof -g '6857' rm [opes] recurso Remove arquivos e diretrios.
Ex:
Ex: 1. Exclui o arquivo teste da pasta atual:
8. Apresenta todos os arquivos relacionados com endereos da $ rm teste
Internet:
2. Remove na forma recursiva os objetos contidos em olds e
Ex:
$ lsof -i
depois ele prprio:
9. Imprime em tela os recursos vinculados ao usurio leonidas:
Ex:
$ rm r /tmp/olds
$ lsof u leonidas
3. Utiliza a fora bruta para realizar remoo de test . Faa uso
Ex:
Ex:
10. Use vrgula e sem espaos para referenciar mais de um da opo "r" para o caso do objeto ser um diretrio:
usurio: $ rm f ~/test
$ lsof u 'root,leonidas'
4. Solicita confirmao para excluir o arquivo a0.pdf em y:
Ex:
Ex:
11. Desabilita qualquer mensagem de aviso: $ rm -i y/a0.pdf
$ lsof -w
5. Remove apenas diretrios que estejam vazios em /tmp:
Ex:
Ex:
12. Faz a seleo de acordo com os PIDs e do nome do usurio: $ rm d /tmp/*
$ lsof -p '14009,6857,4650' -u root
6. Imprimi em tela quais foram os arquivos de extenso txt que
Ex:

foram removidos em ~/logs:


mkdir [opes] diretrios Cria diretrios. $ rm -v ~/logs/*.txt
1. Cria o diretrio de nome dir1:
Ex:
Ex:
$ mkdir dir1 8. Exclui os arquivos que comecem de "a" a "c" e tenham
extenso "xml" ou "pdf" da pasta atual:
2. Gera em sequncia os diretrios dirA, dirB e dirC:
Ex:
$ rm [a-c]*.{xml,pdf}
$ mkdir p dirA/dirB/dirC
Ex:
3. Apresenta uma mensagem de aviso ao trmino da operao: rmdir [opes] diretrios Remove diretrios vazios.
$ mkdir v ~/no-know
1. Exclui o diretrio empty de ~/personal:
Ex:

$ rmdir ~/personal/empty
mv [opes] recurso destino Move ou renomeia Ex:
2. Remove os diretrios na ordem de eua a americas:
arquivos. $ rmdir -p americas/norte/eua
1. Renomeia o arquivo file1 para file2:
Ex:

$ mv file1 file2 sort [opes] [arquivo] Ordena as linhas de um texto.


2. Move os arquivos file1, file2 e o diretrio dir3 para a pasta 1. Imprime em ordem alfabtica o texto do arquivo items.txt:
Ex: Ex:

dir4: $ sort items.txt


2. Ordena numericamente a sada do contedo de numbers:
$ mv file1 file2 dir3 dir4 Ex:
Ex:
3. Fora a operao sem confirmao antes de executar: $ sort n numbers
$ mv /tmp/environ ~/environ
Ex:
4. Solicita confirmao de execuo da operao antes split [opes] [arquivo] [prefixo] Quebra um arquivo em
sobrescrever arquivo lubuntu existente em /opt: vrias partes.
1. Divide o arquivo library.zip em partes de 20000000 bytes:
Ex:
$ mv i ~/lubuntu /opt

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 7

2. Apresenta a quantidade bytes de /etc/passwd:


Ex:
$ split b 20000000 library.zip
2. Divide o arquivo ansi.pdf em duas partes iguais com prefixo
Ex: $ wc c /etc/passwd
ansi e sufixo nmerico: 3. Conta a quantidade de palavras de /etc/passwd:
Ex:

$ split d n 2 ansi.pdf ansi $ wc w /etc/passwd

stat [opes] arquivo Lista os status do arquivo. zip [opes] [arquivo] Comprime e gerencia arquivo
1. Lista as informaes do arquivo iomem em /proc:
Ex:
zipado (compactado).
1. Use apenas zip para visualizar as opes rpidas de uso:
$ stat /proc/iomem Ex:

$ zip
Ex:
tail [opes] [arquivo] Imprimi as ltimas linhas de um 2. Inclui todos os arquivos do diretrio corrente na forma
arquivo (contrrio de head). compactada no arquivo files.zip. O acrscimo do sufixo zip
Ex:
1. Imprimi as 5 ltimas linhas do arquivo index.html em automtico:
/var/www: $ zip files *
Ex:
$ tail -5 /var/www/index.html 3. Seleciona e compacta todos os arquivos de texto dentro de
txts:
2. Mostra as 10 ltimas linhas da sada do comando lspci:
Ex:
$ zip txts *.txt
$ lspci | tail
4. Atravs da opo r possvel adicionar os diretrios e seus
Ex:

contedos a um arquivo compactado. O zipado netbeans criado


uniq [opes] [arquivo] Reporta ou omite linhas repetidas. dentro de /tmp:
1. Ignora todas as linhas prximas repetidas de hosts.log:
Ex:
$ zip r /tmp/netbeans ~/NetBeansProjects
$ uniq hosts.log 5. O smbolo -@ representa uma entrada de lista de arquivos. O
Ex:

2. Ignora em absoluto todas as linhas repetidas de accesses.log: programa find listar a partir de home todos os arquivos de final
Ex:

$ uniq u accesses.log awk e todos estes arquivos sero unidos no zipado codes:
$ find ~ -iname *.awk | zip codes -@
Ex:
unzip [opes] [arquivo] Lista, testa e extrair o contedo 6. Reunir e zipar todas as ocorrncias (arquivos e diretrios) de
interno de um arquivo zipado (compactado). which da busca rpida realizada por locate:
Ex:
1. Use apenas unzip para visualizar as opes rpidas de uso: $ locate which | zip -r which -@
7. O contedo dos arquivos de final de txt e sh so unidos em
Ex:
$ unzip
uma nica stream e zipados para dentro de concated, nele existir
2. Descompacta o arquivo signals no diretrio corrente:
Ex:
outro arquivo nomeado como "-" (trao):
$ unzip signals.zip $ cat *.{txt,sh} | zip > concated
Ex:
3. Extrai apenas do zipado os arquivos de extenso PDF: Ex:
8. Proceda normalmente para adicionar um novo arquivo a um
$ unzip signals.zip *.pdf zipado existente, pois o zip por padro far o acrscimo. Ao final
Ex:
4. Extrai apenas do zipado o arquivo 00001.pdf dentro do book.zip ter dois PDFs:
diretrio files. Observe files, tambm, constar no disco: $ zip book ~/lib/dom-quixote.pdf
$ unzip signals.zip files/00001.pdf $ zip book ~/lib/quincas-borbas.pdf
9. A opo -u ou --update realiza a atualizao de um arquivo
Ex:
5. Lista o contedo interno do compactado atravs do uso de -l:
Ex:

$ unzip l signals dentro do objeto compactado, caso o arquivo no exista, ento


adicionado. No exemplo, o processo simplificado, pois dispensa
6. Testa a integridade dos arquivos internos zipados, opo -t:
Ex:
descompactar configs.zip para atualizar apenas chromium.conf:
$ unzip t frequencies.zip $ zip configs.zip u chromium.conf
7. Apresenta atravs da opo -v as informaes dos arquivos,
Ex: Ex:
10. No mesmo sentido do exemplo anterior, porm realiza o
tais como tamanho, mtodo e porcentagem de compreenso, data processo de excluso, tambm, cabe o uso da forma longa --delete:
de modificao, CRC (Cyclic Redundancy Check) e caminho relativo: $ zip configs.zip d chromium.conf
11. Para copiar um arquivo de um compactado use -U ou --copy.
Ex:
$ unzip v waves.zip
8. A opo -n preserva, no sobreescreve, arquivos j existentes Observe a necessidade do uso de --out para manter o arquivo
Ex:

no diretrio: original intacto. Na operao sugir um novo zipado que


$ unzip n starks.zip necessrio descompacta-lo com unzip:
$ zip cc.zip U license.pdf --out license.zip
9. Ao contrrio do exemplo anterior, -o, realiza a sobreescrita
Ex:
$ unzip license.zip
automaticamente. Tenha certeza antes de usar:
12. A opo -FS, File Sync, realiza uma sincronizao entre o
Ex:
$ unzip o starks.zip
arquivo zipado e o arquivos em disco:
10. Descompacta o arquivo gameOfThrones.zip protegido pela
Ex:
$ mkdir /tmp/fs
senha lannister: $ echo Creative Commons > cc
$ unzip P lannister gameOfThrones.zip $ echo GNU General Public License > gpl
Ex:
11. Apenas realiza extrao sem apresentar qualquer sada da $ zip licenses * #Zipando os dois arquivos.
operao: $ echo 4.0 >> cc
$ unzip q tyrionLannister.zip $ zip licenses FS * #O cc ser atualizado
dentro do zipado, licenses.
12. Extra todos os arquivos do compactado targaryen.zip,
Ex:
$ rm gpl
exceto daenerys: $ zip licenses FS * #O gpl ser excludo
$ unzip targaryen x daenerys dentro do zipado, licenses.
13. Para acompanhar o progresso realizado byte a byte use -db
Ex:

wc [opes] [arquivo] Conta a quantidade de bytes, ou --display-bytes:


palavras ou linhas de um arquivo. $ zip --display-bytes dali_pictures *
Ex:
Ex:
1. Conta a quantidade de linhas existentes de /etc/passwd: 14. Apresenta as entradas realizadas conforme o andamento do
$ wc l /etc/passwd processamento. Disponvel a forma longa --display-counts:

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 8

5. Reexecuta o ltimo comando echo do histrico:


Ex:
$ zip davinci_pictures * -dc
Ex:
15. Semelhante ao exemplo anterior, porm so postos pontos $ !echo
para indicar o progresso. Disponvel a forma longa --display-dots:
Ex:
6. Utiliza todos os argumentos do comandos executado
$ zip michelangelo_works * -dd anteriormente no basename:
Ex:
16. Apresenta os pontos de acordo com o progresso de $ basename !*
Ex:
processamento global: 7. Injeta para basename o ltimo argumento do comando
$ zip -dg renaissance * anterior:
17. Use a opo -e para adicionar uma senha de segurana de
Ex:
$ basename !$
Ex:
acesso ao arquivos dentro do zipado: 8. Trabalha com o primeiro argumento do comando anterior:
$ zip -e secrets.zip *.pass $ echo !^
Ex: Ex:
18. Para quebrar o arquivo zipado em vrias partes use a opo 9. Executa o ltimo comando que tenha "default" em seu nome
-s seguida do tamanho desejado (k: kilobytes, m: megabytes, g: ou nos argumentos:
gigabytes e t: terabytes). Observe que a ltima parte poder ter $ !?default
10. Injeta no touch o segundo ao quinto argumento do
Ex:
tamanho inferior:
$ zip -s 2m myfiles * programa anterior:
Ex:
19. Verifica a integridade do arquivo: $ touch !:2-5
11. Aplica ao touch o primeiro e segundo argumentos do ltimo
Ex:
$ zip T mysql.confs.zip
comando echo:
$ touch !echo:1-2

Recursos do Terminal 12. Repassa ao programa file do segundo at o ltimo


Ex:

argumento do comando j executado:


$ file !:2-$
alias string Cria um atalho para um comando.
Ex:
1. Lista todos os atalhos registrados da sesso aberta: jobs Lista os comandos em execuo dentro do shell.
Ex:
$ alias 1. Mostra todos os processos relacionados:
Ex:
2. Associa o comando "ls a" como "lsa": $ jobs
$ alias lsa="ls -a"
Ex:
3. Cria atalho para contar a quantidade de usurios logados: pwd Imprime o caminho absoluto do diretrio corrente.
Ex:
$ alias qtd-logados="who | wc -l" 1. Exibe no terminal a localizao atual:
$ pwd
4. Automatiza atravs do atalho criado de nome info-user a
Ex:

busca de informaes sobre determinado usurio:


$ alias info-user="cat /etc/passwd | grep -i" read [varivel] Ler uma entrada de dados para uma
Ex:
5. Apelida o procedimento de remoo de todos os arquivos da varivel.
1. Recebe o valor de entrada para a varivel name e aps um
Ex:
pasta samurai como rem :
$ alias rem="rm samurai/*" enter retornar ao prompt de comando para executar o comando
echo:
$ read name
cd [diretrio] Navega entre diretrios. $ echo $name
1. Muda para o diretrio /usr/bin:
Ex:
Ex:
2. Inseri uma mensagem personalizada:
$ cd /usr/bin
$ read p "Type the name: " name
Ex:
2. Navega para o diretrio pai da pasta corrente: Ex:
3. Aguarda at 5 segundos antes de encerrar a recepo de
$ cd .. dados:
Ex:
3. Permance na pasta atual: $ read t 5 name
4. Aceita at 10 caracteres para a varivel name:
Ex:
$ cd
Ex: $ read n 10 name
4. Equivalente ao exemplo 3:
5. Define como delimitador padro o "." em vez de enter:
Ex:
$ cd .
$ read d "." name
6. Recepciona vrios valores para o array de nome names:
Ex:
exit 1) Fecha o terminal; 2) Encerra uma sesso aberta $ names=()
atravs do su. $ read a names
Ex:
1. Finaliza a execuo do terminal: Ex:
7. Permite injetar o primeiro valor para a varivel code e o
$ exit segundo para serial:
2. Aps logado como root, usado exit para sinalizar o
Ex:
$ read code serial
encerramento da sesso:
$ su root
reset [opes] [caractere] Inicializa o terminal.
$ exit Ex:
1. Reinicializa o terminal:
$ reset
history Apresenta o histrico dos ltimos comandos Ex:
2. Configura a tecla "x" como backspace:
executados no terminal. $ reset e x
Ex:
1. Apresenta a listagem dos ltimos comandos executados: Ex:
3. Altera a tecla de interrupo padro, "^c", para "^t":
$ history $ reset i ^t
Ex:
2. Executa o comandos de nmero "45" do histrico: Ex:
4. Apresenta o tipo de terminal:
$ !45 $ reset -q
Ex:
3. Executa o ltimo 5 comando da listagem: Ex:
5. Exibe na resumidamente as opes:
$ !-5 $ reset -m
Ex:
4. Referece ao ltimo comando executado:
$ !!

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 9

5. Remove o pacote scribus com a excluso de qualquer arquivo


Ex:
setterm [opes] Configura atributos do terminal.
Ex:
1. Habilita a visibilizadade do cursor: de configurao:
$ setterm cursor on $ apt-get purge scribus
2. Torna o curso invisvel: 6. Atualiza o pacote clamav e checa por dependncias
Ex: Ex:

$ setterm cursor off quebradas:


3. Altera a cor de background para azul (as cores disponveis
Ex:
$ apt-get check clamav
so: black, blue, green, cyan, red, magenta, yellow e white): Ex:
7. Remove todos os pacotes em cache do repositrio local:
$ setterm background blue -store $ apt-get clean
4. Muda para a cor de foreground para amarelo (as cores
Ex:
8. Baixa para o diretrio atual o pacote pdfgrep do repositrio
Ex:

disponveis so as mesmas informadas no exemplo anterior): central:


$ setterm foreground yellow -store $ apt-get download pdfgrep
5. Inverte as cores de background e foreground:
Ex:

$ setterm inversescreen on

Processo & Memria


6. Equivalente ao exemplo anterior:
Ex:

$ setterm reverse on -store


7. Desfaz a inverso de cores entre background e foreground:
Ex:

$ setterm inversescreen off free [opes] Apresenta a quantidade memria livre do


Ex:
8. Atribui negrito ao foreground: sistema.
Ex:
$ setterm bold on -store 1. Lista a quantidade de memria em megabytes:
9. Limpa a tela, mesmo efeito que o comando clear:
Ex: $ free -m
Ex:
$ setterm -clear 2. Repete a cada "2" segundos a quantidade de memria em
gigabytes:
type comando Indica se o comando embutido ou um $ free g s 2
arquivo executvel.
Ex:
1. Descobre o tipo do comando who: kill [opes] pid Envia um sinal para um processo.
Ex:
$ type who 1. Desliga de imediato do processo de PID 1024:
$ kill -9 1024
Ex:
unalias atalho Remove um atalho registrando na sesso do 2. Comanda sinal de parada de processamento para um
terminal. processo de PID 3611:
Ex:
1. Desvincula o atalho "lsa" da sesso: $ kill -19 3611
Ex:
$ unalias lsa 3. Envia sinal de continuedade de processamento ao processo
3611:
$ kill -18 3611

Gerenciamento de Pacote nice [opes] [comando] [argumentos] Executa um


apt-cache [opes] string padro Busca e lista pacotes. programa com prioridade alterada.
1. Altera a prioridade para baixa do comando zip files.zip *.pdf:
Ex:
1. Pesquisa pelos pacotes relacionados a virtualbox:
Ex:
$ nice -n 20 zip files.zip *.pdf
$ apt-cache search virtualbox
2. Executa com mxima prioridade o comando cp all.zip /tmp:
Ex:
Ex:
2. Realiza a listagem com a especificao completa do pacote
$ nice -20 cp all.zip /tmp
cacti:
$ apt-cache f search cacti
Ex: pgrep [opes] padro Busca o PID do processo baseado
3. Apresenta as informaes sobre a dependncia direta e
reversa do pacote brasero: no padro fornecido em nomes e outros atributos.
1. Lista todos os PIDs que tenham firefox:
Ex:
$ apt-cache showpkg brasero
$ pgrep firefox
4. Mostra todas as informaes referentes ao pacote caja:
Ex:
2. Conta a quantidade de ocorrncias para o padro init:
Ex:
$ apt-cache show caja
$ pgrep c init
5. Visualiza as dependncias de bash:
Ex:

$ apt-cache depends bash


Ex: pidof [opes] programa Encontra o identificador do
6. Imprime outros detalhes (verso, repositrio e arquivo de
processo.
status) sobre gcc:
1. Encontra os PIDs dos processos de bash:
Ex:
$ apt-cache policy gcc
$ pidof bash
2. Retorna apenas um PID dos processos de apache2:
Ex:
apt-get [opes] string pacote Manipula pacotes.
$ pidof s apache2
1. Instala o pacote apache2:
Ex:

$ apt-get install apache2


pmap [opes] pid Reporta o mapa de memria
2. Remove o pacote htop:
Ex:
relacionado a um processo.
$ apt-get remove htop Ex:
1. Apresenta o mapa de memria do processo de PID 5841:
Ex:
3. Atualiza todos os pacotes instalados no sistema: $ pmap 5841
$ apt-get update Ex:
2. Exibe o mapa de memria de forma extendida para o
Ex:
4. Remove todos os pacotes desnecessrios do sistema: processo de PID 2139:
$ apt-get autoremove $ pmap x 2139

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 10

Ex:
ps [opes] Gera relatrio rpido dos processos correntes. 1. Concede permisso de leitura e escrita para o grupo do
Ex:
1. Lista todos os processos no formato POSIX e UNIX: usurio corrente sobre o arquivo rules:
$ ps aux $ chmod g+rw rules
Ex:
2. Obtm informaes sobre as threads em execuo:
Ex:
2. Remove todas as permisses do grupo do usurio e de outros
$ ps eLF sobre o arquivo documents:
$ chmod 700 documents
pstree [opes] [pid] Desenha uma rvore de processos.
Ex:
1. Mostra a rvore de processos do sistema: chown [opes] usuario recurso Muda o dono e grupo
$ pstree proprietrio do recurso (arquivo ou diretrio).
1. Troca a propriedade do arquivo marvel para o wolverine:
Ex: Ex:
2. Constri a rvore dos processos de PID 5181:
$ pstree s 5181 $ chown wolverine marvel
2. Altera a propriedade do arquivo blacklist para o usurio
Ex:

renice [opo] [argumento] Altera a prioridade de um master do grupo ever:


processo em execuo. $ chown master:ever blacklist
Ex:
1. Muda a prioridade para prioridade baixa o processo de PID
7666: su [opes] username Se passa como outro usurio.
1. Assumi o perfil de conta do usurio root:
Ex:
$ renice n 15 p 7666
Ex:
2. Altera para prioridade alta de execuo os processos do $ su -l
2. Torna-se o usurio deploy:
Ex:
usurio highlander:
$ renice n -18 u highlander $ su deploy

strace comando Imprime a trilha de chamadas ao sistema sudo [opes] [comando] Executa um comando como
e sinais. outro usurio.
1. Executa o comando lshw C storage como root:
Ex:
1. Imprime as chamadas ao sistema do comando ls:
Ex:

$ strace ls $ sudo lshw C storage


2. Efetua o comando cat view.pdf como se fosse o usurio
Ex:
2. Encontra as ocorrncias das chamadas para o comando locate
Ex:

com o argumento boot: magneto:


$ strace locate boot $ sudo u magneto cat view.pdf

top [opes] Providencia uma viso de tempo real dos


processo em execuo no sistema.
Ex:
1. Executa e apresenta formato padro:
Configurao & Hardware
$ top df [opes] [arquivo] Reporta o espao utilizado em disco.
Ex:
Ex:
2. Aplica o tempo de atualizao para 1 segundo: 1. Mostra informaes no formato padro:
$ top d 1 $ df
Ex:
2. Exibe em formato de sada legvel para humanos:
$ df -h

Usurio & Grupos lsblk [opes] Lista os blocos dos dispositivos.


Ex:
addgroup [opes] grupo Adiciona um grupo. 1. Lista todos os dispositivos de armazenamento:
$ lsblk
1. Adiciona o grupo nomeado como thundercats:
Ex:
Ex:
# addgroup thundercats 2. Imprime com as permisses aceitas por cada dispositivo:
$ lsblk -m
2. Adiciona o grupo xman e torna como home a pasta
Ex:

/home/groups/xman:
# addgroup --home "/home/groups/xman" xman lscpu [opes] Mostra informaes sobre a arquitetura da
CPU.
3. Acrescenta o grupo averges e define como shell padro o
Ex:
Ex:
1. Lista as informaes correntes da CPU:
bash: $ lscpu
# addgroup --shell /bin/bash averges
4. Adiciona o grupo zoodico com GID 3000:
Ex:
lshw [opes] [string] Lista o hardware do computador.
# addgroup --gid 3000 zoodico Ex:
1. Imprime todas as classes de dispositivos:
$ lshw
Ex:
2. Lista apenas os dispositivos de classe da memria:
Propriedade & Permisso $ lshw C memory

chgrp [opes] usurio recurso Muda o grupo lspci [opes] Imprime todos os dispositivos PCI.
proprietrio do recurso. Ex:
1. Lista de forma curta:
1. Concede a propriedade da pasta animals para o grupo tiger:
Ex:
$ lspci
$ chgrp tiger animals Ex:
2. Listagem detalhada dos dispositivos:
$ lspci -v
chmod [opes] permisses recurso Manipula o
esquema de permisses vinculados ao recurso. lsusb [opes] Lista os dispositivos do tipo USB.

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 11

Ex: Ex:
1. Apresenta todos os dispositivos: 12. Semelhante ao exemplo anterior, porm com a restrio de
$ lsusb somente nas quartas-feiras (3) de julho (7):
Ex: $ crontab e
2. Exibe os dispositivos em forma de rvore:
$ lsusb -t 20-59/3 17 * 7 3 /usr/local/scripts/kill
Ex:
13. Do dia 15 a 30 ou nas segundas-feiras (1) do ms de
fevereiro (2) a setembro (9) o script collector entra em execuo a

Sistema cada minuto:


$ crontab e
* * 15-30 2-9 1 /scripts/collector
crontab [opes] [usurio] [arquivo] Gerencia em modo Ex:
14. Semelhante ao exemplo anterior com o acrscimo do ms
alto nvel o agendamento de execuo de tarefas. de novembro (11), alm de haver execuo nas segundas (1),
1. A opo -l visualiza as entradas existentes. As linhas em
Ex:
quartas (3), quintas (4) e sbados (6) dos referidos meses:
branco ou comentadas pelo caractere "#" em incio de linha so $ crontab e
ignoradas. Cada linha de agendamento composto por seis * * 15-30 2-9,11 1,3,4,6 /scripts/collector
campos separados por espaos, sendo na ordem de minuto (0 a
15. No exemplo intercalo intervalos e valores fixos. O script
Ex:
59), hora (0 a 23), dia (1 a 31), ms (1 a 12), dia da semana (0 a 6) e
backup executar em cada minuto das horas 0, 1, 2, 4, 6, 7 e 8 de
comando:
segunda a sexta-feira:
$ crontab -l
$ crontab e
Ex:
2. Semelhante ao exemplo anterior, porm visualizado as * 0-2,4,6-8 * * 1-5 /scripts/backup
entradas de agendamento do usurio brahms: Ex:
16. O agendador levatar o programa events nas horas divisveis
$ crontab l -u brahms
por 2, na 11 hora e em todos os seus minutos nos domigos e
3. Use a opo -e para editar o arquivo de configurao.
Ex:
sbados:
Observe que na primeira vez de edio do arquivo solicitado que $ crontab e
se escolha o editor padro. Use o asterisco para representar todos * */2,11 * * 0,6 /usr/local/tasks/events
os valores do universo de cada campo. Na linha de edio do Ex:
17. Na dcima terceira hora nos minutos 0, 2 e 4 nos dias 2, 3, 6,
arquivo fica registrado que a cada minuto deve ser executado o 7, 10 e 12 ou teras-feiras (2) de julho (7) o script load ser posto
comando date e a sua sada direcionada para /tmp/now: em execuo pelo agendador:
$ crontab -e $ crontab e
* * * * * date > /tmp/now 0,2,4 13 2,3,6,7,10,12 7 2 /scripts/load
Ex:
4. Semelhante ao exemplo anterior, porm haver execuo no Ex:
18. O script clear disparar todos os dias do ms de julho (7) a
2 minuto de cada hora: cada minutos de 12 a 13h:
$ crontab e
2 * * * * date > /tmp/now $ crontab e
* 12-13 * 7 * /scripts/clear
5. A opo -u seguida do nome do usurio faz o registro de
Ex:

19. Use a opo -r para excluir o arquivo de agendamento do


Ex:
agendamento como se fosse ele prprio. O programa uploads em
/scripts executar sempre as 4 horas: usurio:
$ crontab e u root $ crontab r
20. Combine com a opo -u para apagar todas as entradas
0 4 * * * /scripts/uploads Ex:
Ex:
6. A entrada de agendamento configura para executar o feitas de outro usurio:
programa refresh em /scripts as 5 horas e 34 minutos do dia 13 de $ crontab r u brahms
todo o ms: Ex:
21. Para eleger um novo arquivo de agendamento de tarefas,
$ crontab e apenas indique o seu caminho absoluto (preferencialmente):
34 5 13 * * /scripts/refresh $ crontab /home/rammstein/crontab
7. O script remove-all executar as 6 horas e 55 minutos do dia
Ex:
22. Combine a opo -u para realizar a substituio como se
Ex:

20 de fevereiro (2): fosse o prprio usurio:


$ crontab e $ crontab u sabaton /home/sabaton/crontab
55 6 20 2 * /scripts/remove-all
Ex:
8. As 4 horas e 20 minutos das quartas-feiras (0: domingo, 1: date [opes] [formato] Imprime a data e hora.
segunda, 2: tera, 3: quarta, 4: quinta, 5: sexta-feira e 6: sbado) Ex:
1. Mostra a data no formato padro:
disparado o payments: $ date
$ crontab e
2. Imprime em tela no formato dd/mm/aaaa hh:mm:ss:
Ex:
20 4 * * 3 /scripts/payments
Ex:
$ date +"%d/%m/%Y %H:%M:%S"
9. Use o hfen para sinalizar um intervalo de valor. No exemplo,
status-net executa nos minutos 45, 46, 47, 48, 49, 50 e 51:
last [opes] [nome] Mostra a listagem dos ltimos
$ crontab e
45-51 * * * * /scripts/status-net usurios logados.
Ex:
1. Apresenta todos os ltimos usurios:
10. A partir das 16 horas executado o programa scan nos
Ex:
$ last
minutos que so divisveis por 2 minutos:
2. Lista apenas o usurio de nome eduardo:
Ex:
$ crontab e
*/2 16 * * * /usr/local/bin/scan $ last eduardo
11. Nas 17 horas entre 20 e 59 minutos o script kill entra em
Ex:

estado de execuo nos minutos divisveis por 3: poweroff [opes] Desliga o sistema.
Ex:
$ crontab e 1. Desativa o sistema em tempo normal:
20-59/3 17 * * * /usr/local/scripts/kill $ poweroff
Ex:
2. Fora o desligamento imediato:

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 12

$ poweroff -f tee [opes] [arquivo] Recebe uma entrada de dados,


grava em um arquivo e os imprime em tela.
printenv [opes] [varivel] Imprime variveis de Ex:
1. Atravs da sada do resultado da busca por awk pelo
ambiente. comando locate gerado o arquivo results e o contedo
apresentado em tela:
Ex:
1. Lista todas as variveis com seus respectivos valores:
$ printenv $ locate awk | tee results
2. Imprimi o valor da varivel OLDPWD:
Ex:
2. Grava no arquivo directories todos os nomes dos diretrios do
Ex:

$ printenv OLDPWD usurio corrente e as exibe:


$ find /home/$USERNAME type d | tee
reboot [opes] Reinicializa ou parar o sistema. directories
Ex:
1. Inicializa novamente o sistema em tempo normal:
$ reboot tr [opes] charset1 charset2 Substitui ou deleta
Ex:
2. Fora uma reinicializao imediata: caracteres.
1. Converte todos os caracteres do arquivo names.txt de
Ex:
$ reboot -f
minsculo para maisculo:
shutdown [opes] [tempo] [mensagem] Desliga, parar $ cat names.txt | tr 'a-z' 'A-Z'
2. Deleta todas as consoantes e espaos da frase hello world:
Ex:
ou reinicializa o sistema de forma segura.
Ex:
1. Desliga o sistema aps de 2 minutos: $ echo "hello world" | tr d 'dhlrw[:blank:]'
$ shutdown P 2
Ex:
2. Reinicializa o sistema aps 15 minutos e envia a mensagem
"Reboot in 15 minutes!" para todos os usurios logados:
$ shutdown r 15 "Reboot in 15 minutes!"
Localizadores
find [diretrios] [expresso] Realiza busca por nome de
uname [opes] Imprime informaes sobre o sistema. recurso atravs da fora bruta.
Ex:
1. Apresenta o tipo do sistema operacional: Ex:
1. Encontra qualquer arquivo regular chamado help que esteja a
$ uname partir do diretrio raiz / (barra):
Ex:
2. Imprime todas as informaes relevantes sobre o sistema $ find / -type f name help -print
operacional: 2. Localiza qualquer diretrio que comece com o nome init
Ex:
$ uname a dentro da pasta /etc:
$ find /etc type d iname "init*" print
who [opes] [arquivo] Mostra quem est logado.
Ex:
1. Lista todos os usurios logados: locate [opes] padro Busca a localizao de arquivos
$ who por nome na base de dados.
Ex:
2. Conta a quantidade de usurios logados e imprimi todos os Ex:
1. Aponta os caminhos de arquivos e diretrios que contenham
nomes de logins: o padro de nome init em maisculo ou minsculo:
$ who -q $ locate -i init

whoami [opes] Imprimi o username do usurio logado. whereis comando Localiza o binrio, cdigo e manual de
1. Imprime o username do usurio corrente:
Ex:
um programa.
$ whoami 1. Encontra as ocorrncias para o programa shutdown:
Ex:

$ whereis shutdown

Tela & Temporizador which comando Localiza um programa.


1. Aponta o caminho do executvel de nmap:
Ex:

clear Limpa a tela do terminal. $ which nmap


Ex:
1. Remove todos os caracteres da tela:
$ clear

echo [opes] [string] Imprimi uma linha de texto.


Repetidores
1. Imprimi no terminal Hello World:
Ex:
timeout [opes] durao comando argumentos
$ echo "Hello World" Executa um comando por um determinado limite de tempo.
Ex:
2. Apresenta o nome do usurio e o caminho de sua pasta Ex:
1. Pinga o endereo educode.com.br por 10 segundos (10s),
pessoal de forma tabulada: aps esse tempo a execuo encerrada (-s 15):
$ echo -e "$USERNAME\t$HOME" $ timeout s 15 10s ping educode.com.br
2. Exibe o contedo do dispositivo /dev/urandom durante 1
Ex:

sleep nmero[sufixo] Atrasa o controle para a prxima minuto (1m), logo depois encerra de fora bruta (-s 9) o comando
ao por determinado tempo. cat:
Ex:
1. Atrasa a retormada do terminal por 2 segundos: $ timeout s 9 1m cat /dev/urandom
3. Grava continuamente durante 3 horas (3h) a palavra Debian
Ex:
$ sleep 2s
no arquivo "os" em /tmp, aps o tempo estabelecido pausa a
2. Retarda a execuo do segundo date em 5 minutos:
Ex:
execuo do yes:
$ date ; sleep 5m ; date
$ timeout s 19 3h yes Debian > /tmp/os

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 13

4. Permanece por 4 dias (4d) monitorando as mensagem do


Ex:
> x = 20 ^ 2
sistema atravs do comando dbus-monitor: > x = x % $num
$ timeout s 15 4d dbus-monitor --system > print x
> CALC
> )
watch [opes] comando Executa um comando Ex:
9. O uso de parnteses estabelece uma ordem de prioridade. No
continuamente em tela cheia. exemplo primeiro feito a soma de 20 mais 5 e depois a
1. Executa a cada 2 segundos o comando vmstat com a opo
Ex:
substrao por 4 do seu resultado e por fim a diviso por 3:
"-s": $ bc <<< '((20 + 5) - 4) / 3'
$ watch n 2 "vmstat -s" Ex:
10. Um exemplo com uso de apenas de variveis definidas
2. Mostra as ltimas cinco ocorrncias da sada de dados de ps a
Ex:
externas ao programa bc:
cada 1 segundo: $ rate="0.20"; months=5; number=".6"
$ watch n 1 "ps aux | tail -5" $ bc <<< "scale=3;$rate * $months / $number"
Ex:
11. O ps-incremento (capacidade de adicionar mais 1 depois da
yes [opes] string Repete uma string at ser encerrado. chamada da varivel) tem a forma de "var++" :
Ex:
1. Reproduz a frase "Hasta Pronto!" at que o programa seja $ echo 'x=10; print x++," ",x' | bc
Ex:
interrompido (^c): 12. O pr-incremento (capacidade de adicionar mais 1 antes da
$ yes "Hasta Pronto!" chamada da varivel) tem a forma de "++var":
2. Grava no arquivo classical em /tmp o nome "Vivaldi" at que
Ex: $ echo 'y=10; print ++y' | bc
Ex:
a operao sofra parada (^c): 13. O pr-decremento (capacidade de substrair 1 antes da
$ yes Vivaldi > /tmp/classical chamada da varivel) tem a configurao de "--var":
$ echo 'y=10; print --y' | bc
Ex:
14. O ps-decremento (capacidade de substrair 1 depois da
xargs [opes] [comando] Executa comandos definidos a
chamada da varivel) segue o padro de "var--":
partir de uma entrada. $ echo 'x=10;print x--," ",x' | bc
1. Encontra o PID do processo do gedit e passa-o como
Ex:

argumento para encerramento do processo:


$ pidof gedit | xargs kill -9 expr expresso Avalia uma expresso.
Ex:
1. Imprime o valor do terceiro argumento, pois o primeiro
2. Lista os arquivos que comeam com a letra "d" em /etc e
Ex:
vazio ou tem tamanho igual a zero. Observe que o pipeline est
passa-os como argumento para a execuo em sequncia para file entre aspas, pois cumpri o papel de argumento:
com opo "-i": $ expr '' '|' 'First parameter is null'
$ ls /etc/d* | xargs file i Ex:
2. Apresenta o contedo da varivel "$USER", ao invs de "No
user" (terceiro argumento), pois no se encontra vazia:
$ expr $USER "|" "No user"
Expresso e Aritmticos
Ex:
3. Realiza o teste de comparao de menor que, sendo o
resultado na sada igual a 1 (verdadeiro):
$ expr 5 '<' 6
bc [opes] [arquivo] Linguagem de clculo de preciso Ex:
4. A sada ser zero (falso) pelo fato que "7" no menor que
arbitrria. "6":
1. Para enviar os clculos a serem realizados pelo bc
Ex:
$ expr 7 '<' 6
necessrio usar um fluxo de dados com pipeline, here strings, here Ex:
5. As comparao tambm podem ser realizadas para literais. O
document ou um arquivo em disco. Neste exemplo feito a soma resultado igual a 1 (verdadeiro):
de dois nmeros: $ expr 'abc' '<' 'abd'
$ echo '10 + 20' | bc Ex:
6. A diferena do exemplo anterior a alterao do segundo
2. Use a varivel interna do bc de nome scale para mensurar a
Ex:
argumento para "<=" (menor ou igual):
preciso da parte fracionrio na realizao do clculo: $ expr 'abc' '<=' 'abd'
$ echo 'scale=3; 10.991 + 20.234' | bc Ex:
7. O resultado tambm ser verdadeiro como no exemplo
Ex:
3. A realizao da substrao tambm tem o mesmo smbolo da anterior:
matemtica. Atente-se que o separador da parte inteira da $ expr 'abc' '<=' 'abc'
fracionria o ponto e no a vrgula: Ex:
8. Realiza teste de igualdade entre o valor da varivel "$TERM"
$ bc <<< 'scale=2; 0.98 4.9'
e a literal "linux" :
4. A diviso utiliza-se a barra. Neste exemplo a varivel scale
Ex:
$ expr "$TERM" '=' "linux"
recebe 4: Ex:
9. O teste de igualdade entre dois numerais:
$ bc <<< 'scale=4; 15 / 4 + 2.34' $ expr 1 = 2
Ex:
5. A multiplicao feita com o uso de asterisco: Ex:
10. A verificao de diferena entre estas duas strings
$ bc <<< 'scale=7; 0.05 * 0.009'
Ex: semelhantes resultar em verdadeiro, visto que o teste sensvel a
6. Neste exemplo feito a injeo da varivel "$num" no fluxo
caixa (maisculo ou minsculo):
de dados para o clculo de "calc": $ expr 'Command' '!=' 'command'
$ num=3 Ex:
11. No mesmo sentido que o exemplo anterior, porm com
$ calc=$(echo "scale=2;20 / $num" | bc)
$ printf $calc numerais:
Ex: $ expr 1 != 2
7. Para capturar o valor remanescente da diviso de 25 pela
12. Um teste de maior que entre duas strings:
Ex:
varivel "$num" use "%":
$ expr 'Command' '>' 'command'
$ rest=`bc <<< "25 % $num"` Ex:
13. Com o uso de nmeros para o teste de maior que:
8. Uso do here document com subshell para realizar o clculo da
Ex:
$ expr 9 '>' 10
varivel "$calc". Observe a operao de exponenciao atravs do Ex:
14. Semelhante ao exemplo 12, sendo o resultado igual a 0
acento circunflexo:
(falso):
$ calc=$(bc <<CALC
$ expr 'Command' '>=' 'COmmand'

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 14

Ex:
15. As operao aritmticas devem ser com inteiros e podem $ [ "$LINES" le 30 ]
Ex:
receber mais de dois numerais, como visto neste exemplo da soma: 12. Menor que, "<", para teste com inteiros:
$ expr '10' '+' '30' + 40 '+' 50 $ [ ${#LANGUAGE} lt ${#HOSTNAME} ]
13. Se o arquivo file2 for mais recente que file1, ento o teste
Ex: Ex:
16. Para substrao use o sinal de menos:
$ expr '15' - '4' - 5 verdadeiro:
Ex:
17. A multiplicao usa o sinal asterisco: $ [ ~/file2 nt ~/file1 ]
14. Se a data de criao de file1 anterior a de file2, logo
Ex:
$ expr '2' '*' '20'
Ex:
18. A diviso utiliza o barra: resultado verdadeiro:
$ expr '27' '/' '5' $ [ ~/file1 ot ~/file2 ]
15. Verifica se loop0 existe em /dev e se tambm um arquivo
Ex: Ex:
19. Para o resto da diviso entre dois nmeros use o percente:
$ expr '35' '%' '9' de bloco especial:
Ex:
20. Combinao simples entre dois operadores aritmticos: $ [ -b /dev/loop0 ]
16. Testa se tty existe em /dev e se tambm arquivo de
Ex:
$ expr 10 + 30 - 5
Ex:
21. Uma combinao mais complexa com 4 operadores: caractere especial:
$ expr 20 / 2 + 3 '*' 30 - 5 $ [ -c /dev/tty ]
Ex:
22. Juno de operador aritmtico com operador relacional: Ex:
17. Avalia se "1" em /proc um diretrio:
$ expr 45 % 4 '>' 37 / 2 $ [ -d /proc/1 ]
23. O primeiro argumento match indica que a operao a ser
Ex:
18. Consta se o arquivo grub existe no caminho:
Ex:

realizada de teste de correspondncia do segundo argumento $ [ -e /etc/default/grub ]


Ex:
com o terceiro (regex): 19. Para expressa o operador "and" (e) utilize o argumento "-a".
$ expr match 'opera' '^o.*[a-z]$' O resultado do teste abaixo verdadeiro:
24. Para extrair apenas uma parte de uma string indique no
Ex:
$ [ 1 = 1 a 2 != 3 ]
terceiro argumento a posio de incio a contar de um e a posio $ printf $?
Ex:
final. O primeiro argumento deve ser substr: 20. O teste pode ser realizado com a unio de vrias partes com
$ expr substr 'configuration' 1 4 distintas operaes:
25. Use index e no terceiro argumento os caracteres que sero
Ex:
$ [ "$PWD" = ~ -a 10 -gt 5 -a 2 ne 4 ]
localizados a sua posio na string do segundo argumento: $ echo $?
Ex:
$ expr index 'enemark' 'k' 21. Use "-o" para obter o mesmo efeito que "or" (ou):
26. O clculo do tamanho de uma string use length:
Ex: $ [ "$PWD" = ~ -o "$SHELL" = "sh" ]
$ expr length 'Soy Brasileo' $ echo $?

[ expresso Checa o tipo de arquivo e compara valores.


Ex:
1. Converte o valor de falso para verdadeiro:
$ [ ! false ]
Arquivos de Configurao
$ echo $? ~/.bashrc Configuraes personalizadas do usurio que
Ex:
2. Converte o valor de verdadeiro para falso:
sero executadas na inicializao de uso do terminal.
$ [ ! true ]
Ex:
3. Caso a varivel "$OLDPWD" tenha algum valor atribudo ser
verdadeiro. Use a varivel especial "$?" para verificar o resultado ~/.bash_logout Configuraes personalizadas do usurio
do teste: que sero executadas no encerramento da sesso no
$ [ -n "$OLDPWD" ] terminal.
$ echo $?
4. Enquanto que "-n" considera verdadeiro o teste onde a string
Ex:
~/.bash_history Histrico dos comandos digitados no
que tenha a quantidade de caracteres maior que zero, a opo "-z"
terminal. Use o comando history como alternativa rpida.
tem ao contrria:
$ [ -z "$OLDPWD" ]
Ex:
5. O teste de igualdade feito com "=". Observe o uso do duplo /etc/default/keyboard Relativo as configuraes do
"&&" para condicionar a execuo do echo em caso verdadeiro: teclado. A varivel "XKBMODEL" expressa o modelo do
$ [ 'A' = 'A' ] && echo "Equals charts" teclado (valor comum "pc105"), enquanto que
Ex:
6. O uso de "-eq" (igualdade) destinado para inteiros: "XKBLAYOUT" contm a sigla em minsculo do pas (use "br"
$ [ "$UID" eq 0 ] || echo root
Ex: para Brasil).
7. O sinal de "!=" verifica se existe diferena entre ambos. O
resultado do teste verdadeiro, pois a diferena de caixas j
/etc/group Listagem de todos os grupos cadastros no
suficiente para no serem iguais os caracteres:
$ [ 'A' != 'a' ] sistema com os seus respectivos "GID" e os membros
Ex:
8. Desde que o resultado dos comandos contidos em um associados a ele.
subshell retornem um nmero inteiro, ento possvel realizar
comparaes. No exemplo de diferena, sendo o mesmo que /etc/adduser.conf Estabelece os valores das variveis de
"!=": configurao para criao de novos usurios.
$ [ "$(awk 'END{print FNR}' /etc/hostname)"
ne 0 ]
Ex: /etc/passwd Listagem de todos os usurios do sistema
9. O uso de "-ge" tem equivalncia a ">=". O resultado do teste
igual a falso: com os seus respectivos "UID","GID", home e shell.
$ [ 10 ge 11 ]
Ex:
10. O argumento "-gt" tem a forma de ">" exclusivo para /etc/shadow Contm todas as senhas criptogradas dos
inteiros: usurios cadastros no sistema.
$ [ 10 gt 9 ]
Ex:
11. O "-le" a representao de "<=" exclusivo para inteiros:

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 15

Ex:
/etc/default/grub Organiza as variveis de inicializao do 2. Atualiza os pacotes do sistema e reinicializa o computador:
boot loader GRUB . O "GRUB_DEFAULT" recebe o nmero da $ apt-get update ; reboot
linha a ser selecionada correspondente ao SO a contar de
"0"; enquanto que "GRUB_TIMEOUT" contm o tempo em . (ponto) Dentro de um contexto pode representar o diretrio
segundos para qualquer ao de seleo antes do repasse corrente, o incio de um nome de arquivo ou pode ser
definitivo ao SO. Altere o valor para "text" da varivel combinado com outro(s) caractere(s) para outro fim, por
"GRUB_CMDLINE_LINUX_DEFAULT", execute o comando isto sempre necessrio observar para compreender.
Ex:
update-grub e reboot para desabilitar a interface grfica. 1. Apresenta todos os objetos do diretrio corrente:
$ ls .
Ex:
/var/lib/dpkg/status Retm informaes relevantes dos 2. Semelhante ao exemplo anterior, porm ponto-ponto
representa o diretrio pai:
pacotes instalados no sistema, tais como status, prioridade, $ ls ..
tamanho, mantenedor, arquitetura, verso, descrio e Ex:
3. Combinado com asterisco, apresenta todos os arquivos que
dependncia. se iniciam com ponto, arquivos ocultos:
$ ls .*
/usr/share/X11/xkb/rules/base.lst Ao incio do arquivo a Ex: 3. O arquivo usain-bolt localizado em /tmp movido para o
lista dos modelos de teclados com as suas descries diretrio corrente:
relacionadas aos fabricantes e logo abaixo as siglas $ mv /tmp/usain-bolt .
respectivas do layout de cada pas. Ex:
4. O primeiro argumento para cp indica que a partir do diretrio
atual deve-se subir outros 3 para alcanar a tmp que contm o
arquivo yohan-blake. O segundo argumento sinaliza a localizao

Variveis de Ambiente da cpia, que deve ser para o diretrio pai:


$ cp ../../../tmp/yohan-blake
Ex:
../
5. Quando combinado com barra indica execuo imediata do
$HOME Informa o diretrio pessoal do usurio logado na
arquivo. Observe que necessrio pelo menos que o arquivo
sesso corrente. Para verificar o seu valor use o comando contenha as permisses de leitura e execuo para o dono:
echo: $ ./script
$ echo $HOME Ex:
6. Voc, tambm, pode invocar a execuo de forma absoluta,
assim no ir importar onde voc esteja:
$OLDPWD Aponta para o ltimo diretrio acessado no $ ~/tmp/script
terminal. No mesmo sentido anterior use o printenv: Ex:
7. Caso o programa ou script no tenha as permisses mnimas
$ printenv OLDPWD como j dito ou o sistema de arquivos no oferea suporte nativo,
ento use a seguinte forma para caminho relativo:
$PS1 Contm as configuraes do prompt de comando. Os $ . ./script
princiapis identificadores so: "\u" para nome do usurio, Ex:
8. Semelhante ao exemplo anterior, porm o endereamento
"\h" para nome do host, "\w" para diretrio de trabalho, posto em absoluto:
"\$" para simbolizar usurio limitado ou root, "\#" contar a $ . /media/zotos/scripts/submit.sh
quantidade de comandos executados no terminal, "\t" para
horrio no formato de 24h (HH:MM:SS), "\T" para o formato | (pipeline) Transforma a sada de um comando em entrada
de 12h e "\!" indica o nmero no histrico para o comando. para outro.
1. A sada do comando ls vira entrada para o comando tail para
Ex:

$PWD Aponta o caminho do diretrio atual de trabalho. visualizar o ltimo objeto do diretrio corrente:
$ ls | tail -1
Ex:
$SHELL Aponta o caminho para o executvel do shell da 2. A impresso da varivel "$PATH" sofre troca do seu caractere
":" por "\n" e por seguinte gravado no arquivo de nome
sesso em aberto.
directories e apresentado em tela:
$ printenv PATH | tr ':' '\n' | tee directories
$? Varivel especial dinmica que guarda o cdigo de
retorno da execuo de um comando. Se o cdigo for igual a || (dois pipelines) Condiciona a execuo do prximo comando
"0" (zero), ento ocorreu tudo como esperado, seno igual caso o anterior tenha falhado.
ou maior que "1" houve falha ou erro. No teste abaixo o Ex: 1. O comando ls ter falha ao no encontrar, logo causar a
comando ls executa com sucesso, enquanto que printf no: execuo do echo:
$ ls ; echo $? ; printf ; echo $? $ ls l Thundercats || echo No dir/file.
2. A forma de chamada do printf sem argumento causa um erro,
Ex:

$$ Informa o PID do programa shell que esteja em ento printenv apresenta o valor da varivel "$USER":
execuo. $ printf || printenv USER
Ex:
3. O teste do comando "[" verdadeiro, portanto a mensagem
em printf e ele mesmo sero ignorados:

Smbolos do Shell
$ [ 1 = 1 ] || printf "Equals numbers"

& (ampersand) Coloca a execuo de um comando em


; (ponto e vrgula) Separador de comandos na mesma linha. background.
1. Executa o comando echo e depois cat:
Ex:

$ echo "Hello World" >> hello ; cat hello

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 16

Ex:
1. Coloca em segundo plano a compactao dos arquivos de 2>> (dois seguido de dois sinais de maior) Adiciona ao final de um
extenso xml: arquivo ou dispositivo uma sada de erro.
$ zip files-xml.zip *.xml & 1. Grava no arquivo denied todos os erros gerados pelo
Ex:
Ex:
2. Realiza o processo de copia de diretris e arquivo em comando find:
background: $ ls xyz 2> no-file ; ls x2 2>> no-file
$ cp R ~/folders ~/backups &
~ (til) Representa o home do usurio.
&& (dois ampersands) Condiciona a execuo do prximo Ex:
1. Acessa o diretrio pessoal do usurio atual:
comando caso o anterior tenha executado com sucesso. $ cd ~
1. O comando echo executa com sucesso, logo tambm
Ex:
2. Navega para home do usurio de nome highlander:
Ex:
executado ls: $ cd ~highlander
$ echo List of files: && ls
3. Copia o arquivo /tmp/date.log para home:
Ex:
2. A forma de chamada do printf sem argumento causa um erro,
Ex:
$ cp /tmp/date.log ~
ento printenv no executar:
$ printf && printenv USER
Ex:
3. O teste do comando "[" verdadeiro, portanto ser impresso { } (brace expansion chave aberta e fechada) Dentre as
em tela a mensagem "Equals numbers": possibilidades de uso esto como principais: gerao de
$ [ 1 = 1 ] && printf "Equals numbers" strings arbitrrias e demilitao de cdigo de funo
anmima ou nomeada.
(aspas simples) Considera na forma literal uma string. Ex:
1. Combina os valores separados por vrgulas com o caractere
Ex:
1. Imprime a frase na forma que se encontra: "1":
$ echo 'Meu usurio: $USER' $ echo {a,b,c}1 #Resulting: a1 b1 c1
Ex:
2. Algumas combinaes, como visto no exemplo, so possveis:
(aspas duplas) Avalia o contedo da string. $ echo {,a}{,b}2 #Resulting: 2 b2 a2 ab2
Ex:
1. Ao imprime a frase faz a substitui da varivel "$USER" por seu
3. So geradas strings como edu, efu e ebu:
Ex:
respectivo valor de ambiente: $ echo e{d,f,b}u
$ echo "Meu usurio: $USER" Ex:
Ex:
4. Caso seja necessrio que se tenha dois dgitos, coloque um
2. Dispem a troca da varivel "$$" pelo identificador do zero a esquerda:
processo: $ echo {05..99} #Resulting: 05 06 07 ... 99
Ex:
$ echo "PID do terminal: $$" 5. Semelhante ao exemplo anterior, porm com trs dgitos:
$ echo {000..100}
`` (aspas invertidas) Avalia e executa o comando.
Ex:
6. A combinao entre elmentos dos conjuntos d-se na forma
1. Uni o resultado do comando pwd com o do echo:
Ex:
que o primeiro elemento relaciona-se com o primeiro at o ltimo
$ echo "Current dir: "`pwd` de outro conjunto. No exemplo, as primeiras strings so 1a, 1b e 1c
Ex:
2. Congela todos os processos do navegador chrome: e os ltimas so 4a, 4b e 4c:
$ echo {1,3,4}{a,b,c}
$ kill -19 `pidof chrome`
7. A gerao de strings acontece antes da passagem das
Ex:

mesmas como argumento para o programa touch:


> (sinal de maior) Direciona a sada de dados para um arquivo $ touch x{41,89,99}{.txt,.final}
ou dispositivo. Ex:
8. As combinaes diminuem repeties. No exemplo, evita-se 3
Ex:
1. Despeja a sada do comando whois para dentro do arquivo repeties prximas:
domain: $ rm /tmp/test/x{89,99}{.txt,.final}
Ex:
$ whois eduardoenemark.com.br > domain 9. So apresentados os objetos (diretrios e arquivos) que
Ex:
2. Direciona a sada do comando ls para o dispositivo /dev/null iniciam-se em "b","l" ou "m". Observe a combinao com o
(buraco negro): asterisco:
$ ls R / > /dev/null $ ls /{b,l,m}*
10. Um pequeno loop empregando o comando for:
Ex:

$ for pwd in "{code,base}{1,2,3,4}{$,@,=}";


>> (dois sinais de maior) Adiciona ao final de um arquivo ou
> do
dispositivo uma sada de dados. > echo $pwd >> ~/passwds
1. Grava as estatsticas no arquivo stat, aguarda 10 segundos e
Ex:
> done
adiciona ao final do arquivo as novas estatsticas: Ex:
11. Use ponto-ponto para definir um intervalo. No exemplo, o
$ iostat > stat ; sleep 10s ; iostat >> stat segundo conjunto ter "1", "2", "3", "4" e "5" como valores
2. Registra no arquivo users os usurios logados a cada 15
Ex:
combinatrios:
minutos: $ echo {a,b}{1..5}
Ex:
$ while [ true ]; do who >> users; sleep 15m; 12. Use ponto-ponto em mais de um conjunto para uma
done & combinao poderosa:
$ touch /tmp/{a..z}{0..9}
Ex:
2> (dois seguido de sinal de maior) Direciona a sada de erro para 13. Observe uma combinao de formato misto:
um arquivo ou dispositivo. $ touch {a..z}{0..9}{@,\$,%}{xy,rf}.txt
Ex:
1. Direciona o erro do comando ls para o arquivo no-xxx:
Ex: 14. Poupe tempo e esforo em comandos que recebem
$ ls xxx 2> no-xxx argumentos que podem ser automatizados:
$ rm {a..y}{0..8}*xy.txt
2. Grava qualquer erro gerado pelo comando service no arquivo
Ex:
Ex:
15. Use a forma valor inicial, ponto-ponto, valor final, ponto-
error.log: ponto e o valor de incremento do intervalo para maior
$ service virtualbox status 2> error.log

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 17

3. O efeito de interporlao tambm acontece no here string:


Ex:
flexibilizao. No exemplo, apenas apresentado os nmeros
mpares entre 1 e 10: $ tee <<< "Hello ${USER}"
Ex:
$ echo {1..10..2} #Resulting: 1 3 5 7 9 4. vivel colocar as palavras em mais de uma linha:
Ex:
16. A mesma ideia que do exemplo anterior,porm com letras: $ tee <<< '
$ echo {A..Z..6} #Resulting: A G M S Y > Now go or break...
Ex:
17. Valores negativos, tambm, so aceitos em todas as formas > Was all work.'
construdas:
$ echo metal{-10..20..5} \ (escape - contrabarra) 1) Torna literal caracteres de significado
Ex:
18. O isolamento de cdigo outra forma de emprego. No especial; 2) Indica o prosseguimento do programa, opes e
exemplo, combinado o here document: argumentos nas prximas linhas.
$ { Ex:
1. Ser apresentado na forma que est. No ocorrer a
> read band
> echo I am listing $band interpolao para "$USER":
$ echo "Variable of user: \$USER"
> } <<< "Amon Amarth" Ex:
Ex: 2. Ao invs de criar dois arquivos, criado apenas um de nome
19. Assim, tambm, possvel direcionar a sada para um
de "Computer Science":
arquivo, por exemplo:
$ touch Computer\ Science
$ { Ex:
> date 3. Faz com que o direcionador de sada (sinal de maior) seja
> head /proc/iomem interpretado como um argumento comum:
> } > /tmp/memnow $ expr 2 \> 0
4. Os caracteres especiais pipeline e parnteses ficam sem efeito
Ex:

com o uso do escape:


#! (shebang - cerquilha mais exclamao) Sempre na primeira linha $ echo Use \| \(pipeline\) to comunication.
de um script informa qual o caminho do interpretador do Ex:
5. Desmembrar a codificao realizada no awk em vrias linhas:
cdigo do arquivo. $ awk \
1. Quando o cdigo Shell Script utiliza-se por padro o bash:
Ex:
> 'BEGIN{FS=":"}
#!/bin/bash > $3 > 1000 {print $1}'
Ex: /etc/passwd
2. O cdigo sendo do tipo AWK, ento alm do caminho
6. Os argumentos de tr so posto na prxima linha:
Ex:
tambm o acrscimo da opo "-f":
#!/usr/bin/awk -f $ printenv PATH | tr \
> ':' '\n'
3. Para scripts que contenham cdigos do tipo Perl:
Ex:

#!/usr/bin/perl
# (comentrio - cerquilha) Texto descritivo sem efeito de
<<HEREDOC (here document - dois sinais de menor e um processamento sobre determinada parte do cdigo ou
delimitador prprio) Cria um arquivo virtual para servir como
programa.
Ex:
1. Depois da opo "-a" posto um comentrio para informar
entrada para determinado programa.
Ex: que ser acrescido arquivos ocultos:
1. O delimitador definido "TEXT" e ao encontra-lo novamente
$ ls -a #Listing hidden files.
na quarta linha encerrado o limite do arquivo: Ex:
2. O comentrio pode ser posicionado no final de uma linha ou
$ cat <<TEXT
> This is text based in here document, ocupar toda ela:
$ #Date default format.
> who is virtual file.
$ date
> TEXT
Ex:
2. O nome do marcador pode ser personalizado para melhor
definio do objetivo a ser alcanado. No existe uma regra prpria $( ) (subshell cifro seguido de parnteses) Executa os comandos
para nomes. Neste exemplo usado "CALC" para expressa o uso de contidos no subshell em uma outra instncia de
clculos matemticos, mas poderia ser usado outro como "MATH": processamento (subprocesso).
1. O resultado obtido do pwd apresentado pelo echo:
Ex:
$ bc <<CALC
> scale = 2 $ echo $(pwd)
2. O clculo realizado pelo bc e depois exibido pelo printf:
> x = 20 Ex:

> ++ x $ printf $(bc <<< "2 ^ 10")


3. A varivel files dinamicamente suporta na forma de array os
> CALC Ex:

3. O here document interpreta o seu contedo interno, logo a


Ex:
nomes dos diretrios e arquivos providos de ls:
presena de variveis tero os seus valores substitudos e o seu de $ files=($(ls))
subshell ou aspas invertidas sero executados e imprimiro apenas $ echo ${files[1]}
o resultado da execuo: Ex:
4. O pipeline e outros smbolos especiais podem ser utilizados
$ cat <<INFO dentro de um subshell livremente:
> Name: ${USER}, location: `pwd` $ echo "CPU's Cores: $(lscpu | 'awk FNR == 4
> INFO {print 2}')"

<<< (here string trs sinais de menor) Injeta uma cadeia de ( ) (agrupador parnteses) Realiza a unio de sada de
caracteres no programa. Essa forma similar ao here comandos.
document tem como unidade o word (palavra) Ex:
1. Imprime o resultado do comando free conjuntamente com o
Ex:
1. Quando apenas uma nica palavra, as apas so dispensveis: do ls:
$ cat <<< Chess $ (free ; ls -a)
Ex:
2. O direcionamento de apenas duas palavras ou mais exige o Ex:
2. Uni a mensagem provida de echo e as linhas correspondentes
uso de aspas simples ou duplas: ao padro "box" dos nomes dos pacotes do repositrio:
$ cat <<< "Mozilla Firefox" $ (echo "Ocorrences:"; apt-cache search

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 18

10. A adio de opes vivel, como visto para command que


Ex:
virtualization | grep i box)
3. Ao invs de despejar a sada dos comandos date e awk
Ex:
recebe "ls" com "-l":
individualmente atravs de duas linhas de comandos, elas podem $ command="ls -l"
ser unidas em apenas: $ $command ~
Ex:
$ (date; awk '/reserved/' /proc/iomem) > 11. Caso seja necessrio retornar um valor padro na situao
~/reserved que a varivel "xyz" esteja vazia ou no exista, ento siga a
seguinte forma:
>& (maior seguido de ampersand) Direciona a sada de dados e de $ printf ${xyz:-"default value"}
Ex:
erros para um arquivo ou dispositivo. 12. A forma "${var:=value}" comporta-se da mesma que o
Ex:
1. Injeta no arquivo file o resultado da execuo do echo: exemplo anterior, porm atribui o valor "default value" a "xyz":
$ echo Ok >& ~/file $ printf ${xyz:="default value"}
Ex: $ echo $xyz
2. No mesmo sentido lgico que o exemplo anterior: Ex:
$ uname a | grep y >& ~/result 13. Apresenta a quantidade de caracteres atribudos a varivel
Ex:
3. Apenda ao final do arquivo file o resultado da operao "xyz":
$ echo ${#xyz}
independentemente do seu resultado. O uso dessa forma exige o Ex:
descritor explcito: 14. Para remover a parte inicial de uma string em uma varivel
$ echo Go! >> ~/file 2>&1 use "${var#padrao}". No exemplo o resultado ser apenas "Violin
Concert":
$ album="Tchaikovsky Violin Concert"

Shell Script
$ echo ${album#Tchaikovsky}
Ex:
15. Para eliminar o final use a forma "${var%padrao}":
$ echo "Author: ${album%"Violin Concert"}"
Ex:
Varivel o espao de memria nomeado para armazenar 16. A forma "${!prefix*}" busca no ambiente os nomes das
um determinado valor a ser trabalhado para uso em um varivel com determinado comeo. No exemplo so listadas que
iniciam com "H":
algoritmo. O valor atribudo pode ter natureza nmerica ou
$ echo ${!H*}
literal, algumas linguagem exigem que se faa tal Ex:
17. Indica a posio de incio da string vista na forma abaixo. A
diferenciao no momento da declarao, enquanto que contedo da varivel ser apresentado a partir da posio "5":
outras no fazem tal distinto, que o caso do prprio $ echo ${album:5}
Shell Script e PHP. Ex:
19. Use esta outra forma para indicar comeo e fim das
Ex:
1. Cria na sesso corrente a varivel de nome distro e a atribui a posies, no exemplo iniciado na posio 5 posio at o
literal "linux" e na prxima linha realiza a impresso. Observe que terceiro caractere adiante:
no momento de atribuio o "$" (cifro) utilizado: $ echo ${album:5:3}
Ex:
$ distro="linux" 20. Neste exemplo na varivel author substitudo a literal "a"
$ echo $distro por "x":
2. Atribui a literal "Hello" para msg, depois adiciona a ela
Ex:
$ author=Handel
mesma outra literal "World", ento a impresso resultar na $ echo ${author/a/x}
Ex:
mensagem Hello World: 21. Para excluir omita a terceira parte como visto no cdigo:
$ msg="Hello" $ echo ${author/a}
22. A varivel tmp recebe a string author e ao usar a forma
Ex:
$ msg=$msg" World"
$ echo $msg "${!var}" faz referncia indireta ao seu contedo da varivel
Ex:
3. Mesmo efeito do exemplo anterior. Somente com a utilizao author:
de aspas duplas possvel o efeito da interporlao: $ tmp=author
$ msg="Hello" $ printf ${!tmp}
$ msg="$msg World"
$ echo $msg
Ex:
true a uma representao embutida no shell para designar
4. Operaes matemticas : o valor de verdadeiro. Tenha em mente que o valor
$ number=10
$ expr $number + 20 mencionado em sua forma numrica igual a 0.
1. O comando echo sempre executar devido ao
Ex:
Ex:
5. As variveis podem ser utilizadas para compor argumentos
para comandos: condicionamento sempre verdadeiro do true:
$ cd /home/$USER $ true && echo True
Ex:
Ex:
6. Uma varivel pode receber dinamicamente o resultado da 2. Atravs deste simples cdigo possvel constatar o valor de
execuo de um subshell: true:
$ lastObject="$(ls | tail -1)" $ true; echo $?
$ printf "%s\n" $lastObject
Ex:
7. Use aspas invertidas para promover a execuo de um false a representao embutida no shell para designar o
comando e a sada atribuda a varivel path: valor de falso. Em sua forma nmerica igual 1.
1. De forma inversa ao exemplo 1 do true:
$ path="`pwd`" Ex:

$ print $pwd $ false || printf False


Ex:
8. Quando necessrio injetar uma varivel em meio de uma Ex:
2. Semelhante ao cdigo visto no exemplo 2 de true:
string, ento faa uso do "${var}": $ false; printf $?
$ numbers=123456
$ echo "password: xyz${numbers}Qxb"
Ex: if Realiza a execuo de comandos na forma de um prvio
9. Uma varivel pode receber o nome de um programa e depois
teste condicional. Se a condio do teste for verdadeira,
ser executada como se fosse o prprio em linha de comando:
$ command="echo" ento os comandos entre then e fi sero realizados.
$ $command "Hello with variable"

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 19

Ex:
1. Um simples teste de verificao de igualdade com uso do $ if [ $file_length -le $max_length ];then
programa "[": > echo "Zipping file..."
$ if [ 1 = 1 ]; then echo "Equals"; fi > zip /tmp/soprano.zip /tmp/soprano
2. Se o usurio logado na sesso corrente no for root, ento os
Ex: > elif [ $file_length -ge `expr $max_length
dois comandos echo sero executados: '*' '2'` ];then
$ if expr $UID != 0 > echo "Dividing file in 3 parts..."
> then > split -d -n 3 /tmp/soprano /tmp/soprano-
> echo You are not root part
> echo Use \"su l\" to became root. > else
> fi > echo 'No operation! file is very big.'
Ex:
3. Se a varivel "$num" for menor que 4, ento sero > fi
processados os comandos entre then e fi:
$ num=3 case Assemelha-se em mesmo sentido lgico ao if, elif e
$ if [ $(bc <<< "$num < 4") ];then else juntos, porm o uso do case mais adequado quando
> echo Variable \$num is less than 4 os valores de entrada so conhecidos e cada valor
> num=10
condiciona determinada ao.
> echo Now is 10 Ex:
> fi 1. No cdigo a mensagem apresentada ao final condicionada
de acordo com o nome do pas digitado. O asterico sinaliza
comportamento padro para os casos de desconhecimento do
else No caso onde necessrio executar algum cdigo valor do valor testado:
padro ou apresentar uma mensagem se o teste condicional $ read -p "Hello. What is your country? "
do if falhar. country
1. Executa o comando date com o seu argumento e se for
Ex:
$ case "$country" in
menor que 6 cara na execuo da primeira mensagem, seno ser > Brazil)
apresentado a frase em else: > continent="America"
$ if [ `date +"%H"` -gt 6 ] > ;;
> then > "South African")
> echo Still is night > continent="African"
> else > ;;
> echo Already is day > Mongolia)
> fi > continent="Asia"
Ex:
2. Verifica se no caminho da varivel "$SHELL" tem o termo > ;;
bash, caso positivo apresenta a primeira mensagem, seno a > *)
segunda: > continent="Europe or Oceania"
$ if [ $(grep -i bash <<< $SHELL) ] > ;;
> then > esac
> echo Default shell of Linux $ printf "Continent: %s.\n" "$continent"
Ex:
> else 2. O uso de expresso regular pode ser utilizada para promover
> echo Other shell um teste baseado em padro ao invs de valor absoluto:
> fi $ read -p "Type a letter or number: " -n 1
input
$ case "$input" in
elif Nos casos onde preciso realizar mais de um teste > [a-zA-Z])
condicional, quando apenas o if no suficiente. > echo -e "\nWas typed a letter"
1. Se existir o arquivo file1 em home ser apresentado o seu
Ex:
> ;;
contedo pelo comando cat, caso no tenha procurado pela > [0-9])
existncia de file2 e se encontrado executa o comando more. Se > echo -e "\nWas typed a number"
em todo o caso no for encontrado nem file1 e file2, ento criado > ;;
file2 com a frase: "This create file2 in home". Em um segunda > *)
execuo do cdigo o comando elif executar: > echo -e "\nOk. You inserted a special
$ if [ -e ~/file1 ] > char"
> then > ;;
> cat ~/file1 > esac
> elif [ -e ~/file2 ] > printf 'Thank by your participation!\n'
Ex:
> then 3. O cdigo de retorno da execuo de um comando pode servi
> more ~/file2 como objeto de um teste para condicionar outras aes de acordo
> else com determinado valor:
> cat > ~/file2 <<TXT $ com='wget http://educode.com.br/info/code'
> This create file2 in home. $ $com >& /dev/null
> TXT $ case "$?" in
> fi > 0)
2. Gera um arquivo a partir do comando yes e atravs dos
Ex: > echo 'Download Ok!'
testes das condies decidido por compactar, dividir ou alertar > ;;
sobre o tamanho do arquivo: > 4)
$ timeout -s 9 15s yes "Anna Netrebko" > > echo "5 minutes to try again..."
/tmp/soprano > sleep 5m ; $com
$ file_length="$(du /tmp/soprano | cut -d '/' > ;;
-f 1)" > 8)
$ max_length=`expr '1024' '*' '1024'` > echo 'File not find.'

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 20

> ;; > done


> esac > done

while Executa uma poro de cdigo de forma interativa until Executa uma poro de cdigo de forma interativa at
at que a condio de teste seja falsa. Tal comando dito que a condio de teste seja verdadeira. Observe que tal
que se trata de um loop (lao) devido a sua caracterstica comando requer progresso do lao na condio inversa do
computacional. while.
1. Equivalente ao exemplo 1 feito no while:
Ex: Ex:
1. Um loop de cdigo simples que conta de 0 at 3:
$ while [ ${i:=0} le 3 ] $ until [ "${i:=0}" -gt 3 ]
> do > do
> echo $i > echo $i; let i++
> let i++ > done
2. Semelhante ao exemplo 2 realizado em while:
Ex:
> done
2. A execuo de um lao pode ser infinita com o uso de true:
Ex:
$ until false; do who; sleep 2s; done
3. O cdigo do exemplo gera um arquivo de teste em /tmp de
Ex:
$ while true
> do nome violinist at que ele tenha o tamanho de 20Kb:
> who; sleep 2s $ file="/tmp/violinist"
> done $ rm $file >& /dev/null ; touch $file
3. A cada interao do loop perguntado ao usurio se deseja
Ex:
$ # Max file length: 20KB
encerra-lo, caso digite "y" para sim terminado o processamento: $ until expr "`du $file | cut -f 1`" ">="
$ while expr "$out" "!=" "y" "20" > /dev/null
> do > do
> echo "Log: `date`" > printf "Julia Fischer\n" >> $file
> read p "Exit (y or n): " out > done
> done
break Causa a interrupo imediata de um lao quando
for Executa uma poro de cdigo de forma interativa at alcanado. Em um loop quando alcanado determinada
esgotar todos os valores da lista. A diferena entre Esse condio e no se deseja mais a progresso do
comando dito que se trata de um loop (lao) devido a sua processamento, ento o uso do break o mais adequado.
caracterstica computacional. Ex:
1. Conta de 0 a 3. Essa forma de cdigo tem resultado igual a
Ex:
1. Conta de 0 at 3. Observe a diferena : forma do exemplo 1 do while:
$ for i in 0 1 2 3 $ while x=`expr ${x:="0"} + 1`; do
> do > [ "$x" -gt 3 ] && break
> echo $i > echo "$x"
> done > done
Ex:
Ex:
2. Equivalente ao exemplo anterior: 2. Gera um chave de tamanho mximo de 20 dgitos aleatrios:
$ for i in {0..3}; do echo $i; done $ key=""
Ex:
3. Realiza a contagem da quantidade de diretrios e arquivos de $ until false; do
"/etc" que comecem com uma vogal: > expr "${#key}" ">=" 20 > /dev/null &&
$ for file in ls -d /etc/[aeiou]* break
> do > key="${key}$(sleep 1s;rand -u -N 1 -M 9)"
> [ -d "$file" ] && let count_dir++ > done
> [ -f "$file" ] && let count_file++ $ echo $key
> done
> printf "Directories: $count_dir \n" continue Ignora a poro de cdigo restante do lao e parti
> printf "Files: $count_file \n" para o prximo loop. Ao contrrio do break que causa uma
4. So criadas trs pastas em home e em tmp01 ficaro todos os
Ex:
interrupo, o continue sinaliza que todo cdigo posterior a
arquivos de nome "1a" at "5f", em temp02 os de "5g" at "9z" e
tmp03 os demais at "15z":
ele dever no ser processado em determinado momento.
Ex:
$ mkdir ~/tmp01 ~/tmp02 ~/tmp03 1. Conta de 0 a 3, porm ignora o 2:
$ for i in {1..15} $ while x=`expr ${x:="0"} + 1` && [ "$x" -le
> do 3 ]
> for j in {a..z} > do
> do > [ "$x" -eq 2 ] && continue; echo "$x"
> if [ "$i" -le "5" ]; then # up to '5f' > done
2. Semelhante ao exemplo 2 do break, porm a diferena que
Ex:
> if (expr "$i" "=" "5" && expr "$j"
">" "f") > /dev/null ; then dgitos iguais no podero ficar lado a lado:
> dir="tmp02" $ key=""
> else $ until false; do
> dir="tmp01" > expr "${#key}" ">=" 20 > /dev/null &&
> fi break
> elif [ "$i" -le "9" ] ; then # up to > number="$(sleep 1s;rand -u -N 1 -M 9)"
'9z' > [ $(expr length "$key") -eq 0 ] &&
> dir="tmp02" key="$number"
> else > [ $number -ne $(expr substr "$key" `expr
> dir="tmp03" length "$key"` 1) ] || continue
> fi > key="${key}${number}"
> touch ~/$dir/"${i}${j}" > done

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 21

$ echo $key # 1 arg.: device


# 2 arg.: directory
exit [cdigo de retorno] Provoca o encerramento de um # 3 arg.: speed
script ou programa. Observe que se o cdigo de retorno for growisofs Z "$1" r J "$2" speed="$3"
igual a 0, ento tudo ocorreu como esperado, caso contrrio $ chmod +u ~/record-dvd
o cdigo dever ser igual ou maior que 1. Use a varivel "$?" $ ~/record-dvd /device/sr0 ~/test 4
para captura o cdigo de retorno aps a execuo de um
script ou programa para saber se houve sucesso ou falha na function Poro de cdigo nomeado com a finalidade de
execuo. Tenha em mente que podem existi vrios exits no ser reutilizado em vrios trechos do programa. Esta forma
mesmo cdigo e que ao alcance do primeiro interromper a possibilita diminiur as repeties de tarefas realizadas
execuo do resto do cdigo. dentro de um programa ou script. Ao contrrio de outras
1. Atravs do here document criado um script com o nome de
Ex:
linguagens que uma funo deve retornar um valor, em
pgr01 em home. O cdigo testa o "$UID" do usurio corrente e se Shell script o retorno de um valor serve apenas para indicar
for igual a 0 indica que super usurio, ento executa o mkdir. sucesso ou algum ponto de falha, logo percebvel que uma
Caso no seja executa o echo e devolve como cdigo de retorno funo tem comportamento mais de uma procedure
igual a 1 (houve falha):
(procedimento) do que propriamente de function.
$ cat > ~/pgr01 <<CODE Ex:
> #!/bin/bash 1. A forma oficial para a declarao de uma funo consiste em
> if [ $UID eq 0 ] ; then nome , parnteses e cdigo posto entre chaves:
> mkdir /etc/tmp $ hello(){
> else > echo "Hello ${USER}!";
> echo No root! > }
> exit 1 $ hello
2. Outra no oficial, porm aceita pelo bash consiste no uso da
Ex:
> fi
> CODE palavra reservada function, nome da funo e o cdigo entre
$ bash ~/pgr01 chaves:
$ echo $? $ function hello {
2. No cdigo do script do exemplo existem 3 exits, sendo o
Ex: > echo "Hello ${USER}!";
primeiro caso seja passo a quantidade de argumentos diferente de > }
um, o segundo se o argumento esteja vazio e o ltimo exit indica $ hello
Ex:
de forma explcita o trmino da execuo do cdigo: 3. Uma terceira forma, no oficial, aceita combina as outras
$ cat > pgr02 <<CODE duas formas dos exemplos anteriores:
> #!/bin/bash $ function hello {
> [ \$# -eq 1 ] || exit 1 > echo "Hello ${USER}!";
> [ "\${#1}" lt 1 ] && exit 2 > }
> touch "\$1" $ hello
4. A funo today apresesenta o dia da data atual. Observe o
Ex:
> exit 0
> CODE uso da funo entre aspas invertidas para compor a string para o
$ bash ~/pgr02 # Sem argumentos. echo:
$ echo $? # Sada igual a 1. $ today() {
$ bash ~/pgr02 "" # Argumento vazio. > date +"%d"
$ echo $? # Sada igual a 2. > }
$ bash ~/pgr02 newfile # Argumento informado. $ echo "Today is `today`"
Ex:
$ echo $? # Sada igual a 0. 5. No cdigo do exemplo utilizado a passagem de argumento
para a funo log. Atente-se que existe o argumento externo
argumento Representa um determinado valor informado passado na chamada do script, "2s", e internamente determinadas
que ser trabalhado dentro de um programa ou script. O partes podem passar argumento para uma ou mais funes, no
acesso aos argumentos feito de forma posicional, logo exemplo a sada do comando who:
$ nano ~/users-on
para acessar o primeiro use "$1" ou para acessar o dcimo: #!/bin/bash
"$10". log(){
1. No script de nome arguments espera receber dois
Ex:
clear
argumentos. Para contar a quantidade de argumentos use "$#" e echo e "`date`\n$1"
para acessar todos eles de uma nica vez use a forma "$@" ou }
"$*": while true; do
$ cat > ~/arguments <<CODE sleep "$1" ; log "`who`"
> echo First: "\$1" done
> echo Second: "\$2" $ chmod +x ~/users-on
> echo Total: "\$#" $ ~/users-on 2s
> echo All: "\$@"
> CODE return Retorna o cdigo resultante da invocao de uma
$ bash ~/arguments Joseph Haydn funo. Observe que o cdigo de retorno deve ser entre 0 a
2. O cdigo do script record-dvd realiza a gravao do contedo
Ex:
255. Como j de conhecimento o valor zero indica sucesso,
de um diretrio informado sobre determinada velocidade em uma
mdia montada sobre algum dispositivo do sistema: enquanto que valores diferentes destes indicam falha.
1. Uma funo pode possuir mais de um return conforme a
Ex:
$ nano ~/record-dvd
#!/bin/bash necessidade. Ao se encontrado o cdigo da funo daquele ponto
retorna um cdigo e encerrado:

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8
Relance Comandos Linux. Professor Eduardo Vieira
eduardo.barbosa@ifb.edu.br 22

$ function _xh(){
> if [ -f /tmp/file.xh ]; then
> return 1
> fi
> touch /tmp/file.xh
> return "$?"
> }
$ _xh ; echo $? # 0: create file.
$ _xh ; echo $? # 1: ignored create file.
2. O cdigo da funo random trata a diversidade que poder
Ex:

ser presente no argumento. Repare que poderia ser feito um


encerramento atravs do exit caso fosse verdadeiro o "if" ou "elif",
porm optou-se por prosseguir o processamento e atravs da
varivel dinmica "$?" o usurio tomar conhecimento que algo
no est correto:
$ random(){
> LIMIT=999 ; code=0
> [ "$#" -eq 0 ] && max=$LIMIT || max="$1"
> if grep -i -e "[a-z]" <<< "$1" >
/dev/null; then
> code=1 #Code to argument with letter.
> elif [ $max -gt $LIMIT ]; then
> code=2 #Code to value bigger than LIMIT
> fi
> if expr $code '!=' 0 > /dev/null ; then
> max=$LIMIT
> fi
> rand -N 1 -M "$max"
> return ${code}
> }
$ random 111111a ; echo $? #Out equal to 1
$ random 1111111 ; echo $? #Out equal to 2
$ random ; echo $? #Out equal to 0
$ random 98 ; echo $? #Out equal to 0

Outras Linguagens
AWK Voltada para a busca e processamento de padres de
arquivos ou fluxo de dados. Possibilita trabalhar tanto em
linha de comando de forma simples at compor complexos
programas. Ela trabalha com a ideia da decomposio do
texto/fluxo de dados em campos de delimitador padro:
espao ou tabulao. Tenha em mente que no se trata
apenas de uma alternativa ao comando cut, pois possvel
construir relaes aritmticas, relacionais, de
correspondncia e lgicas, alm de ter a disposio
estrutura semelhante a linguagem C.
Ex:
1. Imprime em tela o primeiro, sexto e stimo campo de cada
coluna da sada do df acrscido da opo "-T":
$ df -T | awk '{print $1, $6, $7}'
Ex:
2. Seleciona apenas a linha da sada de df que tenha o termo
"boot". Para representar todos so campos de uma linha use "$0":
$ df -T | awk '/boot/ {print $0}'
Ex:
3. A opo "-F" informa o delimitador entre os campos. No
cdigo apresentado o primeiro campo da linha que contiver o
padro "usr" em passwd em etc:
$ awk -F ":" '/usr/{print $1}' /etc/passwd
Ex:
4. Seleciona a apenas o terceiro campo que seja maior que 500:
$ awk -F ":" '$3 > 500 {print $0}'
/etc/passwd
Ex:
5. Apresenta os arquivos em /etc que tenham tamanho menor
ou igual a 45 bytes:
$ du /etc | awk '$1 <= 45 {print $0}'
Ex:
6. Mostra o ltimo campo de cada coluna desde que no tenha
em seu contedo o termo "on":
$ df | awk '$(NF) != "on" {print $(NF)}'

Este trabalho est licenciado sob a Licena Creative Commons Atribuio 4.0 Internacional. Para ver uma cpia desta licena, visite
http://creativecommons.org/licenses/by/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Verso 1.1.8

Você também pode gostar