RELANCE Comandos Linux



Documentos relacionados
Aula 4 Comandos Básicos Linux. Prof.: Roberto Franciscatto

Sistema Operacional Unidade 5 - Iniciando o modo texto. QI ESCOLAS E FACULDADES Curso Técnico em Informática

PROCESSOS COMPONENTES DE UM PROCESSO. A execução de um processo possui vários componentes. PID e PPID

Aula 02. Introdução ao Linux

Introdução a. Shell Script. Clésio Matos

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

Formação de Administradores de Redes Linux LPI level 1. Aula 3 SENAC TI Fernando Costa

LISTA DE COMANDOS DO LINUX 1

GNU/Linux/Bash. Aula 2

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

Entendendo o Sistema Operacinal. Prof. Armando Martins de Souza armandomartins.souza@gmail.com

Revisão Aula Explique a MBR(Master Boot Record)

Principais Comandos do Terminal no LINUX

Roteiro 3: Sistemas Linux arquivos e diretórios

Instalação e configuração Linux CentOS 6.x

SOFTWARE LIVRE. Distribuições Live CD. Kernel. Distribuição Linux

Manual de Comando Linux

Introdução ao Linux: Parte I

Introdução ao Linux. Instituto Federal de Educação, Ciência e Tecnologia do Sul de Minas Gerais Campus Pouso Alegre

Conteúdo 1 Comandos Básicos. Questão 1: Que comando permite encerrar o sistema definitivamente?

Administração de Sistemas Livres

Laboratório de Sistemas Operacionais

Gerenciamento de Processos

Manual Captura S_Line

Partição Partição primária: Partição estendida: Discos básicos e dinâmicos

Sistemas Operacionais Abertos. Prof. MSc. André Yoshimi Kusumoto

Manual de Instalação (TEF LOJA)

Livro Caixa. Copyright ControleNaNet

Oficina de ShellScript

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

EN3611 Segurança de Redes Prof. João Henrique Kleinschmidt Prática 2 Certificados digitais Permissões Comandos Password cracker

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Comandos Básicos do Linux/Unix

Lazarus pelo SVN Linux/Windows

MANUAL DO SISTEMA GT WEB CALL. Teledata

Introdução ao Shell Script

Julgue os itens a seguir referentes a conceitos de software livre e licenças de uso, distribuição e modificação.

Iniciação à Informática

PMAT. Sistema de Análise e Acompanhamento de Operações. Manual. Desenvolvido pelo BNDES AS/DEGEP

Introdução ao Sistema. Características

MANUAL DE UTILIZAÇÃO

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

OCOMON PRIMEIROS PASSOS

LABORATÓRIO UNIDADES 1 REVISÃO LINUX E COMANDOS BÁSICOS ABRINDO A MÁQUINA VIRTUAL UBUNTU SERVER PELO VIRTUALBOX

Vendas. Manual do Usuário. Copyright ControleNaNet

GUIA RÁPIDO SISTEMA ANTIFURTO THEFT DETERRENT

Atualização De Mapas GPS Apontador. 1º Acessar site: 2º Selecione o Idioma para Português no seu canto direito.

Sistema Operacional Unidade 8.2 Instalação de aplicativos. QI ESCOLAS E FACULDADES Curso Técnico em Informática

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

Objetivos Instalação Gerência de Pacotes UNIX Shell. Curso UNIX. Matheus Braun Magrin Felipe dos Santos Silveira

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

Dicas para usar melhor o Word 2007

Licenciatura em Engenharia Informática Departamento de Engenharia Informática Instituto Superior de Engenharia do Porto

Manual de operação. BS Ponto Versão 5.1

Procedimentos para Reinstalação do Sisloc

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

ÍNDICE. 1. Introdução O que é o Sistema Mo Porã Como acessar o Site Mo Porã Cadastro do Sistema Mo Porã...

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

V 1.0 LINAEDUCA - GUIA DE USO

Gerenciando Pacotes *.deb

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Manual do Sistema. SMARsa. Módulo WEB

Sistemas Operacionais Aula 01

NetEye Guia de Instalação

Manual do usuário. Softcall Java. versão 1.0.5

Lição 1 - Criação de campos calculados em consultas

Portal do Senac: Área Exclusiva para Alunos Manual de Navegação e Operação

Menu Utilitários. Atualização do Banco de Dados Atualização e organização dos arquivos existentes

PROVA DE NOÇÕES DE MICROINFORMÁTICA

Comm5 Tecnologia Manual de utilização da família MI. Manual de Utilização. Família MI

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Manual do usuário. Mobile Auto Download

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

Universidade Católica de Brasília Laboratório de Redes de Computadores 1 Prof Eduardo Lobo. Comandos LINUX. principais vi ifconfig.

Fundamentos de Sistemas Operacionais. GNU / Linux. Prof. Edwar Saliba Júnior Março de Unidade GNU / Linux

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Manual do Painel Administrativo

Administração de Sistemas Operacionais Não-Proprietários II

Manual do Visualizador NF e KEY BEST

SISTEMA DE BANCO DE IMAGENS MANUAL DE USO

GUIA PARA HABILITAÇÃO DAS BIOMETRIAS LINEAR (SÉRIE LN) NO SOFTWARE HCS 2010 V9.0 (BETA 3) 11/06/2014

BEM-VINDO AO dhl PROVIEW

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Gerenciamento de Processos

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

MANUAL DO USUÁRIO SUMÁRIO

Campus - Cachoeiro Curso Técnico de Informática. Sistema de Arquivos. Prof. João Paulo de Brito Gonçalves

Google Drive: Acesse e organize seus arquivos

Transcrição:

1 RELANCE Comandos Linux As pessoas aceitarão sua idéia muito mais facilmente se você disser a elas que quem a criou foi Albert Einstein. Lei de Comim Prefácio O objetivo proposto por este texto técnico é de auxiliar na compreensão e utilização dos comandos Linux, além de constituir uma referência para consultas rápidas sempre que for necessário. Dado tal sentido justifica a forma da abordagem que tender a ser resumida, qualquer alongamento do texto é suficientemente conveniente para destacar elementos ou aspectos fundamentais. O presente trabalho é organizado a informar os termos aplicados a este texto, a instruir o formato empregado, os modos de execução e acesso, orientar sobre o ambiente de teste e na sequência os comandos são categorizados por finalidade - nos casos de mais de uma natureza permanecerá a dominante. Todos os comandos são exemplificados seguidos de pelo menos um exemplo para ilustrar a forma de utilização. A última grande parte discorre sobre arquivos de configuração, variávies de configuração e o shell nos seus elementos referentes a símbolos e a linguagem. Conteúdo Tabela de Termos... 1 Compreender o Formato... 2 Modo de Execução e Acesso... 2 Ambiente de Teste... 3 Manuais... 3 Arquivo & Diretório... 3 Recursos do Terminal...8 Gerenciamento de Pacote...9 Processo & Memória...9 Usuário & Grupos...10 Propriedade & Permissão...10 Configuração & Hardware...10 Sistema...11 Tela & Temporizador...12 Localizadores...12 Repetidores...12 Expressão e Aritméticos...13 Arquivos de Configuração...14 Variáveis de Ambiente...15 Símbolos do Shell...15 Shell Script...18 Outras Linguagens...22 Tabela de Termos Argumento: valor de referência a ser trabalho pelo programa. Background: plano de fundo ou segundo plano. Backspace: tecla que excluir caracteres. Concatenar: ato de unir duas ou mais parte em apenas uma. Comando: programa invocado via terminal. Distro: abreviação de distribuição Linux. Foreground: plano de frente ou primeiro plano. GID: Group Identification (Identificador do Grupo). Home: diretório pessoal do usuário. Interpolar: intercalação de partes literais com as de significância de execução. Laço: sinônimo de Loop. Literal: sinônimo de String. Loop: Execução repetitiva de comando até o alcance de determinada condição ou esgotamento de valores. Opção: mecanismo que mudar o comportamento padrão de um programa. PCI: Peripheral Component Interconnect (Interconexão de Componentes Periféricos). PID: Process Identification (Identificador do Processo). PGID: Process Group Identification (Identificador do Grupo do Processo). Recursividade: ação de operar sobre si mesmo. Regex: abreviação inglesa de expressão regular. Root: administrador (super usuário) de sistema operacional do tipo Linux. Sintaxe: forma convencionada.

2 SO: abreviação de Sistema Operacional. String: conjunto de caracteres. Wildcard: caracter curinga para representar um ou mais caracteres. ^ (Acento Circunflexo): representa a tecla CTRL. Compreender o Formato Por se tratar de um guia rápido a forma resumida é a prevista e conhecida para este tipo de texto. O entendimento sobre o formato da sintaxe dos comandos e exemplos precisam ser compreendidos neste momento para evitar desentendimentos ou equívocos. Todo comando tem uma sintaxe a ser seguida, seja simples ou um pouco mais complexa. Alguns comandos não necessitam de opção ou argumento, como o caso do pwd e do clear. Para utilizá-los basta digitar no terminal: $ pwd $ clear Outros comandos recebem somente opções ou não. Se a utilização de opções for facultativo, então ela aparecerá entre colchetes para indicar visualmente como visto abaixo para o comando free: free [opções] Existem outros comandos, que além das opções também recebem argumentos. O comando cp, por exemplo, recebe dois argumentos obrigatórios, sendo o primeiro o recurso alvo e o outro a localização que será enviado a cópia do recurso. Para indicar essa sintaxe é posta seguinte na forma: cp [opções] recurso destino Observe que o argumento esperado é disposto na forma nomeada, ao invés de chamar arg1 e arg2, assim foi colocado como recurso e destino para refletir o tipo de valor correto esperado pelo programa. Alguns programas não exigem qualquer tipo de opção, apenas é esperado um argumento ou mais, por exemplo, o type, que tem como única entrada o nome de qualquer programa: type programa Fique atento que todos os exemplos são ilustrativos, isto não significa que ao executar no terminal, por exemplo, o comando basename com o argumento /tmp/hello.odt terá tal arquivo como visto abaixo: próximo exemplo do comando cp possivelmente não terá o arquivo chamado file1 no diretório corrente, logo para viabilizar o teste é necessário criar tal arquivo e depois proceder com o teste: $ touch file1 # Criado arquivo file1 vazio. $ cp file1 file1.backup #Realizando o teste. Ao executar o comando apt-get com o argumento scribus, não significa que você tenha o pacote scribus instalado em seu sistema operacional e os valores dos argumentos nos exemplos não são absolutos, você poderá mudá-los, desde que respeite o tipo de valor esperado: $ apt-get purge scribus Ao último ponto que não serão abordadas todas as opções de todos os comandos apresentados, apenas as mais importantes, usuais e/ou interessantes. Caso queira saber mais sobre determinado comando utilize o comando man. Modo de Execução e Acesso Existem dois modos básicos relativos a operação de um programa ou acesso à arquivos e dispositivos, sendo elas na forma limitada ou privilegiada. As ações sobre objetos do próprio usuário ou programas que lêem dados do sistema operacional sem provocar qualquer anormalia ou violação de segurança e a alteração de configuração de conta ou da sessão podem ser realizados na forma limitada. Observe que para indicar tal modo é usado o símbolo "$" (cifrão) no início da linha de comandos, como será percebido nos exemplos adiante. Outras ações como alteração de parâmetros, argumentos ou mudança do sistema de permissão de determinado objeto de outro usuário, renicialização e desligamento do computador, alteração do estado ou mudança da prioridade de processos ou monitoramento de recursos restritos são viáveis através do acesso privilegiado, também chamado de modo root (Super Usuário). O símbolo "#" (cerquilha) no início da linha de comandos representa esse modo elevado. Tenha em mente que os símbolos tratados são convenções, mas que podem ser alterados nos arquivos de configuração do sistema ou nas variáveis de ambiente, além de ser possível através do comando sudo adquirir temporariamente acesso ou execução privilegiada estando no modo limitado. Observe abaixo a ordem das partes e ao executar o comando dmidecode de acesso restrito através do sudo será exigido a senha do Super Usuário: $ 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

