Prévia do material em texto
Linux - Linha de Comando Laboratório de Fundamentos em Tecnologia da Informação – LFTTecnologia da Informação – LFT Prof. Victor Thomaz Linha de Comando • Entrada de comandos e visualização em modo texto. • Utilize os programas: – terminal, console ou xterm– terminal, console ou xterm 2 man pages • Manual que apresenta descrição das funcionalidades dos comandos e arquivos • Entre as diversas distribuições Linux, os parâmetros e opções de comandos podem parâmetros e opções de comandos podem variar, assim o comando “man” é muito útil. 3Parte 01 man pages • Uso: – man – Digite man seguido de um comando para visualizar o “manual” de utilização do comando. visualizar o “manual” de utilização do comando. – Pressione a tecla q para fechar o manual. Algumas “man pages” contém exemplos (no final do texto). • fulano@pc01:~$ man whois – Reformatting whois(1), please wait... 4 man pages • A maioria dos arquivos de configuração também possuem seu próprio manual. • man • fulano@pc01:~$ man syslog.conf• fulano@pc01:~$ man syslog.conf – Reformatting syslog.conf(5), please wait... 5 man pages • Alguns processos “daemons” (programas que executam em background) também possuem “man pages”. • man • man – fulano@pc01 :~$ man syslogd 6 man pages • man -k (apropos): man -k (or apropos) Apresenta várias descrições curtas onde a palavra especificada ( no exemplo a seguir “syslog”) foi encontrada no manual. – fulano@pc01 :~$ man -k syslog – fulano@pc01 :~$ apropos syslog – lm-syslog-setup (8) - configure laptop mode to switch syslog.conf ... – logger (1) - a shell command interface to the syslog(3) ... – syslog-facility (8) - Setup and remove LOCALx facility for sysklogd – syslog.conf (5) - syslogd(8) configuration file – syslogd (8) - Linux system logging utilities. – syslogd-listfiles (8) - list system logfiles 7 man pages • whatis – Apresenta somente uma breve descrição da página do manual. • fulano@pc01:~$ whatis route – route (8) - show / manipulate the IP routing table 8 man pages • whereis – Apresenta a localização do arquivo que contém uma página do manual. Opção –m procura somente por seções do manual.somente por seções do manual. • fulano@pc01:~$ whereis -m whois – whois: /usr/share/man/man1/whois.1.gz • Este arquivo pode ser chamado diretamente pelo comando man. – fulano@pc01:~$ man /usr/share/man/man1/whois.1.gz 9 Diretórios • Serão descritos os comandos mais comuns quando trabalhamos com diretórios. 10Parte 02 Árvore de Diretórios 11 Descrição Principais Diretórios 12 Diretórios • Diretório é uma pasta; • Diretórios no Linux são organizados de acordo com o padrão FHS – Filesystem Hierarchy Standard (www.pathname.com/fhs); • Diretórios: • – /bin: Comandos (binários) essenciais acessíveis a qualquer • usuário; • – /sbin: Comandos (binários) essenciais administrativos; • – /boot: Arquivos estáticos do gerenciador de inicialização e • imagem do Kernel; 13 Diretórios • /dev: Arquivos dispositivos (Hds, placa de som, • placa de vídeo, mouse, etc, exceto placa de rede); • /etc: Arquivos de configuração de sistema e de • programas em geral;• programas em geral; • /lib: Bibliotecas essenciais do sistema; • /media: Ponto de montagem para dispositivos • removíveis; • /mnt: Ponto de montagem para sistemas de • arquivos temporários; 14 Diretórios • /opt: Pacotes de software adicionais (proprietários); • /srv: Dados providos por serviços de rede do sistema; • /var: Dados variáveis (por exemplo: arquivos de log, cache, spool de • impressão etc); • /home: Diretórios pessoais dos usuários; • /root: Diretório pessoal do root; • /usr: Hierarquia secundária do sistema: – /usr/sbin: Binários administrativos não essenciais; – /usr/bin: Binários não essenciais; – /usr/lib: Bibliotecas não essenciais ao sistema; – /usr/share/man: Documentação (manuais); – /usr/src: Códigos-fonte, por exemplo: do Kernel 15 Diretórios • /proc: – Armazena informações dinâmicas sobre o sistema operacional, como, processos, informações sobre entrada e saída, interrupções, modelo do processador, versão do kernel, quanto tempo a máquina está ligada, quais sistemas de arquivos suportados etc. Este diretório não existe no disco rígido e sim na memória RAM; • /sys: – Sistema de arquivos virtual como o /proc mas que armazena e permite – Sistema de arquivos virtual como o /proc mas que armazena e permite modificações nos dispositivos conectados ao sistema; • /lost+found: – Armazena arquivos recuperados pelo sistema; • /run: – Informações sobre o sistema em execução desde o último boot , usuários logados e processos servidores em execução; • /tmp: – Arquivos temporários que são limpos durante a inicialização; 16 Diretórios • Caminhos de diretórios: . diretório corrente .. diretório pai.. diretório pai / diretório raiz - diretório anterior ~ diretório home do usuário 17 Diretórios 18 Diretórios • Comando pwd (Print Working Directory) – Apresenta o diretório corrente. – fulano@pc01:~$ pwd /home/fulano/home/fulano 19 Diretórios • Comando cd (Change Directory) – Muda o diretório corrente. – fulano@pc01:~$ cd /etc fulano@pc01:~$ pwd /etc –– fulano@pc01:~$ cd /bin fulano@pc01:~$ pwd /bin – fulano@pc01:~$ cd /home/fulano/ fulano@pc01:~$ pwd /home/fulano 20 Diretórios • Comando cd sem especificar um diretório destino (ou cd ~) retorna para o diretório home do usuário. – fulano@pc01:~$ cd /etc fulano@pc01:~$ pwd /etc/etc – fulano@pc01:~$ cd fulano@pc01:~$ pwd /home/fulano – fulano@pc01:~$ cd ~ fulano@pc01:~$ pwd /home/fulano 21 Diretórios • Comando cd .. move para o diretório do nível acima (diretório pai) na árvore de diretórios. – fulano@pc01:~$ pwd /usr/share/games – fulano@pc01:~$ cd .. – fulano@pc01:~$ pwd /usr/share 22 Diretórios • Comando cd - move para o diretório visitado por último. – fulano@pc01:~$ pwd /home/fulano – fulano@pc01:~$ cd /etc– fulano@pc01:~$ cd /etc fulano@pc01:~$ pwd /etc – fulano@pc01:~$ cd - /home/fulano – fulano@pc01:~$ cd - /etc 23 Diretórios • Caminho absoluto e relativo na árvore de diretórios. • Caminho (path): indica uma localização única de arquivo ou diretório no sistema de arquivos.arquivos. • Caminho absoluto: Localização específica a partir do diretório root ou raiz (/). É um caminho completo iniciando do diretório “/”. • Caminho relativo: É um caminho a partir do diretório corrente (pwd - present working directory). 24 Diretórios • Exemplo caminho absoluto: – fulano@pc01:~$ pwd /home/fulano – fulano@pc01:~$ cd /var/log – fulano@pc01:~$ pwd /var/log/var/log • Exemplo caminho relativo: – fulano@pc01:~$ pwd /var/log – fulano@pc01:~$ cd apt – fulano@pc01:~$ pwd /var/log/apt 25 Diretórios • Outro exemplo: – Considere o diretório corrente “/etc/samba” e o usuário deseja ir para o diretório “/etc”. – Usando caminho relativo:– Usando caminho relativo: • fulano@pc01:~$ cd .. – Usando caminho absoluto: • fulano@pc01:~$ cd /etc 26 Diretórios • Mais um exemplo: – Considere o diretório corrente “/var/log” e o usuário deseja ir para o diretório “/var/opt”. – Usando caminho relativo:– Usando caminho relativo: • fulano@pc01:~$ cd ../opt – Usando caminho absoluto: • fulano@pc01:~$ cd /var/opt 27 Diretórios • Tecla TAB • É utilizada para ajudar a completar um caminho sem que o usuário digite todas as letras. • Exemplo: Se o usuário está em “/var” e digita • Exemplo: Se o usuário está em “/var” e digita cd ba seguido da tecla TAB, o caminho é completado para cd backups. • Obs.: cd Ba seguido da tecla TAB não completa o caminho devido a letra “B” maiúscula. 28 Diretórios • Comando ls • Lista o conteúdo de diretório – fulano@pc01:~$ ls allfiles.txt dmesg.txt services stuff summer.txt fulano@pc01:~$fulano@pc01:~$ • Opção ls –a – Apresenta todos os arquivos inclusives os ocultos (estes possuemo nome iniciado com ponto “.”). – fulano@pc01:~$ ls –a . allfiles.txt .bash_profile dmesg.txt .lesshst stuf .. .bash_history .bashrc services .ssh summer.txt 29 Diretórios • Opção ls –l – fulano@pc01:~$ ls -l total 17296 -rw-r--r-- 1 fulano alunos 17584442 Sep 17 00:03 allfiles.txt -rw-r--r-- 1 fulano alunos 96650 Sep 17 00:03 dmesg.txt-rw-r--r-- 1 fulano alunos 96650 Sep 17 00:03 dmesg.txt -rw-r--r-- 1 fulano alunos 19558 Sep 17 00:04 services drwxr-xr-x 2 fulano alunos 4096 Sep 17 00:04 stuff -rw-r--r-- 1 fulano alunos 0 Sep 17 00:04 summer.txt 30 Diretórios • Opção ls –lh – Apresenta um formato mais amigável para os tamanhos de arquivos e diretórios. – fulano@pc01:~$ ls –lh total 17M -rw-r--r-- 1 fulano alunos 17M Sep 17 00:03 allfiles.txt -rw-r--r-- 1 fulano alunos 95K Sep 17 00:03 dmesg.txt -rw-r--r-- 1 fulano alunos 20K Sep 17 00:04 services drwxr-xr-x 2 fulano alunos 4.0K Sep 17 00:04 stuff -rw-r--r-- 1 fulano alunos 0 Sep 17 00:04 summer.txt 31 Diretórios • Significado de cada parte: • `-rwxr-xr--' � São as permissões de acesso ao arquivo teste. A primeira letra (da esquerda) identifica o tipo do arquivo, se tiver um `d' é um diretório, se tiver um "-" é um arquivo normal. • `1' � Se for um diretório, mostra a quantidade de sub-diretórios existentes dentro • `1' � Se for um diretório, mostra a quantidade de sub-diretórios existentes dentro dele. Caso for um arquivo, será 1. • `fulano' � Nome do dono do arquivo ` allfiles.txt '. • `alunos' � Nome do grupo que o arquivo ` allfiles.txt ' pertence. • `17M' � Tamanho do arquivo (em bytes). • `Sep' � Mês da criação/ última modificação do arquivo. • `4' � Dia que o arquivo foi criado. • ` 00:03 ' � Hora em que o arquivo foi criado/modificado. Se o arquivo foi criado há mais de um ano, em seu lugar é mostrado o ano da criação do arquivo. • ` allfiles.txt ' � Nome do arquivo. 32 Diretórios • Comando mkdir – Cria um novo diretório. – É preciso especificar pelo menos um parâmetro, o “nome do diretório” que o usuário deseja ☺. • fulano@pc01:~$ mkdir meudir• fulano@pc01:~$ mkdir meudir fulano@pc01:~$ cd meudir fulano@pc01:~/meudir$ ls -al total 8 drwxr-xr-x 2 fulano alunos 4096 Sep 17 00:07 . drwxr-xr-x 48 fulano alunos 4096 Sep 17 00:07 .. 33 Diretórios • Comando mkdir -p – Cria um novo diretório e subdiretórios. • fulano@pc01:~$ mkdir –p meudir/meudir2/meudir3 fulano@pc01:~$ cd meudir fulano@pc01:~$ ls -l total 4 drwxr-xr-x 2 fulano alunos 4096 Fev 23 16:04 meudir2drwxr-xr-x 2 fulano alunos 4096 Fev 23 16:04 meudir2 • OBS.: Na resposta do comando “ls -l” o número “2” após as permissões indica que o diretório corrente “meudir” possui dois subdiretórios (“meudir2” e “meudir3”), que foram criados com o comando “mkdir -p” anterior. 34 Diretórios • Comando rmdir – Remove um diretório vazio. O usuário deve ter permissão de gravação e ainda é necessário que esteja um nível acima do diretório que será removido. – fulano@pc01:~/meudir/meudir2$ rmdir meudir3 fulano@pc01:~/meudir/meudir2$ cd .. fulano@pc01:~/meudir$ rmdir meudir2fulano@pc01:~/meudir$ rmdir meudir2 rmdir: failed to remove ‘meudir2’: Directory not empty 35 Diretórios • Comando rmdir -p – Remove diretórios e subdiretórios vazios recursivamente. O usuário deve ter permissão de gravação e ainda é necessário que esteja um nível acima dos diretórios que serão removidos. – fulano@pc01:~$ rmdir -p /meudir/meudir2/meudir3– fulano@pc01:~$ rmdir -p /meudir/meudir2/meudir3 • OBS.: Para remover diretórios que contenham arquivos, use o comando `rm' com a opção `-r' 36 Exercícios • 1. Indique seu diretório atual. • 2. Mude para o diretório /etc/apt. • 3. Agora mude para o diretório home digitando apenas um comando. • 4. Vá para o diretório / boot / grub digitando apenas um comando. • 5. Vá para o diretório pai do diretório atual. • 6. Vá para o diretório raiz digitando apenas um comando. • 7. Liste o conteúdo do diretório raiz. • 8. Liste o conteúdo detalhado do diretório raiz. • 9. Liste o conteúdo de /etc a partir de outro diretório.• 9. Liste o conteúdo de /etc a partir de outro diretório. • 10. Liste o conteúdo de ~ a partir de outro diretório. • 11. Liste todos os arquivos (incluindo arquivos ocultos) em seu diretório pessoal. • 12. Liste os arquivos em / boot em um formato legível humano ☺ . • 13. Criar um diretório chamado testedir em seu diretório pessoal. • 14. Mude para o diretório / etc, permaneça nele e crie um diretório chamado novodir em seu diretório pessoal. • 15. Crie em com um só comando os diretórios ~/dir1/dir2/dir3 (dir3 é um subdiretório de dir2, • e dir2 é um subdiretório de dir1). • 16. Remova o diretório testedir. • 17. Utilize o terminal para encontrar informações sobre os comandos pushd e popd. Use man page para o comando bash. 37 Arquivos • A seguir serão apresentados comandos úteis para reconhecer, criar, remover, copiar e mover arquivos. 38 Arquivos • Case Sensitive – Os arquivos no Linux (ou qualquer Unix) diferem as letras maiúsculas de minúsculas nos nomes dos arquivos (e diretórios). Isto significa que arquivos (e diretórios). Isto significa que ARQUIVO1 é diferente de arquivo1 e que /etc/hosts é diferente de /etc/Hosts. 39 Arquivos • Tudo é um arquivo no Linux – Um diretório é um tipo especial de arquivo (case sensitive). – Cada janela de terminal (por exemplo /dev/pts/4), – Cada janela de terminal (por exemplo /dev/pts/4), qualquer disco rígido ou partição (por exemplo /dev/sdb1). – Qualquer processo são todos representados em algum lugar do Sistema de Arquivos como um arquivo. 40 Arquivos • Extensões – O Linux não usa extensões “.txt”, “.pdf” entre outras para determinar o tipo de arquivo. • Comando file – É possível usar o comando file para descobrir o tipo de – É possível usar o comando file para descobrir o tipo de arquivo. – fulano@pc01:~$ file foto01.png foto01.png: PNG image data, 3840 x 1200, 8-bit/color RGBA, non-interlaced – fulano@pc01:~$ file /etc/hosts /etc/passwd: ASCII text – fulano@pc01 :~$ file HelloWorld.c HelloWorld.c: ASCII C program text 41 Arquivos • O comando file utiliza um arquivo que contém vários padrões que são utilizados para o reconhecimento dos diversos tipo de arquivo. • O arquivo está localizado em “/usr/share/file” • O arquivo está localizado em “/usr/share/file” com o nome de “magic.mgc” • fulano@pc01:~$ file –s /proc/cpuinfo /proc/cpuinfo: ASCII text, with very long lines • A opção “-s” é utilizada quando para arquivos especiais, que são geralmente arquivos de sistema. 42 Arquivos • Comando touch – Cria um arquivo novo e vazio quando o nome especificado não existe. – fulano@pc01:~$ touch arq01fulano@pc01:~$ touch arq01 • Comando touch –t – Altera da data e hora do arquivo para 01/10 e 12:30. – fulano@pc01:~$ touch -t 10011230 arq01 – Altera da data, hora ano, e segundos do arquivo para 01/12/1999 e 12:30:30. – fulano@pc01:~$ touch -t 199912011220.30 arq01 – Formato [AAAAMMhhmm.ss] 43 Arquivos • Comando rm – O comando rm apaga um arquivo. Diferente da interface gráfica, na linha de comando não existe lixeira para recuperar o arquivo. O comando rm remove permanentemente o arquivo especificado.permanentemente o arquivo especificado. – Também pode ser usado para apagar diretórios e sub- diretórios vazios ou que contenham arquivos. – fulano@pc01:~$ ls texto.txt arq1 arq2 foto.jpg fulano@pc01:~$ rm texto.txt fulano@pc01:~$ ls arq1 arq2 foto.jpg fulano@pc01:~$ 44 Arquivos • Comando rm –i – Previne a remoção acidental com pergunta de confirmação. – fulano@pc01:~$ rm –i texto.txt – rm: remover arquivo “texto.txt”? n – rm: remover arquivo “texto.txt”? y 45 Arquivos • Comando rm –rf – Remove diretórios, subdiretórios e arquivos neles contidos, se o usuário possuir as permissões para tal. – Opções: • -r, --recursive: Usado para remover arquivos em sub- diretórios. Esta opção tambémpode ser usada para 46 diretórios. Esta opção também pode ser usada para remover sub-diretórios. • -f, --force: Remove os arquivos sem perguntar. – fulano@pc01:~$ rm –rf dir01 Arquivos • Comando cp – Copia arquivo especificado. fulano@pc01:~$ ls arq01 texto.txt fulano@pc01:~$ cp arq01 arq01.copia fulano@pc01:~$ ls arq01 arq01.copia texto.txt • Copiando para outro diretório• Copiando para outro diretório – fulano@pc01:~$ ls arq01 texto.txt fulano@pc01:~$ mkdir dir02 fulano@pc01:~$ cp texto.txt dir02 fulano@pc01:~$ ls dir02/ texto.txt – fulano@pc01:~$ cp * /tmp Copia todos os arquivos do diretório atual para /tmp. 47 Arquivos • Comando cp -r – Copia arquivos dos diretórios e subdiretórios da origem para o destino. – fulano@pc01:~$ cp –r /bin /temp – Copia todos os arquivos e o diretório `/bin' para `/tmp'. • Copiando vários arquivos ao mesmo tempo• Copiando vários arquivos ao mesmo tempo – fulano@pc01:~$ cp arq1 arq1.copia texto.txt dir02 fulano@pc01:~$ ls dir02 arq1 arq1.copia texto.txt – Último parâmetro precisar ser um diretório • Comando cp –i previne contra sobrescrita de arquivos. 48 Arquivos • Comando mv – Move ou renomeia arquivo ou diretório. • Renomeando arquivo – fulano@pc01:~$ ls dir03 dir02 arq02 arq02.copy texto.txtdir03 dir02 arq02 arq02.copy texto.txt fulano@pc01:~$ mv arq02 arq03 fulano@pc01:~$ ls dir03 dir02 arq03 arq02.copy texto.txt fulano@pc01:~$ 49 Arquivos • Comando mv – Move ou renomeia arquivo ou diretório. • Renomeando diretórios fulano@pc01:~$ ls –l drwxr-xr-x 2 fulano alunos 4096 Oct 15 09:36 dir33drwxr-xr-x 2 fulano alunos 4096 Oct 15 09:36 dir33 fulano@pc01:~$ mv dir33 backup fulano@pc01:~$ ls –l drwxr-xr-x 2 fulano alunos 4096 Oct 15 09:36 backup 50 Arquivos • Comando rename – Renomeia arquivos. Este comando pode apresentar diferenças entre as distribuições Linux. • Exemplos fulano@pc01:~$ ls abc.txt arq33.txt arq42.txt fulano@pc01:~$ rename 's/\.txt/\.png/' *.txt fulano@pc01:~$ ls abc.png arq33.png arq42.png • Parâmetro –n: Usado somente para testar sem realmente renomear os arquivos fulano@pc01:~$ ls abc.txt arq33.txt arq42.txt foto.jpg fulano@pc01:~$ rename -n 's/\.txt/\.png/' *.txt abc.txt remaned as abc.png arq33.txt remaned as arq33.png arq42.txt remaned as arq42.png 51 Arquivos • Comando rename – Renomeia arquivos. Este comando pode apresentar diferenças entre as distribuições Linux. • Outro Exemplo fulano@pc01:~$ ls abc.txt arq77.txt arq22.txt fulano@pc01:~$ rename 's/arq/file/' *.txt fulano@pc01:~$ ls abc.txt file77.txt file22.txt • Mais um exemplo – fulano@pc01:~$ rename 'y/a-z/A-Z/' *.html – Converte as letras minúsculas em maiúsculas em todos os arquivos com a extensão .html. • OBS.: Este comando utiliza expressões regulares (regex) para definir como renomear. Pesquise por Pearl expression e expressões regulares para aprender mais. 52 Exercícios • 1. Liste o conteúdo do diretório /bin. • 2. Mostre com apenas um comando os tipos de arquivos nos diretórios /bin/cat, /etc/passwd e /usr/bin/passwd. • 3.1. Use o comando find para encontrar dois arquivos de tipos diferentes. Exemplo: find /usr/share/backgrounds –name “*.png” para encontrar arquivos .PNG ou find /boot/grub –name “*.txt” para encontrar arquivos com extensão .TXT. • 3.2. Verifique os tipos dos dois arquivos encontrados com o comando anterior. • 4. Crie um diretório chamado teste dentro do diretório home do usuário e entre no diretório teste. • 5. Use o comando que cria arquivos vazios para criar os seguintes: hoje.txt e ontem.txt. • 6. Altere a data do arquivo ontem.txt para a data de ontem.• 6. Altere a data do arquivo ontem.txt para a data de ontem. • 7. Faça uma cópia do arquivo ontem.txt com o seguinte nome: copiaOntem.txt. • 8. Renomeie o arquivo hoje.txt para hoje.doc usando o comando mv. • 9. Crie o diretório ~/testeBackup e copie todos os arquivos em ~/teste para dentro dele. • 10. Use apenas um comando para remover o diretório ~/testeBackup e todos os arquivos contidos nele. • 11. Crie o diretório ~/etcBackup e copie todos os arquivos com a extensão .conf (*.conf) do diretório /etc para o diretório recém criado. • 12. Entre no diretório ~/etcBackup e renomeie todos os arquivos .conf para .backup. 53 Conteúdo de Arquivo • Serão apresentados comandos para criação de arquivos, visualização de conteúdo e partes relevantes. 54 Conteúdo de Arquivo • Comando head – Mostra as linhas iniciais de um arquivo texto. – Apresenta as quatro primeiras linhas • fulano@pc01:~$ head –n 4 /etc/passwd• fulano@pc01:~$ head –n 4 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh 55 Conteúdo de Arquivo • Comando head – Mostra os primeiros bytes do arquivo texto. – Apresenta os 14 primeiros bytes • fulano@pc01:~$ head -c14 /etc/passwd• fulano@pc01:~$ head -c14 /etc/passwd root:x:0:0:roo fulano@pc01:~$ 56 Conteúdo de Arquivo • Comando tail – Semelhante ao comando head, mas apresenta o conteúdo do final do arquivo especificado. – Apresenta as últimas quatro linhas– Apresenta as últimas quatro linhas • fulano@pc01:~$ tail -4 /etc/services tfido 60177/tcp # fidonet EMSI over telnet fido 60179/tcp # fidonet EMSI over TCP # Local services 57 Quatro linhas. Terceira em branco Conteúdo de Arquivo • Comando cat – Possibilita a visualização de conteúdos de arquivos. Trabalha copiando dados da standard input para standard output que combinado com o input para standard output que combinado com o shell apresenta diversas possibilidades de uso. – Mostrando conteúdo de arquivo • fulano@pc01:~$ cat /etc/ts.conf 58 Conteúdo de Arquivo • Comando cat – Pode ser utilizado para concatenar conteúdos de vários arquivos em apenas um. – Concatenando conteúdo de arquivo: Usando o comando echo para direcionar texto para os arquivos. • fulano@pc01:~$ echo one >part1• fulano@pc01:~$ echo one >part1 fulano@pc01:~$ echo two >part2 fulano@pc01:~$ echo three >part3 fulano@pc01:~$ cat part1 texto um fulano@pc01:~$ cat part2 texto dois fulano@pc01:~$ cat part3 texto três 59 Conteúdo de Arquivo • Comando cat – Pode ser utilizado para concatenar conteúdos de vários arquivos em apenas um. – Concatenando conteúdo de arquivo: Comando cat reúne o conteúdo de cada arquivo no arquivo tudoJunto. • fulano@pc01:~$ cat parte1 parte2 parte3• fulano@pc01:~$ cat parte1 parte2 parte3 texto um texto dois texto três fulano@pc01:~$ cat parte1 parte2 parte3 > tudoJunto fulano@pc01:~$ cat tudoJunto texto um texto dois texto três 60 Conteúdo de Arquivo • Comando cat – Também é possível criar um arquivo e adicionar texto ao mesmo através do comando cat. – Exemplo • fulano@pc01:~$ cat > texto.txt Linhaum. Linha dois.Linha dois. Última linha. – Após o comando cat o usuário pode digitar quantas linhas desejar teclando ENTER ao final de cada linha. Pressionando CTRL+D, após a última linha, finaliza a entrada de texto no arquivo. CTRL+D envia um sinal de End of File, que faz com que o comando cat finalize. 61 Conteúdo de Arquivo • Comando cat – Utilizando os sinais texto.txt texto.txt arq02.txt • fulano@pc01:~$ cat arq02.txt • Texto contido no arquivo 01 para ser copiado. – Neste exemplo a palavra “termina” substitui “CTRL+D” para finalizar a entrada de texto no arquivo. 63 Conteúdo de Arquivo • Comandotac – Semelhante ao cat, mas mostra o conteúdo dos arquivos de trás para frente. – Exemplo • fulano@pc01:~$ tac texto.txt Última linha Linha dois. Linha um. 64 Conteúdo de Arquivo • Comando more ou less – Permite a visualização quando o texto ocupa mais de uma tela no terminal. Teclando ESPAÇO o conteúdo é apresentado página por página e ainda com a tecla ENTER linha a linha. A tecla q é utilizada para sair. – Exemplo– Exemplo • fulano@pc01:~$ more /etc/sysctl.conf • fulano@pc01:~$ less /etc/kerneloops.conf • fulano@pc01:~$ man find | more 65 Conteúdo de Arquivo • Comando strings – Apresenta texto ASCII legível encontrado em arquivos binários. – Exemplo • fulano@pc01:~$ strings /bin/ls • /lib/ld-linux.so.2• /lib/ld-linux.so.2 librt.so.1 __gmon_start__ _Jv_RegisterClasses clock_gettime libacl.so.1 ... – Mostra os textos ASCII encontrados no arquivo binário do comando ls. 66 Exercícios • 1. Visualize as quatro primeiras linhas do arquivo /etc/services. • 2. Mostre a última linha do arquivo /etc/passwd • 3. Use o comando cat para criar um arquivo contendo 5 linhas chamado linhas.txt. • 4. Use o comando cp para fazer uma cópia do arquivo linhas.txt do exercício anterior com o nome linhasCopia.txt. • 5. Use o comando cat para fazer uma cópia do arquivo linhas.txt com o nome linhasCat.txt. • 6. Visualize o conteúdo do arquivo linhasCat.txt em ordem inversa (da última para primeira linha). • 7. Utilize o comando more para apresentar o conteúdo do arquivo /etc/services. • 8. Mostre os caracteres legíveis do comando (arquivo executável) /usr/bin/passwd. • 9. Abra duas janelas do terminal (ou abas) e certifique-se que você está no mesmo diretório em ambas. Digite “echo esta é a primeira linha > arq.txt” no primeiro terminal (sem as aspas), em seguida,” em seguida digite “tail –f arq.txt” no segundo terminal. Agora volte para o primeiro terminal e digite “echo Esta é outra linha >> arq.txt” (observe os símbolos >>), verifique se o tail -f no segundo terminal mostra ambas as linhas. Pare o tail -f com Ctrl+C. 10. Use o comando cat para criar um arquivo chamado arq.txt que contém o conteúdo de arq.txt seguido pelo conteúdo do arquivo /etc/passwd. • 11. Use o comando cat para criar um arquivo chamado arq.txt que contém o conteúdo de /etc/passwd seguido do conteúdo arq.txt. 67 Redirecionamento • Uma das vantagens da linha de comando Linux é o redirecionamento de entrada e saída. • Este recurso redireciona a saída padrão de um • Este recurso redireciona a saída padrão de um programa/comando/script para algum dispositivo ou arquivo ao invés do dispositivo de saída padrão (tela). Quando é usado com arquivos, este redirecionamento cria ou substitui o conteúdo do arquivo. 68 Redirecionamento • Por padrão, a entrada do Shell é o teclado, a saída, a tela, e os erros são exibidos na tela também. • Entrada de dados: representada por stdin (0);• Entrada de dados: representada por stdin (0); • Saída de dados: representada por stdout (1); • Saída de erros: representada por stderr (2); 69 Redirecionamento • Shell bash • Streams: stdin, stdout, and stderr – Stream é uma abstração para controle do fluxo de dados de entrada e saída.dados de entrada e saída. – stdin (stream 0) recebe dados de entrada, dados de saída são enviados para stdout (stream 1) e mensagens de erro vão para stderr (stream 2) 70 Redirecionamento • stdin – Geralmente associado ao teclado. • stdout – Envia dados para o vídeo. • stderr• stderr – Envia dados para o vídeo. 71 Redirecionamento 72 Redirecionamento • Redirecionando dados para saída 1> – Use o sinal “maior que” >. A notação > é a mesma que 1> (stdout referenciado como stream 1). – fulano@pc01:~$ echo Hoje está chovendo. Hoje está chovendo. fulano@pc01:~$ echo Hoje está chovendo. > tempo.txtfulano@pc01:~$ echo Hoje está chovendo. > tempo.txt fulano@pc01:~$ cat tempo.txt Hoje está chovendo. Quando Shell encontra o sinal de > o conteúdo de file é apagado. 73 Redirecionamento • Redirecionando dados para saída 1> – O arquivo (file) é sempre apagado quando o Shell encontra o >. Porém isto acontece antes da execução do comando (argumento 0), que abaixo é “zcho”. Ou seja, o arquivo “tempo.txt” é apagado antes de verificar se “zecho” é um comando válido. – fulano@pc01:~$ cat tempo.txt Hoje está chovendo. Hoje está chovendo. fulano@pc01:~$ zcho Hoje está chovendo. > tempo.txt bash: zcho: command not found fulano@pc01:~$ cat tempo.txt 74 Redirecionamento • Redirecionando dados para saída 1> – A ação de apagar o conteúdo anterior do arquivo (file) pode ser prevenida. Use a opção noclobber. – fulano@pc01:~$ cat tempo.txt Hoje está chovendo. fulano@pc01:~$ set -o noclobber fulano@pc01:~$ echo Hoje está chovendo. > tempo.txtfulano@pc01:~$ echo Hoje está chovendo. > tempo.txt -bash: tempo.txt: cannot overwrite existing file fulano@pc01:~$ set +o noclobber – Neste caso o arquivo tempo não foi modificado. 75 Redirecionamento • Acrescentando dados ao final de arquivo – O sinal >> redireciona os dados para o final do arquivo especificado. – fulano@pc01:~$ cat tempo.txt fulano@pc01:~$ echo Hoje está chovendo. > tempo.txt fulano@pc01:~$ cat tempo.txt Hoje está chovendo. fulano@pc01:~$ echo Mas ontem não choveu. >> tempo.txtfulano@pc01:~$ echo Mas ontem não choveu. >> tempo.txt fulano@pc01:~$ cat tempo.txt Hoje está chovendo. Mas ontem não choveu. – Os dados foram acrescentados ao final do arquivo e o conteúdo anterior foi mantido. 76 Redirecionamento • Redirecionando erros 2> – Útil para que os erros não apareçam na tela. – Jogando fora os erros: – fulano@pc01:~$ find / > allfiles.txt 2> /dev/null – fulano@pc01:~$ cat tempo.txt Hoje está chovendo.Hoje está chovendo. fulano@pc01:~$ set -o noclobber fulano@pc01:~$ echo Hoje está chovendo. > tempo.txt -bash: tempo.txt: cannot overwrite existing file fulano@pc01:~$ set +o noclobber – Neste caso o arquivo tempo.txt não foi modificado. 77 Redirecionamento • Redirecionando stdout e stderr para um mesmo arquivo 2>&1 – fulano@pc01:~$ find / > todosArquivos_e_erros.txt 2>&1 • Ordem dos redirecionamentos é importante• Ordem dos redirecionamentos é importante – fulano@pc01:~$ ls > listadir 2>&1 – fulano@pc01:~$ ls > 2>&1 > listadir – OBS.: No segundo comando o stderr não será direcionado para o arquivo listadir. 78 Redirecionamento • Enviando dados para um comando: > texto.txt Terceira linha. Quarta linha. acabou fulano@pc01:~$ cat texto.txt Uma linha, outra linha. Terceira linha. Quarta linha. 80 Marcador indicando o final do bloco Pipe | • Envia a saída de um comando para a entrada do próximo comando para continuidade do processamento. • Os dados enviados são processados pelo • Os dados enviados são processados pelo próximo comando que mostrará o resultado do processamento. 81 Pipe • Este comando faz a listagem longa de arquivos que é enviado ao comando `more' (que tem a função de efetuar uma pausa a cada 25 linhas do arquivo). – fulano@pc01:~$ ls -la | more – fulano@pc01:~$ echo Victor | base64 VmljdG9yCg== • OBS.: Comando base64 codifica um texto conforme descrito na RFC 3548 82 Pipe • Diferença entre o "|" e o ">“ • A principal diferença entre o "|" e o ">",é que o Pipe envolve processamento entre comandos, ou seja, a saída de um comando é comandos, ou seja, a saída de um comando é enviado a entrada do próximo e o ">“ redireciona a saída de um comando para um arquivo/dispositivo. 83 Filtros • Comando grep: Um uso muito comum é utilizar este comando para filtrar linhas em arquivos. – fulano@pc01:~$ cat tennis.txt Justine Henin, BEL Serena Williams, usa Serena Williams, usa Venus Williams, USA – fulano@pc01:~$ cat tennis.txt | grep Williams Serena Williams, usa Venus Williams, USA – fulano@pc01:~$ grep Williams tennis.txt Serena Williams, usa Venus Williams, USA 84 Filtros • Comando grep: Filtro com “case sensitive”, opção -i. – fulano@pc01:~$ cat tennis.txt Justine Henin, BEL Serena Williams, usa Venus Williams, USAVenus Williams, USA – fulano@pc01:~$ grep -i usa tennis.txt Serena Williams, usa – fulano@pc01:~$ ps aux | grep -i network OBS.: O comando ”ps aux” exibe todos os processos em execução. O operador | redireciona os resultados do comando ”os” para comando ”grep”, que filtra as ocorrências de “network” do resultado. O parâmetro-i, faz com que o comando que ignore se as letras estão em maiúsculas/minúsculas. 85 Filtros • Comando grep: Filtro com opção –v para ignorar o termo especificado. – fulano@pc01:~$ cat tennis.txt Justine Henin, BEL Serena Williams, usa Serena Williams, usa Venus Williams, USA – fulano@pc01:~$ grep -v BEL tennis.txt Serena Williams, usa Venus Williams, USA • Combinando opções “v” e “i” – fulano@pc01:~$ grep –vi usa tennis.txt Justine Henin, BEL 86 Filtros • Comando cut: Extrai uma parte do texto selecionando por colunas. – fulano@pc01:~$ cut –c3 tennis.txt s r n – fulano@pc01:~$ cut –c1-3 tennis.txt – fulano@pc01:~$ cut –c1-3 tennis.txt Jus Ser Ven • Opções: – “c3” Seleciona o terceiro caractere de cada linha do arquivo. – “c1-3” Seleciona o intervalo entre o primeiro e terceiro caractere de cada linha do arquivo. 87 Filtros • Comando cut: Parâmetros “d” e “f”. “f” indica qual campo deve ser extraído enquanto que “d” especifica qual é o delimitador entre os campos. por colunas. – fulano@pc01:~$ cut –d” ” –f2 tennis.txt Henin, Williams,Williams, Williams, – fulano@pc01:~$ grep “/bin/bash” | cut –d”:” -f1-3,5,7 root:x:0:root:bin/bash fulano:x:1000:alunos,,,:/bin/bash • Opções: – “ d’ ‘ e f2 ” Divide cada linha do arquivo em várias colunas sepadas por e seleciona o campo da segunda coluna em cada linha. – “d’:’ e f1-3,5,7” Divide as colunas por “:” e seleciona os campos de 1 até 3 e ainda o quinto e sétimo campo de cada linha. grep retorna as linhas com “/bin/bash”. 88 Filtros • Comando wc: Conta linhas, palavras e caracteres em um arquivo. • fulano@pc01 :~$ wc tennis.txt 3 9 62 tennis.txt • fulano@pc01 :~$ wc -l tennis.txt• fulano@pc01 :~$ wc -l tennis.txt 3 tennis.txt • fulano@pc01 :~$ wc -w tennis.txt 9 tennis.txt • fulano@pc01 :~$ wc -c tennis.txt 62 tennis.txt 89 Filtros • Comando sort: Apresenta conteúdo do arquivo em ordem específica. • fulano@pc01 :~$ cat ordem.txt carro zebra automovelautomovel • fulano@pc01 :~$ sort ordem.txt automovel carro zebra 90 Filtros • Comando sort: Opção de ordenação por coluna “-k” específica. • fulano@pc01 :~$ cat tennis.txt Justine Henin, BEL Serena Williams, usa Venus Williams, USAVenus Williams, USA Andre Agassi, EUA • fulano@pc01 :~$ sort –k3 tennis.txt Justine Henin, BEL Andre Agassi, EUA Serena Williams, usa Venus Williams, USA 91 Filtros • Comando uniq: Remove informações duplicadas em um arquivo. • Opções: – c : exibe o número de ocorrências de cada linha do arquivo. – d : exibe apenas as linhas com mais de uma ocorrência onde cada linha é mostrada apenas uma vez.linha é mostrada apenas uma vez. – D : exibe todas as linhas com mais de uma ocorrência. Se uma determinada linha possui duas ocorrências, ela é exibida duas vezes. – i : ignora a diferença entre letras maiúsculas e letras minúsculas. – u : exibe apenas as linhas que possuem uma única ocorrência. Fonte: http://www.uniriotec.br/~morganna/guia/uniq.html 92 Filtros • Comando uniq. • fulano@pc01 :~$ cat teste.txt aaaa aaaa AAAA bbb bbbbbbbbbb cccc CCCC • fulano@pc01 :~$ uniq teste .txt aaaa AAAA bbb bbbbb cccc CCCC 93 Filtros • Comando comm: Compara conteúdo de streams ou arquivos separando em colunas. Coluna 1: Somente linhas do arquivo 1, Coluna 2: Somente linhas no arquivo 2 e Coluna 3: Linhas em ambos os arquivos. • fulano@pc01 :~$ cat lista01.txt automovel carro zebra • fulano@pc01 :~$ cat lista02.txt• fulano@pc01 :~$ cat lista02.txt automovel casa bicicleta • fulano@pc01 :~$ comm lista01.txt lista02.txt automovel carro zebra casa bicicleta 94 Filtros • Comando od: Apresenta o conteúdo do arquivo em hexadecimal ou octal. • fulano@pc01 :~$ cat > texto.txt abcdefg 1234567 • Octal fulano@pc01 :~$ od -b texto.txt 0000000 61 62 63 64 65 66 67 0a 31 32 33 34 35 36 37 0a0000000 61 62 63 64 65 66 67 0a 31 32 33 34 35 36 37 0a 0000020 • Hexadecimal fulano@pc01 :~$ od -t x1 texto.txt 0000000 141 142 143 144 145 146 147 012 061 062 063 064 065 066 067 012 0000020 • ascii fulano@pc01 :~$ od -c texto.txt 0000000 a b c d e f g \n 1 2 3 4 5 6 7 \n 0000020 95 Filtros • Comando sed: stream editor, dado um stream de entrada, o comando sed modificar o stream por meio de expressões regulares. • Exemplo 1: Substituindo os números do stream originado no comando echo. – fulano@pc01 :~$ echo dir7 | sed 's/7/45/'– fulano@pc01 :~$ echo dir7 | sed 's/7/45/' dir45 fulano@pc01 :~$ echo dir7 | sed 's/dir/diretorio/' diretorio7 • OBS.: Pesquise sobre expressões regulares (regex) caso necessite de substituições mais complexas. 96 Filtros • Comando sed: stream editor • Exemplo 2: Adicione g (global) para substituir todas as ocorrências da string na linha. No exemplo seguinte substitui ocorrências de ‘dir’ por ‘diretorio’.seguinte substitui ocorrências de ‘dir’ por ‘diretorio’. – fulano@pc01 :~$ echo dir5 dir7 | sed 's/dir/diretorio/' diretorio5 dir7 – fulano@pc01 :~$ echo dir5 dir7 | sed 's/dir/diretorio/g' diretorio5 diretorio7 97 Exemplos de Redirecionamento PIPE • who | wc – Quantos usuários estão logados no sistema ? • fulano@pc01 :~$ who | wc –l • who | cut | sort – Lista ordenada de usuários logados.– Lista ordenada de usuários logados. • fulano@pc01 :~$ who | cut -d' ' -f1 | sort – Lista ordenada de usuários logados, mas sem repetir nomes. • fulano@pc01 :~$ who | cut -d' ' -f1 | sort | uniq • grep | cut – Lista de contas de usuários “bash” no computador. • fulano@pc01 :~$ grep bash /etc/passwd | cut -d: -f1 98 Exercícios • 1. Salvar uma lista ORDENADA de usuários bash em usuarioBash.txt. • 2. Salvar uma lista ORDENADA de usuários logados no sistema no arquivo usuariosLogados.txt. • 3. Crie uma lista de todos os arquivos em /etc que contenham a string "conf" no nome do arquivo. • 4. Crie uma lista ORDENADA de todos os arquivos em /etc que contenham a string "conf" no • 4. Crie uma lista ORDENADA de todos os arquivos em /etc que contenham a string "conf" no nome do arquivo e que não faça distinção entre letras maiúsculas e minúsculas. • 5. Remova todos os carateres de pontuação, símbolos e etc de um texto. 99 Ferramentas Básicas • Comando find: Localiza arquivos em um sistema Unix ou Linux. Procura por qualquer arquivo correspondente aos critérios de pesquisa fornecidos. Você pode procurar os arquivos por fornecidos. Você pode procurar os arquivos por nome, proprietário, grupo, tipo, permissões, data e outros critérios. A busca é recursiva em que ele irá procurar todos os subdiretórios também. Mostra a localização do arquivo. • OBS.: Pode demorar muito enquanto pesquisa. 100 Ferramentas Básicas • Comando find • Exemplos: • Pesquisa os arquivos de nome “texto01.txt” a partir da raiz do sistema. – fulano@pc01 :~$ find / -nametexto01.txt– fulano@pc01 :~$ find / -name texto01.txt • Pesquisa por tipo: Diretório opção “-type d” – fulano@pc01 :~$ find ~/Downloads -type d -name “p*” • Com redirecionamento: Envia saída para arquivo e descarta os erros em /dev/null – fulano@pc01 :~$ find / -name “*.pdf” > lista.txt 2> /dev/null 101 Ferramentas Básicas • Comando find • Exemplos: • Pesquisa os arquivos criados mais recentemente que “texto01.txt” no diretório atual. – fulano@pc01 :~$ find . -newer texto01.txt– fulano@pc01 :~$ find . -newer texto01.txt • Faz uma cópia de todo arquivo “.doc” encontrado para o diretório “~/backup” por meio do comando “cp”. – fulano@pc01 :~$ find ~/Downloads -name “*.doc” –exec cp {} ~/backup/ \; 102 Ferramentas Básicas • Comando locate: Também localiza arquivos, mas baseado em um índice (uma lista). Não faz uma pesquisa real no sistema de arquivos. • É mais rápido que o find, por causa do índice • É mais rápido que o find, por causa do índice mas o mesmo pode estar desatualizado. • Utilize o comando updatedb para atualizar o índice. 103 Ferramentas Básicas • Comando locate • Exemplo: • fulano@pc01 :~$ locate texto01.txt• fulano@pc01 :~$ locate texto01.txt • OBS.: A maioria das distribuições executa o updatedb automaticamente um vez ao dia. 104 Ferramentas Básicas • Comando date: Pode exibir a data, hora, fuso horário e etc. • fulano@pc01 :~$ date – Qua Mar 25 14:01:23 BRT 2015– Qua Mar 25 14:01:23 BRT 2015 • O formato de exibição da data pode ser personalizado. Veja manual (man) para mais opções. – fulano@pc01 :~$ date +'%A %d-%m-%Y' quarta 25-03-2015 • Quantidade de segundos desde 01/01/1970. – fulano@pc01 :~$ date +%s 142730018 105 Ferramentas Básicas • Comando cal: Apresenta um calendário. • Exemplos: – fulano@pc01 :~$ cal • É possível visualizar datas do passado e futuro.• É possível visualizar datas do passado e futuro. – fulano@pc01 :~$ cal 7 2015 106 Ferramentas Básicas • Comando sleep: Aplica uma pausa durante um tempo especificado. Mais útil quando utilizado em scripts. • Opções: • Opções: – s segundos (the default) – m minutos. – h horas. – d dias. • Exemplos: – fulano@pc01 :~$ sleep 5 – fulano@pc01 :~$ sleep 1m 107 Ferramentas Básicas • Comando time: Verifica o tempo de execução de um comando(programa) passado como argumento. Quando o comando finaliza, o comando time escreve uma mensagem dando estatísticas sobre a execução. Estas estatísticas consistem em: – Tempo real decorrido entre a chamada e finalização;– Tempo real decorrido entre a chamada e finalização; – Tempo de CPU do usuário; – Tempo de CPU do sistema; • Verifica o tempo de execução do comando “df” • fulano@pc01 :~$ time df real 0m2.368s user 0m0.847s sys 0m0.539s 108 Ferramentas Básicas • Comandos gzip e gunzip: Os comandos gzip e gunzip comprimem e descomprimem arquivos especificados. • Exemplo: Compactando – fulano@pc01 :~$ ls -lh texto.txt -rw-rw-r-- 1 fulano alunos 6.4M Apr 17 13:11 texto.txt-rw-rw-r-- 1 fulano alunos 6.4M Apr 17 13:11 texto.txt fulano@pc01 :~$ gzip texto.txt fulano@pc01 :~$ ls -lh texto.txt.gz -rw-rw-r-- 1 fulano alunos 760K Apr 17 13:11 texto.txt.gz • Exemplo: Descompactando – fulano@pc01 :~$ gunzip texto.txt.gz fulano@pc01 :~$ ls -lh texto.txt -rw-rw-r-- 1 fulano alunos 6.4M Apr 17 13:11 texto.txt 109 Ferramentas Básicas • Comandos zcat e zmore: Os arquivos de texto que são compactados com gzip podem ser vistos com zcat e zmore. • fulano@pc01 :~$ zcat texto.txt • fulano@pc01 :~$ zmore texto.txt 110