Objetivos 
● Redirecionamento de entrada e saída 
(continuação); 
● Links simbólicos x hard links; 
● Documentação no GNU/Linux; 
● Comandos de busca no sistema de arquivos; 
● Comandos para manipulação de arquivos de 
texto; 
● Introdução a metacaracteres;
Introdução ao Linux
Introdução ao Linux 
Pipe 
# ls / | more 
# ls / | less 
# ls / | xargs -n 2 
# ls / | xargs -n 3 
# echo “linux:macos:freebsd:openbsd” > 
/tmp/teste.txt 
# cat /tmp/teste.txt | xargs -d: -n 2
Introdução ao Linux 
Pipe 
# echo 1 2 3 4 | xargs -n 2 
# find /tmp -name "*.tmp" | xargs rm 
# find /tmp -name "*.tmp" -print0 | xargs -0 rm 
# ls / | xargs -n 4 > /tmp/teste3.txt 
# cat /tmp/teste3.txt
Introdução ao Linux 
Pipe 
# ls / | tee /tmp/teste4.txt 
# cat /tmp/teste4.txt 
# echo “egeekacademy” | tr [a-z] [A-Z]
Introdução ao Linux 
Pipe 
# cat /etc/passwd | grep root 
# cat /etc/passwd | grep -v root 
# grep -v root /etc/passwd | tee /root/root.txt
Introdução ao Linux 
Links simbólicos (sym links) 
● Pode apontar para um arquivo ou diretório em qualquer lugar: 
● Funciona em vários sistemas de arquivos; 
● Funciona para arquivos ou diretórios que estão em outras 
partições ou discos; 
● Funciona em sistemas de arquivos remotos: NFS; 
● Ocupa pouco espaço; 
● Não funciona se o arquivo original for removido (link quebrado);
Introdução ao Linux 
Links simbólicos (sym links) 
# cp /etc/passwd /tmp 
# cd /tmp 
# ln -s passwd link.simbolico 
# cp passwd passwd2 
# stat passwd 
# stat link.simbolico 
# ls -i passwd 
# ls -i link.simbolico
Introdução ao Linux 
Hard Link 
● Não é um link; 
● Aponta para o mesmo endereço físico (conhecido como inode); 
● Continua funcionando caso o “arquivo original” seja removido; 
● Possui as seguintes limitações: 
– o “arquivo original” e o hard link devem estar localizados no 
mesmo sistema de arquivos; 
– Não pode apontar para diretórios;
Introdução ao Linux 
Hard Link 
# cd /tmp 
# ln passwd2 link.hard 
# stat passwd2 
# stat link.hard 
# ls -i passwd2 
# ls -i link.hard
Introdução ao Linux
Introdução ao Linux 
Seções do man: 
● man 1 – Programas e executáveis disponíveis ao usuário; 
● man 2 – Rotinas de sistema Unix e C; 
● man 3 – Rotinas de bibliotecas da linguagem C; 
● man 4 - Arquivos especiais (dispositivos em /dev); 
● man 5 - Arquivos de configuração e convenções; 
● man 6 – Games; 
● man 7 – Diversos (macros textuais, por exemplo, regex); 
● man 8 - Comandos administrativos; 
● man 9 - Rotinas de Kernel.
Introdução ao Linux 
Comando man 
# man ls 
# man 1 passwd 
# man 5 passwd 
# man 7 regex 
# man -L pt_BR ls 
# man 7 undocumented
Introdução ao Linux 
Comando apropos / catman / whatis 
# apropos copy 
# man -k copy 
# catman 
# whatis ls
Introdução ao Linux 
Comando info / whereis / which 
# info ls 
# whereis passwd 
# which ls
Introdução ao Linux 
Comandos de localização 
# updatedb 
# locate passwd
Introdução ao Linux 
Comandos de localização 
# ls -lh /etc/passwd 
# find / -iname passwd 
# find / -perm 777 
# find /root -type f -perm 777 
# find / -size +10M 
# find / -perm 600 -exec ls -l {} ; 
# find / -perm 600 -print0 | xargs -0 ls -l
Introdução ao Linux 
Comandos de localização 
# find / -type f -empty 
# find / -type d -empty 
# find / -mtime 50 
# find / -mtime +50 -mtime -100 
# find / -atime 50 
# find . -type f -atime -1 -exec ls -l {} ; 
$ find ~ -cmin -60 
# find / -name "*.txt" -exec chmod -x {} ";"
Introdução ao Linux 
Comandos de localização 
# ls -l teste.txt 
# find / -perm -4000 
# find / -perm 4000 
# find / -maxdepth 2 -name passwd 
# find . -type d -empty -exec rmdir {} ;
Introdução ao Linux 
Encerrando sessão 
# logout 
# exit
Introdução ao Linux 
Desligando e reiniciando a máquina 
# halt 
# shutdown -h 10 
# shutdown -c 
# shutdown -r 10 
# shutdown -r now 
# reboot
Introdução ao Linux 
join 
$ cat hardwares.txt 
1 Processador Core i7 
2 Memória RAM 8GB Kingston 
3 HD Seagate Sata II 500 GB 
$ cat precos.txt 
1 R$ 1000,00 
2 R$ 200,00 
3 R$ 250,00 
$ join hardwares.txt precos.txt > tabela.txt 
$ cat tabela.txt
Introdução ao Linux 
join 
$ cat arq1.txt 
1 x1 1 
2 y1 2 
3 z1 3 
$ cat arq2.txt 
1 x2 2 
2 y2 4 
3 z2 6 
$ join -1 1 -2 1 -o '1.2 2.3' arq1.txt arq2.txt
Introdução ao Linux 
fmt 
$ fmt -w 33 tabela.txt 
uniq 
$ cat frutas.txt 
Maçã 
Banana 
Laranja 
Maracujá 
Laranja 
$ cat frutas.txt | sort | uniq 
$ cat frutas.txt | sort | uniq -d
Introdução ao Linux 
pr 
Divide o arquivo para impressão. O padrão é 66 linhas 
por 72 caracteres de largura. 
$ cat frutas.txt 
$ cat verduras.txt 
$ cat -n frutas.txt | head 
$ nl verduras.txt | pr -m – frutas.txt | head 
$ cat /etc/passwd > /tmp/teste.txt 
$ cat /etc/passwd >> /tmp/teste.txt 
$ cat -n /tmp/teste.txt 
$ cat /tmp/teste.txt | pr -l 47 -w 72
Introdução ao Linux 
paste 
$ paste frutas.txt verduras.txt 
uniq 
$ sort frutas.txt | uniq | nl 
tr 
$ echo “Frase com espaços” | tr ' ' '$' 
$ echo “Frase com espaços” | tr ' ' 't' 
$ cat verduras.txt | tr ' ' 'n'
Introdução ao Linux 
dd e du 
# dd if=/dev/random bs=2 count=6 | base64 - > 
/tmp/senhas.txt 
# dd if=/dev/sda1 of=/dev/sdb2 
# dd if=/dev/zero of=/tmp/arquivo.iso bs=1M count=10 
# du -h /tmp/arquivo.iso 
# du -hs /home/leo
Introdução ao Linux 
split 
$ split -b 1MB /tmp/arquivo.iso 
$ ls -lh /tmp 
$ cat /etc/passwd > /tmp/teste1.txt 
$ split -l 2 /tmp/teste1.txt 
$ ls -lh /tmp
Introdução ao Linux 
expand e unexpand 
$ nano url.txt 
<ESTAÇO> egeeked <ESTAÇO> .com <TAB> .br 
$ cat url.txt 
$ expand -t1 url.txt 
$ unexpand -a1 url.txt
Introdução ao Linux 
od | hexdump | xxd 
$ cat arq1.txt 
$ od -x arq1.txt 
$ od -xc arq1.txt 
$ hexdump arq1.txt 
$ hexdump -C arq1.txt
Introdução ao Linux 
od | hexdump | xxd 
$ echo “Teste” | hexdump -v -e '/1 “%02Xn”' 
$ xxd arq1.txt > arq2.txt 
$ cat arq2.txt 
$ xxd -r arq2.txt 
$ od -t x1 -An arq1.txt | tr -d 'n'
Introdução ao Linux 
Comandos sequenciais 
Executar 3 comandos em sequência independente do 
resultado de cada um: 
$ Comando 1 ; Comando 2 ; Comando 3 
Executar o próximo comando apenas se o anterior executar 
com sucesso: 
$ Comando 1 && Comando 2 && Comando 3 
Executar o próximo comando apenas se o anterior executar 
sem sucesso: 
$ Comando 1 || Comando 2 || Comando 3
Introdução ao Linux 
Comandos sequenciais – Exemplos 
$ ls arquivonaoexistente ; cat /etc/issue 
$ ls arquivonaoexistente && cat /etc/issue 
$ ls arquivonaoexistente || cat /etc/issue
Introdução ao Linux 
df 
$ df 
$ df -h 
$ df -T 
$ df -Th
Introdução ao Linux 
ls 
$ cat /etc/ld.so.conf 
$ ls -dl `cat /etc/ld.so.conf` 
$ ls -dl $(cat /etc/ld.so.conf) 
$ ls --color 
$ ls -a 
$ ls /dev/sd*
Introdução ao Linux 
ls 
$ ls /etc/host* 
$ ls /dev/s?? 
$ ls /dev/sd[abc] 
$ ls /dev/sda[!01]
Introdução ao Linux 
diff 
Arquivo Teste1.java 
1.public class Teste1 { 
2. 
3. public static void main(String args[]) { 
4. 
5. System.out.println("Hello World!"); 
6. 
7. } 
8. 
9.}
Introdução ao Linux 
diff 
Arquivo Teste2.java 
1.public class Teste2 { 
2. 
3. public static void main(String args[]) { 
4. 
5. System.out.println("Alo Mundo!"); 
6. 
7. } 
8. 
9.}
Introdução ao Linux 
diff 
$ diff Teste1.java Teste2.java 
1c1 
< public class Teste1 { 
--- 
> public class Teste2 { 
5c5 
< System.out.println("Hello World!"); 
--- 
> System.out.println("Alo Mundo!");
Introdução ao Linux 
sed 
# echo "O Windows é um sistema operacional muito seguro. O 
Windows é um sistema operacional multitarefa" | sed 
's/Windows/Linux/' 
# echo "O Windows é um sistema operacional muito seguro. O 
Windows é um sistema operacional multitarefa" | sed 
's/Windows/Linux/g'

Aula - Comandos Linux - Parte 2

  • 2.
    Objetivos ● Redirecionamentode entrada e saída (continuação); ● Links simbólicos x hard links; ● Documentação no GNU/Linux; ● Comandos de busca no sistema de arquivos; ● Comandos para manipulação de arquivos de texto; ● Introdução a metacaracteres;
  • 3.
  • 4.
    Introdução ao Linux Pipe # ls / | more # ls / | less # ls / | xargs -n 2 # ls / | xargs -n 3 # echo “linux:macos:freebsd:openbsd” > /tmp/teste.txt # cat /tmp/teste.txt | xargs -d: -n 2
  • 5.
    Introdução ao Linux Pipe # echo 1 2 3 4 | xargs -n 2 # find /tmp -name "*.tmp" | xargs rm # find /tmp -name "*.tmp" -print0 | xargs -0 rm # ls / | xargs -n 4 > /tmp/teste3.txt # cat /tmp/teste3.txt
  • 6.
    Introdução ao Linux Pipe # ls / | tee /tmp/teste4.txt # cat /tmp/teste4.txt # echo “egeekacademy” | tr [a-z] [A-Z]
  • 7.
    Introdução ao Linux Pipe # cat /etc/passwd | grep root # cat /etc/passwd | grep -v root # grep -v root /etc/passwd | tee /root/root.txt
  • 8.
    Introdução ao Linux Links simbólicos (sym links) ● Pode apontar para um arquivo ou diretório em qualquer lugar: ● Funciona em vários sistemas de arquivos; ● Funciona para arquivos ou diretórios que estão em outras partições ou discos; ● Funciona em sistemas de arquivos remotos: NFS; ● Ocupa pouco espaço; ● Não funciona se o arquivo original for removido (link quebrado);
  • 9.
    Introdução ao Linux Links simbólicos (sym links) # cp /etc/passwd /tmp # cd /tmp # ln -s passwd link.simbolico # cp passwd passwd2 # stat passwd # stat link.simbolico # ls -i passwd # ls -i link.simbolico
  • 10.
    Introdução ao Linux Hard Link ● Não é um link; ● Aponta para o mesmo endereço físico (conhecido como inode); ● Continua funcionando caso o “arquivo original” seja removido; ● Possui as seguintes limitações: – o “arquivo original” e o hard link devem estar localizados no mesmo sistema de arquivos; – Não pode apontar para diretórios;
  • 11.
    Introdução ao Linux Hard Link # cd /tmp # ln passwd2 link.hard # stat passwd2 # stat link.hard # ls -i passwd2 # ls -i link.hard
  • 12.
  • 13.
    Introdução ao Linux Seções do man: ● man 1 – Programas e executáveis disponíveis ao usuário; ● man 2 – Rotinas de sistema Unix e C; ● man 3 – Rotinas de bibliotecas da linguagem C; ● man 4 - Arquivos especiais (dispositivos em /dev); ● man 5 - Arquivos de configuração e convenções; ● man 6 – Games; ● man 7 – Diversos (macros textuais, por exemplo, regex); ● man 8 - Comandos administrativos; ● man 9 - Rotinas de Kernel.
  • 14.
    Introdução ao Linux Comando man # man ls # man 1 passwd # man 5 passwd # man 7 regex # man -L pt_BR ls # man 7 undocumented
  • 15.
    Introdução ao Linux Comando apropos / catman / whatis # apropos copy # man -k copy # catman # whatis ls
  • 16.
    Introdução ao Linux Comando info / whereis / which # info ls # whereis passwd # which ls
  • 17.
    Introdução ao Linux Comandos de localização # updatedb # locate passwd
  • 18.
    Introdução ao Linux Comandos de localização # ls -lh /etc/passwd # find / -iname passwd # find / -perm 777 # find /root -type f -perm 777 # find / -size +10M # find / -perm 600 -exec ls -l {} ; # find / -perm 600 -print0 | xargs -0 ls -l
  • 19.
    Introdução ao Linux Comandos de localização # find / -type f -empty # find / -type d -empty # find / -mtime 50 # find / -mtime +50 -mtime -100 # find / -atime 50 # find . -type f -atime -1 -exec ls -l {} ; $ find ~ -cmin -60 # find / -name "*.txt" -exec chmod -x {} ";"
  • 20.
    Introdução ao Linux Comandos de localização # ls -l teste.txt # find / -perm -4000 # find / -perm 4000 # find / -maxdepth 2 -name passwd # find . -type d -empty -exec rmdir {} ;
  • 21.
    Introdução ao Linux Encerrando sessão # logout # exit
  • 22.
    Introdução ao Linux Desligando e reiniciando a máquina # halt # shutdown -h 10 # shutdown -c # shutdown -r 10 # shutdown -r now # reboot
  • 23.
    Introdução ao Linux join $ cat hardwares.txt 1 Processador Core i7 2 Memória RAM 8GB Kingston 3 HD Seagate Sata II 500 GB $ cat precos.txt 1 R$ 1000,00 2 R$ 200,00 3 R$ 250,00 $ join hardwares.txt precos.txt > tabela.txt $ cat tabela.txt
  • 24.
    Introdução ao Linux join $ cat arq1.txt 1 x1 1 2 y1 2 3 z1 3 $ cat arq2.txt 1 x2 2 2 y2 4 3 z2 6 $ join -1 1 -2 1 -o '1.2 2.3' arq1.txt arq2.txt
  • 25.
    Introdução ao Linux fmt $ fmt -w 33 tabela.txt uniq $ cat frutas.txt Maçã Banana Laranja Maracujá Laranja $ cat frutas.txt | sort | uniq $ cat frutas.txt | sort | uniq -d
  • 26.
    Introdução ao Linux pr Divide o arquivo para impressão. O padrão é 66 linhas por 72 caracteres de largura. $ cat frutas.txt $ cat verduras.txt $ cat -n frutas.txt | head $ nl verduras.txt | pr -m – frutas.txt | head $ cat /etc/passwd > /tmp/teste.txt $ cat /etc/passwd >> /tmp/teste.txt $ cat -n /tmp/teste.txt $ cat /tmp/teste.txt | pr -l 47 -w 72
  • 27.
    Introdução ao Linux paste $ paste frutas.txt verduras.txt uniq $ sort frutas.txt | uniq | nl tr $ echo “Frase com espaços” | tr ' ' '$' $ echo “Frase com espaços” | tr ' ' 't' $ cat verduras.txt | tr ' ' 'n'
  • 28.
    Introdução ao Linux dd e du # dd if=/dev/random bs=2 count=6 | base64 - > /tmp/senhas.txt # dd if=/dev/sda1 of=/dev/sdb2 # dd if=/dev/zero of=/tmp/arquivo.iso bs=1M count=10 # du -h /tmp/arquivo.iso # du -hs /home/leo
  • 29.
    Introdução ao Linux split $ split -b 1MB /tmp/arquivo.iso $ ls -lh /tmp $ cat /etc/passwd > /tmp/teste1.txt $ split -l 2 /tmp/teste1.txt $ ls -lh /tmp
  • 30.
    Introdução ao Linux expand e unexpand $ nano url.txt <ESTAÇO> egeeked <ESTAÇO> .com <TAB> .br $ cat url.txt $ expand -t1 url.txt $ unexpand -a1 url.txt
  • 31.
    Introdução ao Linux od | hexdump | xxd $ cat arq1.txt $ od -x arq1.txt $ od -xc arq1.txt $ hexdump arq1.txt $ hexdump -C arq1.txt
  • 32.
    Introdução ao Linux od | hexdump | xxd $ echo “Teste” | hexdump -v -e '/1 “%02Xn”' $ xxd arq1.txt > arq2.txt $ cat arq2.txt $ xxd -r arq2.txt $ od -t x1 -An arq1.txt | tr -d 'n'
  • 33.
    Introdução ao Linux Comandos sequenciais Executar 3 comandos em sequência independente do resultado de cada um: $ Comando 1 ; Comando 2 ; Comando 3 Executar o próximo comando apenas se o anterior executar com sucesso: $ Comando 1 && Comando 2 && Comando 3 Executar o próximo comando apenas se o anterior executar sem sucesso: $ Comando 1 || Comando 2 || Comando 3
  • 34.
    Introdução ao Linux Comandos sequenciais – Exemplos $ ls arquivonaoexistente ; cat /etc/issue $ ls arquivonaoexistente && cat /etc/issue $ ls arquivonaoexistente || cat /etc/issue
  • 35.
    Introdução ao Linux df $ df $ df -h $ df -T $ df -Th
  • 36.
    Introdução ao Linux ls $ cat /etc/ld.so.conf $ ls -dl `cat /etc/ld.so.conf` $ ls -dl $(cat /etc/ld.so.conf) $ ls --color $ ls -a $ ls /dev/sd*
  • 37.
    Introdução ao Linux ls $ ls /etc/host* $ ls /dev/s?? $ ls /dev/sd[abc] $ ls /dev/sda[!01]
  • 38.
    Introdução ao Linux diff Arquivo Teste1.java 1.public class Teste1 { 2. 3. public static void main(String args[]) { 4. 5. System.out.println("Hello World!"); 6. 7. } 8. 9.}
  • 39.
    Introdução ao Linux diff Arquivo Teste2.java 1.public class Teste2 { 2. 3. public static void main(String args[]) { 4. 5. System.out.println("Alo Mundo!"); 6. 7. } 8. 9.}
  • 40.
    Introdução ao Linux diff $ diff Teste1.java Teste2.java 1c1 < public class Teste1 { --- > public class Teste2 { 5c5 < System.out.println("Hello World!"); --- > System.out.println("Alo Mundo!");
  • 41.
    Introdução ao Linux sed # echo "O Windows é um sistema operacional muito seguro. O Windows é um sistema operacional multitarefa" | sed 's/Windows/Linux/' # echo "O Windows é um sistema operacional muito seguro. O Windows é um sistema operacional multitarefa" | sed 's/Windows/Linux/g'