3 Ambiente de Teste Se esta for a sua primeira vez ou não senti-se seguro para realizar os exemplos expostos, então utilize uma máquina virtual ou um computador sem uso cotidiano. Entre as duas opções, a forma mais comum é a utilização de ambiente virtualizado, pois qualquer falha que prejudicaria o correto funcionamento ficará isolado dentro do próprio sistema operacional virtualizado. O VirtualBox, VMware e Virtual PC são os mais populares para suportar plenamento o processo de virtualização. Ao preparar uma máquina virtual sempre tire uma cópia dela no final do processo de criação, isto será bem útil quando qualquer erro acontecer, pois poderá substituir o arquivo do sistema operacional com problemas pela cópia anterior sem grande dificuldades, além de evitar todo o processo de instalação e configuração que já foi realizado. Prefira realizar os testes nas distribuições Debian, tais como Ubuntu, Mint, Zorin, Peppermint, além do próprio. No site http://www.distrowatch.com dispõem em sua página inicial 100 distribuições Linux para download. Sempre observe a questão da arquitetura, pois é importante para o sucesso no processo de virtualização ou instalação física. Os exemplos desenvolvidos nesta obra foram realizados sobre o bash, Bourne Again Shell, logo não existem garantias do correto funcionamento em outros shells como Korn, C Shell ou Z Shell. Caso não tenha o bash, instale-o através do seu gerenciador de pacotes da distribuição escolhida, outra forma é de obter a partir do endereço eletrônico: http://ftp.gnu.org/gnu/bash. Manuais info [opções] [item] Imprime o documento Info do comando. Ex: 1. Realiza a saída do manual do programa ifconfig: $ info ifconfig man [opções] comando Renderiza o manual de referência de um programa. Ex: 1. Mostra o manual de uso do programa stat: $ man stat Ex: 2. Busca na descrição de todos os manuais pela palavra process (processo): $ man k 'process' Ex: 3. Pela força bruta faz uma busca global pela palavra-chave memory e apresenta em sequência o manual que tenha correspondência: $ man K memory Ex: 4. Faz breve descrição do programa a2p: $ man f a2p Ex: 5. Imprime na tela o caminho do manual do programa gcc: $ man ww gcc Ex: 6. Realiza busca nos nomes ou descrições dos manuais baseado em expressão regular: $ man --regex '^[a-z][0-9].$' Ex: 7. Semelhante ao exemplo 6, porém na forma resumida: $ man -k '^[a-z][0-9].$' Ex: 8. Localiza apenas os nomes dos manuais que tenham correspondência de acordo com a expressão regular: $ man --names-only --regex '^[0-9].+' Ex: 9. Encontra os nomes dos manuais correspondentes baseado no wildcard interrogação: $ man --names-only --wildcard 'c?t' Arquivo & Diretório basename caminho [sufixo] Imprime a última parte do caminho. Ex: 1. Imprimi o nome do último diretório, a saída do comando é bin: $ basename /usr/bin Ex: 2. Mostra o nome do arquivo sem a extensão odt: $ basename /tmp/utf8.odt.odt Ex: 3. Equivalente ao exemplo 2: $ basename s.odt /tmp/utf8.odt Ex: 4. Suporte para vários caminhos de uma única vez: $ basename -a /tmp/brasero /home/he-man base64 [opções] [arquivo] Codifica e decodifica uma entrada de dados ou um arquivo para texto. Ex: 1. O executável do Doro PDF é convertido para texto simples (codificar), assim é possível trafegar o arquivo por canais que possuam filtros de segurança, por exemplo serviços de e-mail: $ base64 doro-pdf.exe > /tmp/doro.txt Ex: 2. Revertendo o processo do exemplo anterior (decodificar): $ base64 d /tmp/doro.txt > /tmp/doro.exe Ex: 3. Codificando e decodificando um arquivo PDF. A forma longa de -d é --decode: $ base64 bash-guide.pdf > guide $ base64 --decode guide > bg.pdf Ex: 4. Com strings, também, é possível realizar o mesmo processo: $ echo Arch Enemy base64 cat [opções] arquivo Visualiza o conteúdo do arquivo. Ex: 1. Imprime o texto do arquivo /etc/apt/source.list: $ cat /etc/apt/source.list Ex: 2. Imprime em tela o conteúdo do arquivo /etc/aliases com enumeração das linhas do texto: $ cat n /etc/aliases Ex: 3. Apresenta em sequência o conteúdo dos arquivos (operação de concatenação) authors.txt, publishers.txt e readers.txt: $ cat authors.txt publishers.txt readers.txt chattr [opções] atributos arquivo Altera os atributos do arquivo. Ex: 1. Torna o arquivo config imutável: $ chattr +i config Ex: 2. Remove o atributo de apendamento do arquivo sum: $ chattr a sum Ex: 3. Remove o atributo de imutabilidade, efeito contrário do exemplo 1: $ chattr i config Ex: 4. Aplica o atributo de apendamento de forma recursiva sobre o diretório files: $ chattr -R +a files

