Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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
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.
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:
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:
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:
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:
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
$ 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:
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
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:
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:
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
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
$ setterm inversescreen on
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:
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:
/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
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
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
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
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:
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
$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"
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:
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
#!/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:
<<< (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
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:
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
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
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:
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