4 cp [opções] recurso destino Copia arquivos e diretórios. Ex: 1. Realiza uma cópia do arquivo file1 para o nome file1.backup: $ cp file1 file1.backup Ex: 2. Copia recursivamente o diretório dir2 para /tmp: $ cp R dir2 /tmp Ex: 3. Em modo incremental solicita confirmação antes de sobrescrever o arquivo screen, caso exista em ~/others: $ cp -i /tmp/screen ~/others Ex: 4. Cria um hard link do arquivo file em home de nome hx: $ cp l /tmp/file ~/hx Ex: 5. Preserva o arquivo heros caso ele exista no local de destino: $ cp n /tmp/heros ~/heros Ex: 6. Cria um link simbólico de nome tomcat do arquivo tomcat7: $ cp s tomcat7 tomcat Ex: 7. Imprime em tela quais arquivos com a extensão php foram copiados para o diretório backup: $ cp v *.php backup/ Ex: 8. Copia todos os arquivos do diretório files que comecem com "0", "1" ou "2" seguindos de "a", "b" ou "c" para a pasta moved: $ cp files/[0-2][a-c]* moved Ex: 9. Reproduz os arquivos com a extensão doc do diretório articles para magazine: $ cp articles/*.doc magazine/ Ex: 10. Copia os arquivos que comecem com a letra "a" seguido de "0", "1" ou "2" e de extensão txt para a pasta boards: $ cp files/a[0-2]*.txt boards Ex: 11. Reproduz para o diretório masters os arquivos de /tmp que não tiverem a extensão odt: $ cp /tmp/!(*.odt) masters Ex: 12. Faz cópia para planets os arquivos que tenham a extensão xml ou pdf que estão no diretório descriptions: $ cp descriptions/*.{xml,pdf} planets/ cut [opções] [arquivo] Extair determinadas partes do texto de um arquivo. Ex: 1. Seleciona do texto apenas o primeiro byte de cada linha: $ cut -b 1 <<FILE > This is text test for command cut. > Virtual file by document here. > FILE Ex: 2. Extrai do primeiro até o 18º byte: $ cut -b 1-18 <<FILE > This is text test for command cut. > Virtual file by document here. > FILE Ex: 3. Exibe do texto do 23º byte até o último de cada linha: $ cut -b 23- <<FILE > This is text test for command cut. > Virtual file by document here. > FILE Ex: 4. Define como delimitador (opção "-d") entre campos o espaço em branco e apresenta a primeira palavra de cada linha: $ cut -d ' ' -f 1 <<FILE > This is text test for command cut. > Virtual file by here document. > FILE Ex: 5. Apresenta de cada linha o primeiro ao terceiro campo e tem como delimitador o ponto-e-vírgula: $ cut -d ';' -f 1-3 <<FILE > This;is;text;test;for;command;cut. > Virtual;file;by;here;document. > FILE Ex: 6. Extrai de cada linha o quarto campo em diante, toma como delimitador entre as palavras o ponto-e-vírgula e o delimitador entre os campos de saída permanece como espaço em branco: $ cut -d ';' -f 4- --output-delimiter=" " <<FILE > This;is;text;test;for;command;cut. > Virtual;file;by;here;document. > FILE du [opções] [recurso] Estima o espaço usado pelo arquivo. Ex: 1. Calcula o tamanho do diretório /bin em megabytes: $ du m /bin Ex: 2. Imprime o tamanho em bytes do arquivo hostname em /etc: $ du -b /etc/hostname Ex: 3. Exibe no formato legível para humanos a quantidade da medida do arquivo /etc/passwd: $ du -h /etc/passwd Ex: 4. Apresenta o sumário final legível para humanos referente ao diretório /opt: $ du s /opt Ex: 5. Não inclui na contagem subdiretórios, apenas os arquivos presentes na raiz de /usr: $ du S /usr Ex: 6. Excluir da contagem os arquivos e diretórios que contenham.config em /etc: $ du --exclude=*.config /etc Ex: 7. Ignora na contagem qualquer arquivo ou diretório que tenha algum número em /etc: $ du --exclude=*[0-9]* /etc Ex: 8. Ignora na contagem os diretórios que sejam.cache,.local e.config em home: $ du --exclude=.{cache,local,config} ~ file [opções] arquivos Determina o tipo do arquivo. Ex: 1. Mostra o tipo do arquivo ls presente em /bin: $ file /bin/ls Ex: 2. Imprime as informações sobre o tipo de todos os arquivos da pasta /bin: $ file /bin/* Ex: 3. Apresenta o mine do arquivo /bin/ls: $ file i /bin/ls Ex: 4. Apresenta em modo breve o tipo do arquivo /bin/gunzip: $ file -b /bin/gunzip Ex: 5. Dispensa o processo de buffer para provocar a saída imediata dos tipos dos arquivos em home que comecem com.gnome: $ file -n ~/.gnome* grep [opções] padrão [arquivo] Imprimi as linhas que correspondem a um padrão. Ex: 1. Seleciona toda as linhas que contenham a palavra root do arquivo /etc/group: $ grep root /etc/group Ex: 2. Extrai as linhas que estão em caixa alta ou baixa que contenham a palavra reboot da saída do comando last: $ last grep i reboot Ex: 3. Exibe as linhas que correspondem a expressão regular: $ grep e '^a.*[a-z]$' /etc/passwd Ex: 4. Executa uma expressão regular extendida no texto do arquivo passwd em /etc: $ grep -E '^a.*[a-z]$ ^b.+[0-9]' /etc/passwd Ex: 5. Realiza a seleção invertida, apenas as linhas que não contenham a palavra root em /etc/passwd: $ grep v root /etc/passwd Ex: 6. Imprime as linhas que contenham a palavra bash por inteiro em /etc/bash.bashrc: $ grep -w bash /etc/bash.bashrc

5 Ex: 7. Conta a quantidade de linhas correspondentes ao padrão domain em /etc/hosts.deny: $ grep -c domain /etc/hosts.deny Ex: 8. Trata o arquivo binário /bin/ls como texto e imprime as ocorrências correspondentes a linux: $ grep -a linux /bin/ls Ex: 9. Exclui da pesquisa pela palavra host os arquivos que comecem com o nome hosts em /etc: $ grep host --exclude=/etc/hosts* /etc/host* Ex: 10. Ignora da pesquisa pela palavra host os diretórios que comecem com a letra "b" em /etc: $ grep host --exclude-dir=/etc/b* /etc/bash* Ex: 11. Realiza uma busca recursiva em todos os arquivos de todos diretórios em /etc pela palavra host: $ grep -R host /etc head [opções] [arquivo] Imprimi as primeiras linhas de um arquivo. Ex: 1. Seleciona as 5 primeiras linhas do arquivo shadow em /etc: $ head -5 /etc/shadow Ex: 2. Mostra as 10 primeiras linhas (comportamento padrão) da saída do comando lspci: $ lspci head Ex: 3. Imprime os 3 primeiros bytes (equivale a 3 caracteres) do arquivo numerical: $ head -c 3 numerical Ex: 4. Imprime os 2 primeiros kilobytes (2048 caracteres) do arquivo numerical: $ head -c 2K numerical Ex: 5. Os 10 primeiros megabytes de numerical: $ head -c 10M numerical Ex: 6. Os 2 primeiros gigabytes de numerical: $ head -c 2G numerical less [opções] [arquivos] Realiza a paginação de saída de dados com navegação. Ex: 1. Pagina o conteúdo do arquivo source.list em /etc/apt: $ less /etc/apt/source.list Ex: 2. Pagina com o número da linha da impressão de dados do comando lshw: $ lshw less N Ex: 3. Após a última página ocorre a saída sem a necessidade do uso da tecla "q": $ lshw less e Ex: 4. Mostra no rodapé o percentual ou bytes já paginados da saída do comando ls: $ ls /etc less M Ex: 5. Destaca na saída as correspondências de acordo com a expressão regular: $ ls /etc less --pattern=l[aeiou].*[e-f]$ Ex: 6. Ao encontrar várias linhas em branco no arquivo blanks as consideras como uma ao imprimir na tela: $ less -s blanks ln [opções] recurso alvo Cria links entre arquivos. Ex: 1. Cria um link do tipo simbólico, onde file2 aponta para file1: $ ln s file1 file2 Ex: 2. Cria um link do tipo hard, onde file2 apontam para o mesmo local no disco de file1: $ ln file1 file2 Ex: 3. Força a criação de um link simbólico de nome net para o arquivo internet: $ ln sf internet net Ex: 4. Semelhante ao exemplo anterior, porém um link hard: $ ln f internet net Ex: 5. Pergunta se deseja remover o link de nome mint antes da operação: $ ln i distros mint Ex: 6. Gera um link simbólico entre diretórios onde browser aponta para chromium: $ ln s chromium browser ls [opções] [arquivo] Lista o conteúdo do diretório. Ex: 1. Mostra os objetos (arquivos e diretórios) da pasta corrente: $ ls Ex: 2. Acrescenta a listagem os arquivos ocultos do diretório home: $ ls a ~ Ex: 3. Aplica aos itens da pasta /usr/bin caractere classificador: $ ls F /usr/bin Ex: 4. Lista apenas o nome dos subdiretórios em /etc: $ ls -d /etc/* Ex: 5. Apresenta a data completa com hora dos objetos do diretório atual: $ ls --full-time Ex: 6. Não imprime o nome dos objetos que comecem entre "d" a "f": $ ls --hide=[d-f]* Ex: 7. Adiciona a listagem o inode dos objetos em home: $ ls -i ~ Ex: 8. Imprime todas as informações como permissões, dono, grupo e data de alteração/criação do objetos em /opt: $ ls l /opt Ex: 9. Coloca todos os objetos selecionados em /bin entre vírgulas: $ ls m /bin Ex: 10. Ao invés de apresentar o nome do dono e do grupo do objeto são trocados por UID (User Id) e GID (Group Id) para os objetos de /lib: $ ls n /lib Ex: 11. Apresenta os arquivos de home na ordem inversa: $ ls n ~ Ex: 12. Imprime todos os objetos em /etc de forma recursiva: $ ls R /etc Ex: 13. Ordena os arquivos de /proc por extensão, tal opção suportar outros valores de ordenação (none, time, size e version): $ ls -sort=extension /proc Ex: 13. Seleciona os objetos que comecem entre as letras "a" e "c" do diretório /etc. Use optivamente a opção " d" para facilitar a visualização: $ ls -d /etc/[a-c]* Ex: 14. Imprime qualquer arquivos ou diretório que tenha um número em seu nome: $ ls -d /etc/*[0-9]* Ex: 15. Apenas os arquivos comecem com a letra "r" e o final sejam um numeral entre "0" a "6" seguido de ponto e a letra "d": $ ls -d /etc/r*[0-6].d Ex: 16. Apresenta os objetos que comecem com a letra "h", a segunda posição podendo ser qualquer caractere e seguido de "st": $ ls -d /etc/h?st* Ex: 17. Comece com a letra "f", sendo a segunda, terceira e quarta posição em aberto para qualquer caractere desde que seguido por "b": $ ls -d /etc/f???b* lsattr [opções] [arquivo] Lista os atributos de arquivo.

6 Ex: 1. Mostra os atributos do arquivo config: $ lsattr config Ex: 2. Imprime os atributos de todos os arquivos nos subdiretórios da pasta atual na forma recursiva: $ lsattr -R Ex: 3. Inclui na listagem de atributos os arquivos ocultos em home: $ lsattr a ~ Ex: 4. Lista os atributos do diretório /etc: $ lsattr -d /etc lsof [opções] [nomes] Lista os arquivos abertos. Ex: 1. Apresenta todos os objetos em aberto pelo sistema: $ lsof Ex: 2. Seleciona todos os arquivos do processo de PID 5504: $ lsof p 5504 Ex: 3. Lista todos os processos que comecem com letra "c": $ lsof -c 'c' Ex: 4. Extende o exemplo anterior para as letras "c", "r" e "e": $ lsof c 'c' c 'r' c 'e' Ex: 5. Busca os nomes dos arquivos em aberto que correspondam a palavra virtual. Coloque o termo entre barras, use "b" para expressão regular básica e "i" para insensível a caixa: $ lsof c '/virtual/bi' Ex: 6. Seleciona as linhas correspondentes ao diretório /media/linux/hd1tb: $ lsof +D '/media/linux/hd1tb' Ex: 7. Extrai as linhas da listagem dos recursos relacionados ao PGID 6857: $ lsof -g '6857' Ex: 8. Apresenta todos os arquivos relacionados com endereços da Internet: $ lsof -i Ex: 9. Imprime em tela os recursos vinculados ao usuário leonidas: $ lsof u leonidas Ex: 10. Use vírgula e sem espaços para referenciar mais de um usuário: $ lsof u 'root,leonidas' Ex: 11. Desabilita qualquer mensagem de aviso: $ lsof -w Ex: 12. Faz a seleção de acordo com os PIDs e do nome do usuário: $ lsof -p '14009,6857,4650' -u root mkdir [opções] diretórios Cria diretórios. Ex: 1. Cria o diretório de nome dir1: $ mkdir dir1 Ex: 2. Gera em sequência os diretórios dira, dirb e dirc: $ mkdir p dira/dirb/dirc Ex: 3. Apresenta uma mensagem de aviso ao término da operação: $ mkdir v ~/no-know mv [opções] recurso destino Move ou renomeia arquivos. Ex: 1. Renomeia o arquivo file1 para file2: $ mv file1 file2 Ex: 2. Move os arquivos file1, file2 e o diretório dir3 para a pasta dir4: $ mv file1 file2 dir3 dir4 Ex: 3. Força a operação sem confirmação antes de executar: $ mv /tmp/environ ~/environ Ex: 4. Solicita confirmação de execução da operação antes sobrescrever arquivo lubuntu existente em /opt: $ mv i ~/lubuntu /opt Ex: 5. Não sobrescreve o arquivo existente no diretório ~/test: $ mv n /tmp/hello ~/test Ex: 6. Imprimi em tela a execução da operação: $ mv v files/*.xml /opt/files nl [opções] [arquivo] Enumera as linhas de um arquivo. Ex: 1. Enumera as linhas do conteúdo do arquivo cpuinfo em proc na forma sequencial: $ nl /proc/cpuinfo Ex: 2. Aplica a enumeração de linhas a saída de dados do programa lsusb: $ lsusb nl Ex: 3. Posto em sequência os arquivos são concatenados em apenas uma saída enumerada: $ nl x/listone y/listtwo z/listtree Ex: 4. Incrementa a enumeração das linhas 20 a 20 para o arquivo ~/.bashrc_history: $ nl i 20 ~/.bashrc_history Ex: 5. Aplica o separador ">>" entre o número da linha e o conteúdo de /etc/hosts: $ nl s ' >> ' /etc/hosts Ex: 6. Inicia a contagem das linhas a partir do número 4, comportamento padrão é iniciar de 1: $ nl v 4 /etc/hosts Ex: 7. Altera a quantidade de colunas para 2 entre a esquerda e a numeração do conteúdo de /etc/mime.types: $ nl w 2 /etc/mime.types rm [opções] recurso Remove arquivos e diretórios. Ex: 1. Exclui o arquivo teste da pasta atual: $ rm teste Ex: 2. Remove na forma recursiva os objetos contidos em olds e depois ele próprio: $ rm r /tmp/olds Ex: 3. Utiliza a força bruta para realizar remoção de test. Faça uso da opção " r" para o caso do objeto ser um diretório: $ rm f ~/test Ex: 4. Solicita confirmação para excluir o arquivo a0.pdf em y: $ rm -i y/a0.pdf Ex: 5. Remove apenas diretórios que estejam vazios em /tmp: $ rm d /tmp/* Ex: 6. Imprimi em tela quais foram os arquivos de extensão txt que foram removidos em ~/logs: $ rm -v ~/logs/*.txt Ex: 8. Exclui os arquivos que comecem de "a" a "c" e tenham extensão "xml" ou "pdf" da pasta atual: $ rm [a-c]*.{xml,pdf} rmdir [opções] diretórios Remove diretórios vazios. Ex: 1. Exclui o diretório empty de ~/personal: $ rmdir ~/personal/empty Ex: 2. Remove os diretórios na ordem de eua a americas: $ rmdir -p americas/norte/eua sort [opções] [arquivo] Ordena as linhas de um texto. Ex: 1. Imprime em ordem alfabética o texto do arquivo items.txt: $ sort items.txt Ex: 2. Ordena numericamente a saída do conteúdo de numbers: $ sort n numbers split [opções] [arquivo] [prefixo] Quebra um arquivo em várias partes. Ex: 1. Divide o arquivo library.zip em partes de 20000000 bytes:

7 $ split b 20000000 library.zip Ex: 2. Divide o arquivo ansi.pdf em duas partes iguais com prefixo ansi e sufixo númerico: $ split d n 2 ansi.pdf ansi stat [opções] arquivo Lista os status do arquivo. Ex: 1. Lista as informações do arquivo iomem em /proc: $ stat /proc/iomem tail [opções] [arquivo] Imprimi as últimas linhas de um arquivo (contrário de head). Ex: 1. Imprimi as 5 últimas linhas do arquivo index.html em /var/www: $ tail -5 /var/www/index.html Ex: 2. Mostra as 10 últimas linhas da saída do comando lspci: $ lspci tail uniq [opções] [arquivo] Reporta ou omite linhas repetidas. Ex: 1. Ignora todas as linhas próximas repetidas de hosts.log: $ uniq hosts.log Ex: 2. Ignora em absoluto todas as linhas repetidas de accesses.log: $ uniq u accesses.log unzip [opções] [arquivo] Lista, testa e extrair o conteúdo interno de um arquivo zipado (compactado). Ex: 1. Use apenas unzip para visualizar as opções rápidas de uso: $ unzip Ex: 2. Descompacta o arquivo signals no diretório corrente: $ unzip signals.zip Ex: 3. Extrai apenas do zipado os arquivos de extensão PDF: $ unzip signals.zip *.pdf Ex: 4. Extrai apenas do zipado o arquivo 00001.pdf dentro do diretório files. Observe files, também, constará no disco: $ unzip signals.zip files/00001.pdf Ex: 5. Lista o conteúdo interno do compactado através do uso de -l: $ unzip l signals Ex: 6. Testa a integridade dos arquivos internos zipados, opção -t: $ unzip t frequencies.zip Ex: 7. Apresenta através da opção -v as informações dos arquivos, tais como tamanho, método e porcentagem de compreensão, data de modificação, CRC (Cyclic Redundancy Check) e caminho relativo: $ unzip v waves.zip Ex: 8. A opção -n preserva, não sobreescreve, arquivos já existentes no diretório: $ unzip n starks.zip Ex: 9. Ao contrário do exemplo anterior, -o, realiza a sobreescrita automaticamente. Tenha certeza antes de usar: $ unzip o starks.zip Ex: 10. Descompacta o arquivo gameofthrones.zip protegido pela senha lannister: $ unzip P lannister gameofthrones.zip Ex: 11. Apenas realiza extração sem apresentar qualquer saída da operação: $ unzip q tyrionlannister.zip Ex: 12. Extra todos os arquivos do compactado targaryen.zip, exceto daenerys: $ unzip targaryen x daenerys wc [opções] [arquivo] Conta a quantidade de bytes, palavras ou linhas de um arquivo. Ex: 1. Conta a quantidade de linhas existentes de /etc/passwd: $ wc l /etc/passwd Ex: 2. Apresenta a quantidade bytes de /etc/passwd: $ wc c /etc/passwd Ex: 3. Conta a quantidade de palavras de /etc/passwd: $ wc w /etc/passwd zip [opções] [arquivo] Comprime e gerencia arquivo zipado (compactado). Ex: 1. Use apenas zip para visualizar as opções rápidas de uso: $ zip Ex: 2. Inclui todos os arquivos do diretório corrente na forma compactada no arquivo files.zip. O acréscimo do sufixo zip é automático: $ zip files * Ex: 3. Seleciona e compacta todos os arquivos de texto dentro de txts: $ zip txts *.txt Ex: 4. Através da opção r é possível adicionar os diretórios e seus conteúdos a um arquivo compactado. O zipado netbeans é criado dentro de /tmp: $ zip r /tmp/netbeans ~/NetBeansProjects Ex: 5. O símbolo -@ representa uma entrada de lista de arquivos. O programa find listará a partir de home todos os arquivos de final awk e todos estes arquivos serão unidos no zipado codes: $ find ~ -iname *.awk zip codes -@ Ex: 6. Reunir e zipar todas as ocorrências (arquivos e diretórios) de which da busca rápida realizada por locate: $ locate which zip -r which -@ Ex: 7. O conteúdo dos arquivos de final de txt e sh são unidos em uma única stream e zipados para dentro de concated, nele existirá outro arquivo nomeado como "-" (traço): $ cat *.{txt,sh} zip > concated Ex: 8. Proceda normalmente para adicionar um novo arquivo a um zipado existente, pois o zip por padrão fará o acréscimo. Ao final book.zip terá dois PDFs: $ zip book ~/lib/dom-quixote.pdf $ zip book ~/lib/quincas-borbas.pdf Ex: 9. A opção -u ou --update realiza a atualização de um arquivo dentro do objeto compactado, caso o arquivo não exista, então é adicionado. No exemplo, o processo é simplificado, pois dispensa descompactar configs.zip para atualizar apenas chromium.conf: $ zip configs.zip u chromium.conf Ex: 10. No mesmo sentido do exemplo anterior, porém realiza o processo de exclusão, também, cabe o uso da forma longa --delete: $ zip configs.zip d chromium.conf Ex: 11. Para copiar um arquivo de um compactado use -U ou --copy. Observe a necessidade do uso de --out para manter o arquivo original intacto. Na operação sugirá um novo zipado que é necessário descompacta-lo com unzip: $ zip cc.zip U license.pdf --out license.zip $ unzip license.zip Ex: 12. A opção -FS, File Sync, realiza uma sincronização entre o arquivo zipado e o arquivos em disco: $ mkdir /tmp/fs $ echo Creative Commons > cc $ echo GNU General Public License > gpl $ zip licenses * #Zipando os dois arquivos. $ echo 4.0 >> cc $ zip licenses FS * #O cc será atualizado dentro do zipado, licenses. $ rm gpl $ zip licenses FS * #O gpl será excluído dentro do zipado, licenses. Ex: 13. Para acompanhar o progresso realizado byte a byte use -db ou --display-bytes: $ zip --display-bytes dali_pictures * Ex: 14. Apresenta as entradas realizadas conforme o andamento do processamento. Disponível a forma longa --display-counts:

8 $ zip davinci_pictures * -dc Ex: 15. Semelhante ao exemplo anterior, porém são postos pontos para indicar o progresso. Disponível a forma longa --display-dots: $ zip michelangelo_works * -dd Ex: 16. Apresenta os pontos de acordo com o progresso de processamento global: $ zip -dg renaissance * Ex: 17. Use a opção -e para adicionar uma senha de segurança de acesso ao arquivos dentro do zipado: $ zip -e secrets.zip *.pass Ex: 18. Para quebrar o arquivo zipado em várias partes use a opção -s seguida do tamanho desejado (k: kilobytes, m: megabytes, g: gigabytes e t: terabytes). Observe que a última parte poderá ter tamanho inferior: $ zip -s 2m myfiles * Ex: 19. Verifica a integridade do arquivo: $ zip T mysql.confs.zip Recursos do Terminal alias string Cria um atalho para um comando. Ex: 1. Lista todos os atalhos registrados da sessão aberta: $ alias Ex: 2. Associa o comando "ls a" como "lsa": $ alias lsa="ls -a" Ex: 3. Cria atalho para contar a quantidade de usuários logados: $ alias qtd-logados="who wc -l" Ex: 4. Automatiza através do atalho criado de nome info-user a busca de informações sobre determinado usuário: $ alias info-user="cat /etc/passwd grep -i" Ex: 5. Apelida o procedimento de remoção de todos os arquivos da pasta samurai como rem : $ alias rem="rm samurai/*" cd [diretório] Navega entre diretórios. Ex: 1. Muda para o diretório /usr/bin: $ cd /usr/bin Ex: 2. Navega para o diretório pai da pasta corrente: $ cd.. Ex: 3. Permance na pasta atual: $ cd Ex: 4. Equivalente ao exemplo 3: $ cd. exit 1) Fecha o terminal; 2) Encerra uma sessão aberta através do su. Ex: 1. Finaliza a execução do terminal: $ exit Ex: 2. Após logado como root, é usado exit para sinalizar o encerramento da sessão: $ su root $ exit history Apresenta o histórico dos últimos comandos executados no terminal. Ex: 1. Apresenta a listagem dos últimos comandos executados: $ history Ex: 2. Executa o comandos de número "45" do histórico: $!45 Ex: 3. Executa o último 5º comando da listagem: $!-5 Ex: 4. Referece ao último comando executado: $!! Ex: 5. Reexecuta o último comando echo do histórico: $!echo Ex: 6. Utiliza todos os argumentos do comandos executado anteriormente no basename: $ basename!* Ex: 7. Injeta para basename o último argumento do comando anterior: $ basename!$ Ex: 8. Trabalha com o primeiro argumento do comando anterior: $ echo!^ Ex: 9. Executa o último comando que tenha "default" em seu nome ou nos argumentos: $!?default Ex: 10. Injeta no touch o segundo ao quinto argumento do programa anterior: $ touch!:2-5 Ex: 11. Aplica ao touch o primeiro e segundo argumentos do último comando echo: $ touch!echo:1-2 Ex: 12. Repassa ao programa file do segundo até o último argumento do comando já executado: $ file!:2-$ jobs Lista os comandos em execução dentro do shell. Ex: 1. Mostra todos os processos relacionados: $ jobs pwd Imprime o caminho absoluto do diretório corrente. Ex: 1. Exibe no terminal a localização atual: $ pwd read [variável] Ler uma entrada de dados para uma variável. Ex: 1. Recebe o valor de entrada para a variável name e após um enter retornar ao prompt de comando para executar o comando echo: $ read name $ echo $name Ex: 2. Inseri uma mensagem personalizada: $ read p "Type the name: " name Ex: 3. Aguarda até 5 segundos antes de encerrar a recepção de dados: $ read t 5 name Ex: 4. Aceita até 10 caracteres para a variável name: $ read n 10 name Ex: 5. Define como delimitador padrão o "." em vez de enter: $ read d "." name Ex: 6. Recepciona vários valores para o array de nome names: $ names=() $ read a names Ex: 7. Permite injetar o primeiro valor para a variável code e o segundo para serial: $ read code serial reset [opções] [caractere] Inicializa o terminal. Ex: 1. Reinicializa o terminal: $ reset Ex: 2. Configura a tecla "x" como backspace: $ reset e x Ex: 3. Altera a tecla de interrupção padrão, "^c", para "^t": $ reset i ^t Ex: 4. Apresenta o tipo de terminal: $ reset -q Ex: 5. Exibe na resumidamente as opções: $ reset -m

9 setterm [opções] Configura atributos do terminal. Ex: 1. Habilita a visibilizadade do cursor: $ setterm cursor on Ex: 2. Torna o curso invisível: $ setterm cursor off Ex: 3. Altera a cor de background para azul (as cores disponíveis são: black, blue, green, cyan, red, magenta, yellow e white): $ setterm background blue -store Ex: 4. Muda para a cor de foreground para amarelo (as cores disponíveis são as mesmas informadas no exemplo anterior): $ setterm foreground yellow -store Ex: 5. Inverte as cores de background e foreground: $ setterm inversescreen on Ex: 6. Equivalente ao exemplo anterior: $ setterm reverse on -store Ex: 7. Desfaz a inversão de cores entre background e foreground: $ setterm inversescreen off Ex: 8. Atribui negrito ao foreground: $ setterm bold on -store Ex: 9. Limpa a tela, mesmo efeito que o comando clear: $ setterm -clear type comando Indica se o comando é embutido ou um arquivo executável. Ex: 1. Descobre o tipo do comando who: $ type who unalias atalho Remove um atalho registrando na sessão do terminal. Ex: 1. Desvincula o atalho "lsa" da sessão: $ unalias lsa Gerenciamento de Pacote apt-cache [opções] string padrão Busca e lista pacotes. Ex: 1. Pesquisa pelos pacotes relacionados a virtualbox: $ apt-cache search virtualbox Ex: 2. Realiza a listagem com a especificação completa do pacote cacti: $ apt-cache f search cacti Ex: 3. Apresenta as informações sobre a dependência direta e reversa do pacote brasero: $ apt-cache showpkg brasero Ex: 4. Mostra todas as informações referentes ao pacote caja: $ apt-cache show caja Ex: 5. Visualiza as dependências de bash: $ apt-cache depends bash Ex: 6. Imprime outros detalhes (versão, repositório e arquivo de status) sobre gcc: $ apt-cache policy gcc apt-get [opções] string pacote Manipula pacotes. Ex: 1. Instala o pacote apache2: $ apt-get install apache2 Ex: 2. Remove o pacote htop: $ apt-get remove htop Ex: 3. Atualiza todos os pacotes instalados no sistema: $ apt-get update Ex: 4. Remove todos os pacotes desnecessários do sistema: $ apt-get autoremove Ex: 5. Remove o pacote scribus com a exclusão de qualquer arquivo de configuração: $ apt-get purge scribus Ex: 6. Atualiza o pacote clamav e checa por dependências quebradas: $ apt-get check clamav Ex: 7. Remove todos os pacotes em cache do repositório local: $ apt-get clean Ex: 8. Baixa para o diretório atual o pacote pdfgrep do repositório central: $ apt-get download pdfgrep Processo & Memória free [opções] Apresenta a quantidade memória livre do sistema. Ex: 1. Lista a quantidade de memória em megabytes: $ free -m Ex: 2. Repete a cada "2" segundos a quantidade de memória em gigabytes: $ free g s 2 kill [opções] pid Envia um sinal para um processo. Ex: 1. Desliga de imediato do processo de PID 1024: $ kill -9 1024 Ex: 2. Comanda sinal de parada de processamento para um processo de PID 3611: $ kill -19 3611 Ex: 3. Envia sinal de continuedade de processamento ao processo 3611: $ kill -18 3611 nice [opções] [comando] [argumentos] Executa um programa com prioridade alterada. Ex: 1. Altera a prioridade para baixa do comando zip files.zip *.pdf: $ nice -n 20 zip files.zip *.pdf Ex: 2. Executa com máxima prioridade o comando cp all.zip /tmp: $ nice -20 cp all.zip /tmp pgrep [opções] padrão Busca o PID do processo baseado no padrão fornecido em nomes e outros atributos. Ex: 1. Lista todos os PIDs que tenham firefox: $ pgrep firefox Ex: 2. Conta a quantidade de ocorrências para o padrão init: $ pgrep c init pidof [opções] programa Encontra o identificador do processo. Ex: 1. Encontra os PIDs dos processos de bash: $ pidof bash Ex: 2. Retorna apenas um PID dos processos de apache2: $ pidof s apache2 pmap [opções] pid Reporta o mapa de memória relacionado a um processo. Ex: 1. Apresenta o mapa de memória do processo de PID 5841: $ pmap 5841 Ex: 2. Exibe o mapa de memória de forma extendida para o processo de PID 2139: $ pmap x 2139

10 ps [opções] Gera relatório rápido dos processos correntes. Ex: 1. Lista todos os processos no formato POSIX e UNIX: $ ps aux Ex: 2. Obtém informações sobre as threads em execução: $ ps elf pstree [opções] [pid] Desenha uma árvore de processos. Ex: 1. Mostra a árvore de processos do sistema: $ pstree Ex: 2. Constrói a árvore dos processos de PID 5181: $ pstree s 5181 renice [opção] [argumento] Altera a prioridade de um processo em execução. Ex: 1. Muda a prioridade para prioridade baixa o processo de PID 7666: $ renice n 15 p 7666 Ex: 2. Altera para prioridade alta de execução os processos do usuário highlander: $ renice n -18 u highlander strace comando Imprime a trilha de chamadas ao sistema e sinais. Ex: 1. Imprime as chamadas ao sistema do comando ls: $ strace ls Ex: 2. Encontra as ocorrências das chamadas para o comando locate com o argumento boot: $ strace locate boot top [opções] Providencia uma visão de tempo real dos processo em execução no sistema. Ex: 1. Executa e apresenta formato padrão: $ top Ex: 2. Aplica o tempo de atualização para 1 segundo: $ top d 1 Usuário & Grupos addgroup [opções] grupo Adiciona um grupo. Ex: 1. Adiciona o grupo nomeado como thundercats: # addgroup thundercats Ex: 2. Adiciona o grupo xman e torna como home a pasta /home/groups/xman: # addgroup --home "/home/groups/xman" xman Ex: 3. Acrescenta o grupo averges e define como shell padrão o bash: # addgroup --shell /bin/bash averges Ex: 4. Adiciona o grupo zoodico com GID 3000: # addgroup --gid 3000 zoodico Propriedade & Permissão chgrp [opções] usuário recurso Muda o grupo proprietário do recurso. Ex: 1. Concede a propriedade da pasta animals para o grupo tiger: $ chgrp tiger animals chmod [opções] permissões recurso Manipula o esquema de permissões vinculados ao recurso. Ex: 1. Concede permissão de leitura e escrita para o grupo do usuário corrente sobre o arquivo rules: $ chmod g+rw rules Ex: 2. Remove todas as permissões do grupo do usuário e de outros sobre o arquivo documents: $ chmod 700 documents chown [opções] usuario recurso Muda o dono e grupo proprietário do recurso (arquivo ou diretório). Ex: 1. Troca a propriedade do arquivo marvel para o wolverine: $ chown wolverine marvel Ex: 2. Altera a propriedade do arquivo blacklist para o usuário master do grupo ever: $ chown master:ever blacklist su [opções] username Se passa como outro usuário. Ex: 1. Assumi o perfil de conta do usuário root: $ su -l Ex: 2. Torna-se o usuário deploy: $ su deploy sudo [opções] [comando] Executa um comando como outro usuário. Ex: 1. Executa o comando lshw C storage como root: $ sudo lshw C storage Ex: 2. Efetua o comando cat view.pdf como se fosse o usuário magneto: $ sudo u magneto cat view.pdf Configuração & Hardware df [opções] [arquivo] Reporta o espaço utilizado em disco. Ex: 1. Mostra informações no formato padrão: $ df Ex: 2. Exibe em formato de saída legível para humanos: $ df -h lsblk [opções] Lista os blocos dos dispositivos. Ex: 1. Lista todos os dispositivos de armazenamento: $ lsblk Ex: 2. Imprime com as permissões aceitas por cada dispositivo: $ lsblk -m lscpu [opções] Mostra informações sobre a arquitetura da CPU. Ex: 1. Lista as informações correntes da CPU: $ lscpu lshw [opções] [string] Lista o hardware do computador. Ex: 1. Imprime todas as classes de dispositivos: $ lshw Ex: 2. Lista apenas os dispositivos de classe da memória: $ lshw C memory lspci [opções] Imprime todos os dispositivos PCI. Ex: 1. Lista de forma curta: $ lspci Ex: 2. Listagem detalhada dos dispositivos: $ lspci -v lsusb [opções] Lista os dispositivos do tipo USB.

11 Ex: 1. Apresenta todos os dispositivos: $ lsusb Ex: 2. Exibe os dispositivos em forma de árvore: $ lsusb -t Sistema crontab [opções] [usuário] [arquivo] Gerencia em modo alto nível o agendamento de execução de tarefas. Ex: 1. A opção -l visualiza as entradas existentes. As linhas em branco ou comentadas pelo caractere "#" em início de linha são ignoradas. Cada linha de agendamento é composto por seis campos separados por espaços, sendo na ordem de minuto (0 a 59), hora (0 a 23), dia (1 a 31), mês (1 a 12), dia da semana (0 a 6) e comando: $ crontab -l Ex: 2. Semelhante ao exemplo anterior, porém é visualizado as entradas de agendamento do usuário brahms: $ crontab l -u brahms Ex: 3. Use a opção -e para editar o arquivo de configuração. Observe que na primeira vez de edição do arquivo é solicitado que se escolha o editor padrão. Use o asterisco para representar todos os valores do universo de cada campo. Na linha de edição do arquivo fica registrado que a cada minuto deve ser executado o comando date e a sua saída direcionada para /tmp/now: $ crontab -e * * * * * date > /tmp/now Ex: 4. Semelhante ao exemplo anterior, porém haverá execução no 2º minuto de cada hora: 2 * * * * date > /tmp/now Ex: 5. A opção -u seguida do nome do usuário faz o registro de agendamento como se fosse ele próprio. O programa uploads em /scripts executará sempre as 4 horas: u root 0 4 * * * /scripts/uploads Ex: 6. A entrada de agendamento configura para executar o programa refresh em /scripts as 5 horas e 34 minutos do dia 13 de todo o mês: 34 5 13 * * /scripts/refresh Ex: 7. O script remove-all executará as 6 horas e 55 minutos do dia 20 de fevereiro (2): 55 6 20 2 * /scripts/remove-all Ex: 8. As 4 horas e 20 minutos das quartas-feiras (0: domingo, 1: segunda, 2: terça, 3: quarta, 4: quinta, 5: sexta-feira e 6: sábado) é disparado o payments: 20 4 * * 3 /scripts/payments Ex: 9. Use o hífen para sinalizar um intervalo de valor. No exemplo, status-net executa nos minutos 45, 46, 47, 48, 49, 50 e 51: 45-51 * * * * /scripts/status-net Ex: 10. A partir das 16 horas é executado o programa scan nos minutos que são divisíveis por 2 minutos: */2 16 * * * /usr/local/bin/scan Ex: 11. Nas 17 horas entre 20 e 59 minutos o script kill entra em estado de execução nos minutos divisíveis por 3: 20-59/3 17 * * * /usr/local/scripts/kill Ex: 12. Semelhante ao exemplo anterior, porém com a restrição de somente nas quartas-feiras (3) de julho (7): 20-59/3 17 * 7 3 /usr/local/scripts/kill Ex: 13. Do dia 15 a 30 ou nas segundas-feiras (1) do mês de fevereiro (2) a setembro (9) o script collector entra em execução a cada minuto: * * 15-30 2-9 1 /scripts/collector Ex: 14. Semelhante ao exemplo anterior com o acréscimo do mês de novembro (11), além de haver execução nas segundas (1), quartas (3), quintas (4) e sábados (6) dos referidos meses: * * 15-30 2-9,11 1,3,4,6 /scripts/collector Ex: 15. No exemplo é intercalo intervalos e valores fixos. O script backup executará em cada minuto das horas 0, 1, 2, 4, 6, 7 e 8 de segunda a sexta-feira: * 0-2,4,6-8 * * 1-5 /scripts/backup Ex: 16. O agendador levatará o programa events nas horas divisíveis por 2, na 11ª hora e em todos os seus minutos nos domigos e sábados: * */2,11 * * 0,6 /usr/local/tasks/events Ex: 17. Na décima terceira hora nos minutos 0, 2 e 4 nos dias 2, 3, 6, 7, 10 e 12 ou terças-feiras (2) de julho (7) o script load será posto em execução pelo agendador: 0,2,4 13 2,3,6,7,10,12 7 2 /scripts/load Ex: 18. O script clear disparará todos os dias do mês de julho (7) a cada minutos de 12 a 13h: * 12-13 * 7 * /scripts/clear Ex: 19. Use a opção -r para excluir o arquivo de agendamento do usuário: $ crontab r Ex: 20. Combine com a opção -u para apagar todas as entradas feitas de outro usuário: $ crontab r u brahms Ex: 21. Para eleger um novo arquivo de agendamento de tarefas, apenas indique o seu caminho absoluto (preferencialmente): $ crontab /home/rammstein/crontab Ex: 22. Combine a opção -u para realizar a substituição como se fosse o próprio usuário: $ crontab u sabaton /home/sabaton/crontab date [opções] [formato] Imprime a data e hora. Ex: 1. Mostra a data no formato padrão: $ date Ex: 2. Imprime em tela no formato dd/mm/aaaa hh:mm:ss: $ date +"%d/%m/%y %H:%M:%S" last [opções] [nome] Mostra a listagem dos últimos usuários logados. Ex: 1. Apresenta todos os últimos usuários: $ last Ex: 2. Lista apenas o usuário de nome eduardo: $ last eduardo poweroff [opções] Desliga o sistema. Ex: 1. Desativa o sistema em tempo normal: $ poweroff Ex: 2. Força o desligamento imediato:

12 $ poweroff -f printenv [opções] [variável] Imprime variáveis de ambiente. Ex: 1. Lista todas as variáveis com seus respectivos valores: $ printenv Ex: 2. Imprimi o valor da variável OLDPWD: $ printenv OLDPWD reboot [opções] Reinicializa ou parar o sistema. Ex: 1. Inicializa novamente o sistema em tempo normal: $ reboot Ex: 2. Força uma reinicialização imediata: $ reboot -f shutdown [opções] [tempo] [mensagem] Desliga, parar ou reinicializa o sistema de forma segura. Ex: 1. Desliga o sistema após de 2 minutos: $ shutdown P 2 Ex: 2. Reinicializa o sistema após 15 minutos e envia a mensagem "Reboot in 15 minutes!" para todos os usuários logados: $ shutdown r 15 "Reboot in 15 minutes!" uname [opções] Imprime informações sobre o sistema. Ex: 1. Apresenta o tipo do sistema operacional: $ uname Ex: 2. Imprime todas as informações relevantes sobre o sistema operacional: $ uname a who [opções] [arquivo] Mostra quem está logado. Ex: 1. Lista todos os usuários logados: $ who Ex: 2. Conta a quantidade de usuários logados e imprimi todos os nomes de logins: $ who -q whoami [opções] Imprimi o username do usuário logado. Ex: 1. Imprime o username do usuário corrente: $ whoami Tela & Temporizador clear Limpa a tela do terminal. Ex: 1. Remove todos os caracteres da tela: $ clear echo [opções] [string] Imprimi uma linha de texto. Ex: 1. Imprimi no terminal Hello World: $ echo "Hello World" Ex: 2. Apresenta o nome do usuário e o caminho de sua pasta pessoal de forma tabulada: $ echo -e "$USERNAME\t$HOME" sleep número[sufixo] Atrasa o controle para a próxima ação por determinado tempo. Ex: 1. Atrasa a retormada do terminal por 2 segundos: $ sleep 2s Ex: 2. Retarda a execução do segundo date em 5 minutos: $ date ; sleep 5m ; date tee [opções] [arquivo] Recebe uma entrada de dados, grava em um arquivo e os imprime em tela. Ex: 1. Através da saída do resultado da busca por awk pelo comando locate é gerado o arquivo results e o conteúdo apresentado em tela: $ locate awk tee results Ex: 2. Grava no arquivo directories todos os nomes dos diretórios do usuário corrente e as exibe: $ find /home/$username type d tee directories tr [opções] charset1 charset2 Substitui ou deleta caracteres. Ex: 1. Converte todos os caracteres do arquivo names.txt de minúsculo para maiúsculo: $ cat names.txt tr 'a-z' 'A-Z' Ex: 2. Deleta todas as consoantes e espaços da frase hello world: $ echo "hello world" tr d 'dhlrw[:blank:]' Localizadores find [diretórios] [expressão] Realiza busca por nome de recurso através da força bruta. Ex: 1. Encontra qualquer arquivo regular chamado help que esteja a partir do diretório raiz / (barra): $ find / -type f name help -print Ex: 2. Localiza qualquer diretório que comece com o nome init dentro da pasta /etc: $ find /etc type d iname "init*" print locate [opções] padrão Busca a localização de arquivos por nome na base de dados. Ex: 1. Aponta os caminhos de arquivos e diretórios que contenham o padrão de nome init em maiúsculo ou minúsculo: $ locate -i init whereis comando Localiza o binário, código e manual de um programa. Ex: 1. Encontra as ocorrências para o programa shutdown: $ whereis shutdown which comando Localiza um programa. Ex: 1. Aponta o caminho do executável de nmap: $ which nmap Repetidores timeout [opções] duração comando argumentos Executa um comando por um determinado limite de tempo. Ex: 1. Pinga o endereço educode.com.br por 10 segundos (10s), após esse tempo a execução é encerrada (-s 15): $ timeout s 15 10s ping educode.com.br Ex: 2. Exibe o conteúdo do dispositivo /dev/urandom durante 1 minuto (1m), logo depois encerra de força bruta (-s 9) o comando cat: $ timeout s 9 1m cat /dev/urandom Ex: 3. Grava continuamente durante 3 horas (3h) a palavra Debian no arquivo "os" em /tmp, após o tempo estabelecido pausa a execução do yes: $ timeout s 19 3h yes Debian > /tmp/os

13 Ex: 4. Permanece por 4 dias (4d) monitorando as mensagem do sistema através do comando dbus-monitor: $ timeout s 15 4d dbus-monitor --system watch [opções] comando Executa um comando continuamente em tela cheia. Ex: 1. Executa a cada 2 segundos o comando vmstat com a opção "-s": $ watch n 2 "vmstat -s" Ex: 2. Mostra as últimas cinco ocorrências da saída de dados de ps a cada 1 segundo: $ watch n 1 "ps aux tail -5" yes [opções] string Repete uma string até ser encerrado. Ex: 1. Reproduz a frase "Hasta Pronto!" até que o programa seja interrompido (^c): $ yes "Hasta Pronto!" Ex: 2. Grava no arquivo classical em /tmp o nome "Vivaldi" até que a operação sofra parada (^c): $ yes Vivaldi > /tmp/classical xargs [opções] [comando] Executa comandos definidos a partir de uma entrada. Ex: 1. Encontra o PID do processo do gedit e passa-o como argumento para encerramento do processo: $ pidof gedit xargs kill -9 Ex: 2. Lista os arquivos que começam com a letra "d" em /etc e passa-os como argumento para a execução em sequência para file com opção "-i": $ ls /etc/d* xargs file i Expressão e Aritméticos bc [opções] [arquivo] Linguagem de cálculo de precisão arbitrária. Ex: 1. Para enviar os cálculos a serem realizados pelo bc é necessário usar um fluxo de dados com pipeline, here strings, here document ou um arquivo em disco. Neste exemplo é feito a soma de dois números: $ echo '10 + 20' bc Ex: 2. Use a variável interna do bc de nome scale para mensurar a precisão da parte fracionário na realização do cálculo: $ echo 'scale=3; 10.991 + 20.234' bc Ex: 3. A realização da substração também tem o mesmo símbolo da matemática. Atente-se que o separador da parte inteira da fracionária é o ponto e não a vírgula: $ bc <<< 'scale=2; 0.98 4.9' Ex: 4. A divisão utiliza-se a barra. Neste exemplo a variável scale recebe 4: $ bc <<< 'scale=4; 15 / 4 + 2.34' Ex: 5. A multiplicação é feita com o uso de asterisco: $ bc <<< 'scale=7; 0.05 * 0.009' Ex: 6. Neste exemplo é feito a injeção da variável "$num" no fluxo de dados para o cálculo de "calc": $ num=3 $ calc=$(echo "scale=2;20 / $num" bc) $ printf $calc Ex: 7. Para capturar o valor remanescente da divisão de 25 pela variável "$num" use "%": $ rest=`bc <<< "25 % $num"` Ex: 8. Uso do here document com subshell para realizar o cálculo da variável "$calc". Observe a operação de exponenciação através do acento circunflexo: $ calc=$(bc <<CALC > x = 20 ^ 2 > x = x % $num > print x > CALC > ) Ex: 9. O uso de parênteses estabelece uma ordem de prioridade. No exemplo primeiro é feito a soma de 20 mais 5 e depois a substração por 4 do seu resultado e por fim a divisão por 3: $ bc <<< '((20 + 5) - 4) / 3' Ex: 10. Um exemplo com uso de apenas de variáveis definidas externas ao programa bc: $ rate="0.20"; months=5; number=".6" $ bc <<< "scale=3;$rate * $months / $number" Ex: 11. O pós-incremento (capacidade de adicionar mais 1 depois da chamada da variável) tem a forma de "var++" : $ echo 'x=10; print x++," ",x' bc Ex: 12. O pré-incremento (capacidade de adicionar mais 1 antes da chamada da variável) tem a forma de "++var": $ echo 'y=10; print ++y' bc Ex: 13. O pré-decremento (capacidade de substrair 1 antes da chamada da variável) tem a configuração de "--var": $ echo 'y=10; print --y' bc Ex: 14. O pós-decremento (capacidade de substrair 1 depois da chamada da variável) segue o padrão de "var--": $ echo 'x=10;print x--," ",x' bc expr expressão Avalia uma expressão. Ex: 1. Imprime o valor do terceiro argumento, pois o primeiro é vazio ou tem tamanho igual a zero. Observe que o pipeline está entre aspas, pois cumpri o papel de argumento: $ expr '' ' ' 'First parameter is null' Ex: 2. Apresenta o conteúdo da variável "$USER", ao invés de "No user" (terceiro argumento), pois não se encontra vazia: $ expr $USER " " "No user" Ex: 3. Realiza o teste de comparação de menor que, sendo o resultado na saída igual a 1 (verdadeiro): $ expr 5 '<' 6 Ex: 4. A saída será zero (falso) pelo fato que "7" não é menor que "6": $ expr 7 '<' 6 Ex: 5. As comparação também podem ser realizadas para literais. O resultado é igual a 1 (verdadeiro): $ expr 'abc' '<' 'abd' Ex: 6. A diferença do exemplo anterior é a alteração do segundo argumento para "<=" (menor ou igual): $ expr 'abc' '<=' 'abd' Ex: 7. O resultado também será verdadeiro como no exemplo anterior: $ expr 'abc' '<=' 'abc' Ex: 8. Realiza teste de igualdade entre o valor da variável "$TERM" e a literal "linux" : $ expr "$TERM" '=' "linux" Ex: 9. O teste de igualdade entre dois numerais: $ expr 1 = 2 Ex: 10. A verificação de diferença entre estas duas strings semelhantes resultará em verdadeiro, visto que o teste é sensível a caixa (maiúsculo ou minúsculo): $ expr 'Command' '!=' 'command' Ex: 11. No mesmo sentido que o exemplo anterior, porém com numerais: $ expr 1!= 2 Ex: 12. Um teste de maior que entre duas strings: $ expr 'Command' '>' 'command' Ex: 13. Com o uso de números para o teste de maior que: $ expr 9 '>' 10 Ex: 14. Semelhante ao exemplo 12, sendo o resultado igual a 0 (falso): $ expr 'Command' '>=' 'COmmand'

14 Ex: 15. As operação aritméticas devem ser com inteiros e podem receber mais de dois numerais, como visto neste exemplo da soma: $ expr '10' '+' '30' + 40 '+' 50 Ex: 16. Para substração use o sinal de menos: $ expr '15' - '4' - 5 Ex: 17. A multiplicação usa o sinal asterisco: $ expr '2' '*' '20' Ex: 18. A divisão utiliza o barra: $ expr '27' '/' '5' Ex: 19. Para o resto da divisão entre dois números use o percente: $ expr '35' '%' '9' Ex: 20. Combinação simples entre dois operadores aritméticos: $ expr 10 + 30-5 Ex: 21. Uma combinação mais complexa com 4 operadores: $ expr 20 / 2 + 3 '*' 30-5 Ex: 22. Junção de operador aritmético com operador relacional: $ expr 45 % 4 '>' 37 / 2 Ex: 23. O primeiro argumento match indica que a operação a ser realizada é de teste de correspondência do segundo argumento com o terceiro (regex): $ expr match 'opera' '^o.*[a-z]$' Ex: 24. Para extrair apenas uma parte de uma string indique no terceiro argumento a posição de início a contar de um e a posição final. O primeiro argumento deve ser substr: $ expr substr 'configuration' 1 4 Ex: 25. Use index e no terceiro argumento os caracteres que serão localizados a sua posição na string do segundo argumento: $ expr index 'enemark' 'k' Ex: 26. O cálculo do tamanho de uma string use length: $ expr length 'Soy Brasileño' [ expressão Checa o tipo de arquivo e compara valores. Ex: 1. Converte o valor de falso para verdadeiro: $ [! false ] $ echo $? Ex: 2. Converte o valor de verdadeiro para falso: $ [! true ] Ex: 3. Caso a variável "$OLDPWD" tenha algum valor atribuído será verdadeiro. Use a variável especial "$?" para verificar o resultado do teste: $ [ -n "$OLDPWD" ] $ echo $? Ex: 4. Enquanto que "-n" considera verdadeiro o teste onde a string que tenha a quantidade de caracteres maior que zero, a opção "-z" tem ação contrária: $ [ -z "$OLDPWD" ] Ex: 5. O teste de igualdade é feito com "=". Observe o uso do duplo "&&" para condicionar a execução do echo em caso verdadeiro: $ [ 'A' = 'A' ] && echo "Equals charts" Ex: 6. O uso de "-eq" (igualdade) é destinado para inteiros: $ [ "$UID" eq 0 ] echo root Ex: 7. O sinal de "!=" verifica se existe diferença entre ambos. O resultado do teste é verdadeiro, pois a diferença de caixas já é suficiente para não serem iguais os caracteres: $ [ 'A'!= 'a' ] Ex: 8. Desde que o resultado dos comandos contidos em um subshell retornem um número inteiro, então é possível realizar comparações. No exemplo é de diferença, sendo o mesmo que "!=": $ [ "$(awk 'END{print FNR}' /etc/hostname)" ne 0 ] Ex: 9. O uso de "-ge" tem equivalência a ">=". O resultado do teste é igual a falso: $ [ 10 ge 11 ] Ex: 10. O argumento "-gt" tem a forma de ">" exclusivo para inteiros: $ [ 10 gt 9 ] Ex: 11. O "-le" é a representação de "<=" exclusivo para inteiros: $ [ "$LINES" le 30 ] Ex: 12. Menor que, "<", para teste com inteiros: $ [ ${#LANGUAGE} lt ${#HOSTNAME} ] Ex: 13. Se o arquivo file2 for mais recente que file1, então o teste é verdadeiro: $ [ ~/file2 nt ~/file1 ] Ex: 14. Se a data de criação de file1 é anterior a de file2, logo resultado verdadeiro: $ [ ~/file1 ot ~/file2 ] Ex: 15. Verifica se loop0 existe em /dev e se também é um arquivo de bloco especial: $ [ -b /dev/loop0 ] Ex: 16. Testa se tty existe em /dev e se também é arquivo de caractere especial: $ [ -c /dev/tty ] Ex: 17. Avalia se "1" em /proc é um diretório: $ [ -d /proc/1 ] Ex: 18. Consta se o arquivo grub existe no caminho: $ [ -e /etc/default/grub ] Ex: 19. Para expressa o operador "and" (e) utilize o argumento "-a". O resultado do teste abaixo é verdadeiro: $ [ 1 = 1 a 2!= 3 ] $ printf $? Ex: 20. O teste pode ser realizado com a união de várias partes com distintas operações: $ [ "$PWD" = ~ -a 10 -gt 5 -a 2 ne 4 ] $ echo $? Ex: 21. Use "-o" para obter o mesmo efeito que "or" (ou): $ [ "$PWD" = ~ -o "$SHELL" = "sh" ] $ echo $? Arquivos de Configuração ~/.bashrc Configurações personalizadas do usuário que serão executadas na inicialização de uso do terminal. ~/.bash_logout Configurações personalizadas do usuário que serão executadas no encerramento da sessão no terminal. ~/.bash_history Histórico dos comandos digitados no terminal. Use o comando history como alternativa rápida. /etc/default/keyboard Relativo as configurações do teclado. A variável "XKBMODEL" expressa o modelo do teclado (valor comum "pc105"), enquanto que "XKBLAYOUT" contém a sigla em minúsculo do país (use "br" para Brasil). /etc/group Listagem de todos os grupos cadastros no sistema com os seus respectivos "GID" e os membros associados a ele. /etc/adduser.conf Estabelece os valores das variáveis de configuração para criação de novos usuários. /etc/passwd Listagem de todos os usuários do sistema com os seus respectivos "UID","GID", home e shell. /etc/shadow Contém todas as senhas criptogradas dos usuários cadastros no sistema.

15 /etc/default/grub Organiza as variáveis de inicialização do boot loader GRUB. O "GRUB_DEFAULT" recebe o número da linha a ser selecionada correspondente ao SO a contar de "0"; enquanto que "GRUB_TIMEOUT" contém o tempo em segundos para qualquer ação de seleção antes do repasse definitivo ao SO. Altere o valor para "text" da variável "GRUB_CMDLINE_LINUX_DEFAULT", execute o comando update-grub e reboot para desabilitar a interface gráfica. /var/lib/dpkg/status Retém informações relevantes dos pacotes instalados no sistema, tais como status, prioridade, tamanho, mantenedor, arquitetura, versão, descrição e dependência. /usr/share/x11/xkb/rules/base.lst Ao início do arquivo a lista dos modelos de teclados com as suas descrições relacionadas aos fabricantes e logo abaixo as siglas respectivas do layout de cada país. Variáveis de Ambiente $HOME Informa o diretório pessoal do usuário logado na sessão corrente. Para verificar o seu valor use o comando echo: $ echo $HOME $OLDPWD Aponta para o último diretório acessado no terminal. No mesmo sentido anterior use o printenv: $ printenv OLDPWD $PS1 Contém as configurações do prompt de comando. Os princiapis identificadores são: "\u" para nome do usuário, "\h" para nome do host, "\w" para diretório de trabalho, "\$" para simbolizar usuário limitado ou root, "\#" contar a quantidade de comandos executados no terminal, "\t" para horário no formato de 24h (HH:MM:SS), "\T" para o formato de 12h e "\!" indica o número no histórico para o comando. $PWD Aponta o caminho do diretório atual de trabalho. $SHELL Aponta o caminho para o executável do shell da sessão em aberto. $? Variável especial dinâmica que guarda o código de retorno da execução de um comando. Se o código for igual a "0" (zero), então ocorreu tudo como esperado, senão igual ou maior que "1" houve falha ou erro. No teste abaixo o comando ls executa com sucesso, enquanto que printf não: $ ls ; echo $? ; printf ; echo $? $$ Informa o PID do programa shell que esteja em execução. Símbolos do Shell ; (ponto e vírgula) Separador de comandos na mesma linha. Ex: 1. Executa o comando echo e depois cat: $ echo "Hello World" >> hello ; cat hello Ex: 2. Atualiza os pacotes do sistema e reinicializa o computador: $ apt-get update ; reboot. (ponto) Dentro de um contexto pode representar o diretório corrente, o início de um nome de arquivo ou pode ser combinado com outro(s) caractere(s) para outro fim, por isto sempre é necessário observar para compreender. Ex: 1. Apresenta todos os objetos do diretório corrente: $ ls. Ex: 2. Semelhante ao exemplo anterior, porém ponto-ponto representa o diretório pai: $ ls.. Ex: 3. Combinado com asterisco, apresenta todos os arquivos que se iniciam com ponto, arquivos ocultos: $ ls.* Ex: 3. O arquivo usain-bolt localizado em /tmp é movido para o diretório corrente: $ mv /tmp/usain-bolt. Ex: 4. O primeiro argumento para cp indica que a partir do diretório atual deve-se subir outros 3 para alcançar a tmp que contém o arquivo yohan-blake. O segundo argumento sinaliza a localização da cópia, que deve ser para o diretório pai: $ cp../../../tmp/yohan-blake../ Ex: 5. Quando combinado com barra indica execução imediata do arquivo. Observe que é necessário pelo menos que o arquivo contenha as permissões de leitura e execução para o dono: $./script Ex: 6. Você, também, pode invocar a execução de forma absoluta, assim não irá importar onde você esteja: $ ~/tmp/script Ex: 7. Caso o programa ou script não tenha as permissões mínimas como já dito ou o sistema de arquivos não ofereça suporte nativo, então use a seguinte forma para caminho relativo: $../script Ex: 8. Semelhante ao exemplo anterior, porém o endereçamento é posto em absoluto: $. /media/zotos/scripts/submit.sh (pipeline) Transforma a saída de um comando em entrada para outro. Ex: 1. A saída do comando ls vira entrada para o comando tail para visualizar o último objeto do diretório corrente: $ ls tail -1 Ex: 2. A impressão da variável "$PATH" sofre troca do seu caractere ":" por "\n" e por seguinte é gravado no arquivo de nome directories e apresentado em tela: $ printenv PATH tr ':' '\n' tee directories (dois pipelines) Condiciona a execução do próximo comando caso o anterior tenha falhado. Ex: 1. O comando ls terá falha ao não encontrar, logo causará a execução do echo: $ ls l Thundercats echo No dir/file. Ex: 2. A forma de chamada do printf sem argumento causa um erro, então printenv apresenta o valor da variável "$USER": $ printf printenv USER Ex: 3. O teste do comando "[" é verdadeiro, portanto a mensagem em printf e ele mesmo serão ignorados: $ [ 1 = 1 ] printf "Equals numbers" & (ampersand) Coloca a execução de um comando em background.

16 Ex: 1. Coloca em segundo plano a compactação dos arquivos de extensão xml: $ zip files-xml.zip *.xml & Ex: 2. Realiza o processo de copia de diretóris e arquivo em background: $ cp R ~/folders ~/backups & && (dois ampersands) Condiciona a execução do próximo comando caso o anterior tenha executado com sucesso. Ex: 1. O comando echo executa com sucesso, logo também é executado ls: $ echo List of files: && ls Ex: 2. A forma de chamada do printf sem argumento causa um erro, então printenv não executará: $ printf && printenv USER Ex: 3. O teste do comando "[" é verdadeiro, portanto será impresso em tela a mensagem "Equals numbers": $ [ 1 = 1 ] && printf "Equals numbers" (aspas simples) Considera na forma literal uma string. Ex: 1. Imprime a frase na forma que se encontra: $ echo 'Meu usuário: $USER' (aspas duplas) Avalia o conteúdo da string. Ex: 1. Ao imprime a frase faz a substitui da variável "$USER" por seu respectivo valor de ambiente: $ echo "Meu usuário: $USER" Ex: 2. Dispõem a troca da variável "$$" pelo identificador do processo: $ echo "PID do terminal: $$" `` (aspas invertidas) Avalia e executa o comando. Ex: 1. Uni o resultado do comando pwd com o do echo: $ echo "Current dir: "`pwd` Ex: 2. Congela todos os processos do navegador chrome: $ kill -19 `pidof chrome` > (sinal de maior) Direciona a saída de dados para um arquivo ou dispositivo. Ex: 1. Despeja a saída do comando whois para dentro do arquivo domain: $ whois eduardoenemark.com.br > domain Ex: 2. Direciona a saída do comando ls para o dispositivo /dev/null (buraco negro): $ ls R / > /dev/null >> (dois sinais de maior) Adiciona ao final de um arquivo ou dispositivo uma saída de dados. Ex: 1. Grava as estatísticas no arquivo stat, aguarda 10 segundos e adiciona ao final do arquivo as novas estatísticas: $ iostat > stat ; sleep 10s ; iostat >> stat Ex: 2. Registra no arquivo users os usuários logados a cada 15 minutos: $ while [ true ]; do who >> users; sleep 15m; done & 2> (dois seguido de sinal de maior) Direciona a saída de erro para um arquivo ou dispositivo. Ex: 1. Direciona o erro do comando ls para o arquivo no-xxx: $ ls xxx 2> no-xxx Ex: 2. Grava qualquer erro gerado pelo comando service no arquivo error.log: $ service virtualbox status 2> error.log 2>> (dois seguido de dois sinais de maior) Adiciona ao final de um arquivo ou dispositivo uma saída de erro. Ex: 1. Grava no arquivo denied todos os erros gerados pelo comando find: $ ls xyz 2> no-file ; ls x2 2>> no-file ~ (til) Representa o home do usuário. Ex: 1. Acessa o diretório pessoal do usuário atual: $ cd ~ Ex: 2. Navega para home do usuário de nome highlander: $ cd ~highlander Ex: 3. Copia o arquivo /tmp/date.log para home: $ cp /tmp/date.log ~ { } (brace expansion chave aberta e fechada) Dentre as possibilidades de uso estão como principais: geração de strings arbitrárias e demilitação de código de função anômima ou nomeada. Ex: 1. Combina os valores separados por vírgulas com o caractere "1": $ echo {a,b,c}1 #Resulting: a1 b1 c1 Ex: 2. Algumas combinações, como visto no exemplo, são possíveis: $ echo {,a}{,b}2 #Resulting: 2 b2 a2 ab2 Ex: 3. São geradas strings como edu, efu e ebu: $ echo e{d,f,b}u Ex: 4. Caso seja necessário que se tenha dois dígitos, coloque um zero a esquerda: $ echo {05..99} #Resulting: 05 06 07... 99 Ex: 5. Semelhante ao exemplo anterior, porém com três dígitos: $ echo {000..100} Ex: 6. A combinação entre elmentos dos conjuntos dá-se na forma que o primeiro elemento relaciona-se com o primeiro até o último de outro conjunto. No exemplo, as primeiras strings são 1a, 1b e 1c e os últimas são 4a, 4b e 4c: $ echo {1,3,4}{a,b,c} Ex: 7. A geração de strings acontece antes da passagem das mesmas como argumento para o programa touch: $ touch x{41,89,99}{.txt,.final} Ex: 8. As combinações diminuem repetições. No exemplo, evita-se 3 repetições próximas: $ rm /tmp/test/x{89,99}{.txt,.final} Ex: 9. São apresentados os objetos (diretórios e arquivos) que iniciam-se em "b","l" ou "m". Observe a combinação com o asterisco: $ ls /{b,l,m}* Ex: 10. Um pequeno loop empregando o comando for: $ for pwd in "{code,base}{1,2,3,4}{$,@,=}"; > do > echo $pwd >> ~/passwds Ex: 11. Use ponto-ponto para definir um intervalo. No exemplo, o segundo conjunto terá "1", "2", "3", "4" e "5" como valores combinatórios: $ echo {a,b}{1..5} Ex: 12. Use ponto-ponto em mais de um conjunto para uma combinação poderosa: $ touch /tmp/{a..z}{0..9} Ex: 13. Observe uma combinação de formato misto: $ touch {a..z}{0..9}{@,\$,%}{xy,rf}.txt Ex: 14. Poupe tempo e esforço em comandos que recebem argumentos que podem ser automatizados: $ rm {a..y}{0..8}*xy.txt Ex: 15. Use a forma valor inicial, ponto-ponto, valor final, pontoponto e o valor de incremento do intervalo para maior

17 flexibilização. No exemplo, apenas é apresentado os números ímpares entre 1 e 10: $ echo {1..10..2} #Resulting: 1 3 5 7 9 Ex: 16. A mesma ideia que do exemplo anterior,porém com letras: $ echo {A..Z..6} #Resulting: A G M S Y Ex: 17. Valores negativos, também, são aceitos em todas as formas construídas: $ echo metal{-10..20..5} Ex: 18. O isolamento de código é outra forma de emprego. No exemplo, é combinado o here document: $ { > read band > echo I am listing $band > } <<< "Amon Amarth" Ex: 19. Assim, também, é possível direcionar a saída para um arquivo, por exemplo: $ { > date > head /proc/iomem > } > /tmp/memnow #! (shebang - cerquilha mais exclamação) Sempre na primeira linha de um script informa qual é o caminho do interpretador do código do arquivo. Ex: 1. Quando o código é Shell Script utiliza-se por padrão o bash: #!/bin/bash Ex: 2. O código sendo do tipo AWK, então além do caminho também o acréscimo da opção "-f": #!/usr/bin/awk -f Ex: 3. Para scripts que contenham códigos do tipo Perl: #!/usr/bin/perl <<HEREDOC (here document - dois sinais de menor e um delimitador próprio) Cria um arquivo virtual para servir como entrada para determinado programa. Ex: 1. O delimitador definido é "TEXT" e ao encontra-lo novamente na quarta linha é encerrado o limite do arquivo: $ cat <<TEXT > This is text based in here document, > who is virtual file. > TEXT Ex: 2. O nome do marcador pode ser personalizado para melhor definição do objetivo a ser alcançado. Não existe uma regra própria para nomes. Neste exemplo é usado "CALC" para expressa o uso de cálculos matemáticos, mas poderia ser usado outro como "MATH": $ bc <<CALC > scale = 2 > x = 20 > ++ x > CALC Ex: 3. O here document interpreta o seu conteúdo interno, logo a presença de variáveis terão os seus valores substituídos e o seu de subshell ou aspas invertidas serão executados e imprimirão apenas o resultado da execução: $ cat <<INFO > Name: ${USER}, location: `pwd` > INFO <<< (here string três sinais de menor) Injeta uma cadeia de caracteres no programa. Essa forma é similar ao here document tem como unidade o word (palavra) Ex: 1. Quando apenas uma única palavra, as apas são dispensáveis: $ cat <<< Chess Ex: 2. O direcionamento de apenas duas palavras ou mais exige o uso de aspas simples ou duplas: $ cat <<< "Mozilla Firefox" Ex: 3. O efeito de interporlação também acontece no here string: $ tee <<< "Hello ${USER}" Ex: 4. É viável colocar as palavras em mais de uma linha: $ tee <<< ' > Now go or break... > Was all work.' \ (escape - contrabarra) 1) Torna literal caracteres de significado especial; 2) Indica o prosseguimento do programa, opções e argumentos nas próximas linhas. Ex: 1. Será apresentado na forma que está. Não ocorrerá a interpolação para "$USER": $ echo "Variable of user: \$USER" Ex: 2. Ao invés de criar dois arquivos, é criado apenas um de nome de "Computer Science": $ touch Computer\ Science Ex: 3. Faz com que o direcionador de saída (sinal de maior) seja interpretado como um argumento comum: $ expr 2 \> 0 Ex: 4. Os caracteres especiais pipeline e parênteses ficam sem efeito com o uso do escape: $ echo Use \ \(pipeline\) to comunication. Ex: 5. Desmembrar a codificação realizada no awk em várias linhas: $ awk \ > 'BEGIN{FS=":"} > $3 > 1000 {print $1}' /etc/passwd Ex: 6. Os argumentos de tr são posto na próxima linha: $ printenv PATH tr \ > ':' '\n' # (comentário - cerquilha) Texto descritivo sem efeito de processamento sobre determinada parte do código ou programa. Ex: 1. Depois da opção "-a" é posto um comentário para informar que será acrescido arquivos ocultos: $ ls -a #Listing hidden files. Ex: 2. O comentário pode ser posicionado no final de uma linha ou ocupar toda ela: $ #Date default format. $ date $( ) (subshell cifrão seguido de parênteses) Executa os comandos contidos no subshell em uma outra instância de processamento (subprocesso). Ex: 1. O resultado obtido do pwd é apresentado pelo echo: $ echo $(pwd) Ex: 2. O cálculo é realizado pelo bc e depois exibido pelo printf: $ printf $(bc <<< "2 ^ 10") Ex: 3. A variável files dinamicamente suporta na forma de array os nomes dos diretórios e arquivos providos de ls: $ files=($(ls)) $ echo ${files[1]} Ex: 4. O pipeline e outros símbolos especiais podem ser utilizados dentro de um subshell livremente: $ echo "CPU's Cores: $(lscpu 'awk FNR == 4 {print 2}')" ( ) (agrupador parênteses) Realiza a união de saída de comandos. Ex: 1. Imprime o resultado do comando free conjuntamente com o do ls: $ (free ; ls -a) Ex: 2. Uni a mensagem provida de echo e as linhas correspondentes ao padrão "box" dos nomes dos pacotes do repositório: $ (echo "Ocorrences:"; apt-cache search

18 virtualization grep i box) Ex: 3. Ao invés de despejar a saída dos comandos date e awk individualmente através de duas linhas de comandos, elas podem ser unidas em apenas: $ (date; awk '/reserved/' /proc/iomem) > ~/reserved >& (maior seguido de ampersand) Direciona a saída de dados e de erros para um arquivo ou dispositivo. Ex: 1. Injeta no arquivo file o resultado da execução do echo: $ echo Ok >& ~/file Ex: 2. No mesmo sentido lógico que o exemplo anterior: $ uname a grep y >& ~/result Ex: 3. Apenda ao final do arquivo file o resultado da operação independentemente do seu resultado. O uso dessa forma exige o descritor explícito: $ echo Go! >> ~/file 2>&1 Shell Script Variável É o espaço de memória nomeado para armazenar um determinado valor a ser trabalhado para uso em um algoritmo. O valor atribuído pode ter natureza númerica ou literal, algumas linguagem exigem que se faça tal diferenciação no momento da declaração, enquanto que outras não fazem tal distintção, que é o caso do próprio Shell Script e PHP. Ex: 1. Cria na sessão corrente a variável de nome distro e a atribui a literal "linux" e na próxima linha realiza a impressão. Observe que no momento de atribuição o "$" (cifrão) é utilizado: $ distro="linux" $ echo $distro Ex: 2. Atribui a literal "Hello" para msg, depois adiciona a ela mesma outra literal "World", então a impressão resultará na mensagem Hello World: $ msg="hello" $ msg=$msg" World" $ echo $msg Ex: 3. Mesmo efeito do exemplo anterior. Somente com a utilização de aspas duplas é possível o efeito da interporlação: $ msg="hello" $ msg="$msg World" $ echo $msg Ex: 4. Operações matemáticas : $ number=10 $ expr $number + 20 Ex: 5. As variáveis podem ser utilizadas para compor argumentos para comandos: $ cd /home/$user Ex: 6. Uma variável pode receber dinamicamente o resultado da execução de um subshell: $ lastobject="$(ls tail -1)" $ printf "%s\n" $lastobject Ex: 7. Use aspas invertidas para promover a execução de um comando e a saída atribuída a variável path: $ path="`pwd`" $ print $pwd Ex: 8. Quando necessário injetar uma variável em meio de uma string, então faça uso do "${var}": $ numbers=123456 $ echo "password: xyz${numbers}qxb" Ex: 9. Uma variável pode receber o nome de um programa e depois ser executada como se fosse o próprio em linha de comando: $ command="echo" $ $command "Hello with variable" Ex: 10. A adição de opções é viável, como visto para command que recebe "ls" com "-l": $ command="ls -l" $ $command ~ Ex: 11. Caso seja necessário retornar um valor padrão na situação que a variável "xyz" esteja vazia ou não exista, então siga a seguinte forma: $ printf ${xyz:-"default value"} Ex: 12. A forma "${var:=value}" comporta-se da mesma que o exemplo anterior, porém atribui o valor "default value" a "xyz": $ printf ${xyz:="default value"} $ echo $xyz Ex: 13. Apresenta a quantidade de caracteres atribuídos a variável "xyz": $ echo ${#xyz} Ex: 14. Para remover a parte inicial de uma string em uma variável use "${var#padrao}". No exemplo o resultado será apenas "Violin Concert": $ album="tchaikovsky Violin Concert" $ echo ${album#tchaikovsky} Ex: 15. Para eliminar o final use a forma "${var%padrao}": $ echo "Author: ${album%"violin Concert"}" Ex: 16. A forma "${!prefix*}" busca no ambiente os nomes das variável com determinado começo. No exemplo são listadas que iniciam com "H": $ echo ${!H*} Ex: 17. Indica a posição de início da string vista na forma abaixo. A conteúdo da variável será apresentado a partir da posição "5": $ echo ${album:5} Ex: 19. Use esta outra forma para indicar começo e fim das posições, no exemplo é iniciado na posição 5º posição até o terceiro caractere adiante: $ echo ${album:5:3} Ex: 20. Neste é exemplo na variável author é substituído a literal "a" por "x": $ author=handel $ echo ${author/a/x} Ex: 21. Para excluir omita a terceira parte como visto no código: $ echo ${author/a} Ex: 22. A variável tmp recebe a string author e ao usar a forma "${!var}" faz referência indireta ao seu conteúdo da variável author: $ tmp=author $ printf ${!tmp} true É a uma representação embutida no shell para designar o valor de verdadeiro. Tenha em mente que o valor mencionado em sua forma numérica igual a 0. Ex: 1. O comando echo sempre executará devido ao condicionamento sempre verdadeiro do true: $ true && echo True Ex: 2. Através deste simples código é possível constatar o valor de true: $ true; echo $? false É a representação embutida no shell para designar o valor de falso. Em sua forma númerica é igual 1. Ex: 1. De forma inversa ao exemplo 1 do true: $ false printf False Ex: 2. Semelhante ao código visto no exemplo 2 de true: $ false; printf $? if Realiza a execução de comandos na forma de um prévio teste condicional. Se a condição do teste for verdadeira, então os comandos entre then e fi serão realizados.

19 Ex: 1. Um simples teste de verificação de igualdade com uso do programa "[": $ if [ 1 = 1 ]; then echo "Equals"; fi Ex: 2. Se o usuário logado na sessão corrente não for root, então os dois comandos echo serão executados: $ if expr $UID!= 0 > then > echo You are not root > echo Use \"su l\" to became root. Ex: 3. Se a variável "$num" for menor que 4, então serão processados os comandos entre then e fi: $ num=3 $ if [ $(bc <<< "$num < 4") ];then > echo Variable \$num is less than 4 > num=10 > echo Now is 10 else No caso onde é necessário executar algum código padrão ou apresentar uma mensagem se o teste condicional do if falhar. Ex: 1. Executa o comando date com o seu argumento e se for menor que 6 caíra na execução da primeira mensagem, senão será apresentado a frase em else: $ if [ `date +"%H"` -gt 6 ] > then > echo Still is night > else > echo Already is day Ex: 2. Verifica se no caminho da variável "$SHELL" tem o termo bash, caso positivo apresenta a primeira mensagem, senão a segunda: $ if [ $(grep -i bash <<< $SHELL) ] > then > echo Default shell of Linux > else > echo Other shell elif Nos casos onde é preciso realizar mais de um teste condicional, quando apenas o if não é suficiente. Ex: 1. Se existir o arquivo file1 em home será apresentado o seu conteúdo pelo comando cat, caso não tenha é procurado pela existência de file2 e se encontrado executa o comando more. Se em todo o caso não for encontrado nem file1 e file2, então é criado file2 com a frase: "This create file2 in home". Em um segunda execução do código o comando elif executará: $ if [ -e ~/file1 ] > then > cat ~/file1 > elif [ -e ~/file2 ] > then > more ~/file2 > else > cat > ~/file2 <<TXT > This create file2 in home. > TXT Ex: 2. Gera um arquivo a partir do comando yes e através dos testes das condições é decidido por compactar, dividir ou alertar sobre o tamanho do arquivo: $ timeout -s 9 15s yes "Anna Netrebko" > /tmp/soprano $ file_length="$(du /tmp/soprano cut -d '/' -f 1)" $ max_length=`expr '1024' '*' '1024'` $ if [ $file_length -le $max_length ];then > echo "Zipping file..." > zip /tmp/soprano.zip /tmp/soprano > elif [ $file_length -ge `expr $max_length '*' '2'` ];then > echo "Dividing file in 3 parts..." > split -d -n 3 /tmp/soprano /tmp/sopranopart > else > echo 'No operation! file is very big.' case Assemelha-se em mesmo sentido lógico ao if, elif e else juntos, porém o uso do case é mais adequado quando os valores de entrada são conhecidos e cada valor condiciona determinada ação. Ex: 1. No código a mensagem apresentada ao final é condicionada de acordo com o nome do país digitado. O asterico sinaliza comportamento padrão para os casos de desconhecimento do valor do valor testado: $ read -p "Hello. What is your country? " country $ case "$country" in > Brazil) > continent="america" > ;; > "South African") > continent="african" > ;; > Mongolia) > continent="asia" > ;; > *) > continent="europe or Oceania" > ;; > esac $ printf "Continent: %s.\n" "$continent" Ex: 2. O uso de expressão regular pode ser utilizada para promover um teste baseado em padrão ao invés de valor absoluto: $ read -p "Type a letter or number: " -n 1 input $ case "$input" in > [a-za-z]) > echo -e "\nwas typed a letter" > ;; > [0-9]) > echo -e "\nwas typed a number" > ;; > *) > echo -e "\nok. You inserted a special > char" > ;; > esac > printf 'Thank by your participation!\n' Ex: 3. O código de retorno da execução de um comando pode servi como objeto de um teste para condicionar outras ações de acordo com determinado valor: $ com='wget http://educode.com.br/info/code' $ $com >& /dev/null $ case "$?" in > 0) > echo 'Download Ok!' > ;; > 4) > echo "5 minutes to try again..." > sleep 5m ; $com > ;; > 8) > echo 'File not find.'

20 > ;; > esac while Executa uma porção de código de forma interativa até que a condição de teste seja falsa. Tal comando é dito que se trata de um loop (laço) devido a sua característica computacional. Ex: 1. Um loop de código simples que conta de 0 até 3: $ while [ ${i:=0} le 3 ] > do > echo $i > let i++ Ex: 2. A execução de um laço pode ser infinita com o uso de true: $ while true > do > who; sleep 2s Ex: 3. A cada interação do loop é perguntado ao usuário se deseja encerra-lo, caso digite "y" para sim é terminado o processamento: $ while expr "$out" "!=" "y" > do > echo "Log: `date`" > read p "Exit (y or n): " out for Executa uma porção de código de forma interativa até esgotar todos os valores da lista. A diferença entre Esse comando é dito que se trata de um loop (laço) devido a sua característica computacional. Ex: 1. Conta de 0 até 3. Observe a diferença : $ for i in 0 1 2 3 > do > echo $i Ex: 2. Equivalente ao exemplo anterior: $ for i in {0..3}; do echo $i; done Ex: 3. Realiza a contagem da quantidade de diretórios e arquivos de "/etc" que comecem com uma vogal: $ for file in ls -d /etc/[aeiou]* > do > [ -d "$file" ] && let count_dir++ > [ -f "$file" ] && let count_file++ > printf "Directories: $count_dir \n" > printf "Files: $count_file \n" Ex: 4. São criadas três pastas em home e em tmp01 ficarão todos os arquivos de nome "1a" até "5f", em temp02 os de "5g" até "9z" e tmp03 os demais até "15z": $ mkdir ~/tmp01 ~/tmp02 ~/tmp03 $ for i in {1..15} > do > for j in {a..z} > do > if [ "$i" -le "5" ]; then # up to '5f' > if (expr "$i" "=" "5" && expr "$j" ">" "f") > /dev/null ; then > dir="tmp02" > else > dir="tmp01" > elif [ "$i" -le "9" ] ; then # up to '9z' > dir="tmp02" > else > dir="tmp03" > touch ~/$dir/"${i}${j}" until Executa uma porção de código de forma interativa até que a condição de teste seja verdadeira. Observe que tal comando requer progressão do laço na condição inversa do while. Ex: 1. Equivalente ao exemplo 1 feito no while: $ until [ "${i:=0}" -gt 3 ] > do > echo $i; let i++ Ex: 2. Semelhante ao exemplo 2 realizado em while: $ until false; do who; sleep 2s; done Ex: 3. O código do exemplo gera um arquivo de teste em /tmp de nome violinist até que ele tenha o tamanho de 20Kb: $ file="/tmp/violinist" $ rm $file >& /dev/null ; touch $file $ # Max file length: 20KB $ until expr "`du $file cut -f 1`" ">=" "20" > /dev/null > do > printf "Julia Fischer\n" >> $file break Causa a interrupção imediata de um laço quando alcançado. Em um loop quando alcançado determinada condição e não se deseja mais a progressão do processamento, então o uso do break é o mais adequado. Ex: 1. Conta de 0 a 3. Essa forma de código tem resultado igual a forma do exemplo 1 do while: $ while x=`expr ${x:="0"} + 1`; do > [ "$x" -gt 3 ] && break > echo "$x" Ex: 2. Gera um chave de tamanho máximo de 20 dígitos aleatórios: $ key="" $ until false; do > expr "${#key}" ">=" 20 > /dev/null && break > key="${key}$(sleep 1s;rand -u -N 1 -M 9)" $ echo $key continue Ignora a porção de código restante do laço e parti para o próximo loop. Ao contrário do break que causa uma interrupção, o continue sinaliza que todo código posterior a ele deverá não ser processado em determinado momento. Ex: 1. Conta de 0 a 3, porém ignora o 2: $ while x=`expr ${x:="0"} + 1` && [ "$x" -le 3 ] > do > [ "$x" -eq 2 ] && continue; echo "$x" Ex: 2. Semelhante ao exemplo 2 do break, porém a diferença é que dígitos iguais não poderão ficar lado a lado: $ key="" $ until false; do > expr "${#key}" ">=" 20 > /dev/null && break > number="$(sleep 1s;rand -u -N 1 -M 9)" > [ $(expr length "$key") -eq 0 ] && key="$number" > [ $number -ne $(expr substr "$key" `expr length "$key"` 1) ] continue > key="${key}${number}"