CI066 - Oficina de Programação
Notas de Aula # 06

Prof. Armando Luiz N. Delgado

1 Filtros e Pipelining

Referência básica: Capítulo 6, Seções 6.1, 6.5 e 6.6 da Apostila Linux Básico (1)

 
Alguns programas em UNIX são construídos para serem bastante úteis com pipelines. Tais programas, denominados FILTROS, lêem dados, executam alguma operação sobre eles, e então exibem o resultado da operação.

Um Filtro é um programa que lê de sua Entrada Padrão e escreve para sua Saída Padrão.

Muitas vezes, o caracter - (hífen) indica entrada ou saída padrão.

Exemplos

  1. Como obter a lista de usuários atualmente logados, indicando em quantas sessões cada um está participando?

    ci066@dupond:~who
    lwm01 pts/1 Dec 4 17:08 (enrolado.dinf:0.0)
    fao99 pts/4 Dec 4 16:22 (plic.dinf:0.0)
    mesr02 pts/6 Dec 4 18:05 (guardabelo.dinf:0.0)
    jms99 pts/5 Dec 4 17:34 (pestana.dinf:0.0)
    jo00 pts/9 Dec 4 16:15 (clayde.dinf:0.0)
    delgado pts/8 Dec 4 18:05 (ford.inf.ufpr.br)
    jo00 pts/13 Dec 4 16:13 (clayde.dinf:0.0)
    rc01 pts/15 Dec 4 16:49 (dorno.dinf:0.0)
    jms99 pts/17 Dec 4 16:50 (pestana.dinf:0.0)
    rtk01 pts/20 Dec 4 16:56 (igoo.dinf:0.0)
     
    ci066@dupond:~ 
    ci066@dupond:~who  | cut -c1-8  | sort  | uniq -c  | grep 2

  2. Como descobrir os usuários que estão executando emacs, mostrando o nome do usuário e a hora em que começou a usar o sistema?

    ci066@dupond:~w
    16:18:14 up 19 days, 22:28, 21 users, load average: 0.27, 0.17, 0.31
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    gst00 pts/5 choogabum.dinf:0 16:13 3:53 0.62s 0.01s ./tf
    jo00 pts/9 clayde.dinf:0.0 16:15 1:37 7.26s 0.03s emacs
    jo00 pts/13 clayde.dinf:0.0 16:13 3:50 0.02s 0.02s bash
    ci066 pts/7 seurat.inf.ufpr. 16:11 1.00 0.19s 0.17s pine
    jo00 pts/14 clayde.dinf:0.0 16:13 2:24 0.02s 0.02s emacs
    vp99 pts/3 jack.dinf:0.0 16:11 3:12 0.05s 0.02s more tmp
    fl01 pts/0 suporte3.bsi.com 12:52 11:36 0.69s 0.62s ./prog
    crzf99 pts/6 shelley.inf.ufpr 15:51 20:46 0.04s 0.04s -bash
    ....              
     
    ci066@dupond:~ 
    ci066@dupond:~w -h  | grep emacs  | cut -c1-8,36-40

  3. Quantos arquivos tem o diretório /usr/bin? Como fazer para efetuar a contagem e, AO MESMO TEMPO, produzir um arquivo com a lista de arquivos do diretório /usr/bin?

    ci066@dupond:~ls /usr/bin  | wc -l
              1506
    ci066@dupond:~ls /usr/bin  | tee ~/bin.lst  | wc -l
              1506
    ci066@dupond:~cat ~/bin.lst
    a2p
    a2ps
    aafire
    aainfo
    aalib-config
    aasavefont
    aatest
    abxtest
    ....

  4. Eu quero saber quem são os campeões de espaço ocupado em meus diretórios.

    ci066@dupond:~du ~  | sort -nr
    2444            /home/especial/ci066
    1096            /home/especial/ci066/.mozilla
    1080            /home/especial/ci066/.mozilla/default
    1076            /home/especial/ci066/.mozilla/default/mkc2ctou.slt
    492             /home/especial/ci066/.kde
    408             /home/especial/ci066/.kde/tmp-dupond
    272             /home/especial/ci066/LabNum3
    212             /home/especial/ci066/LabNum3/pub
    168             /home/especial/ci066/LabNum4
    ci066@dupond:~ 

  5. Se a versão de tar(1) em seu sistema é antiga e não aceita as opções de compactação -z ou -j, como fazer para compactar o resultado do tar(1)? Neste mesmo caso, como ler o conteúdo de um arquivo do tipo tar que está compactado?

    ci066@dupond:~tar -cvf - ~  | gzip -c  > bkp.tar.gz
    ...
    ci066@dupond:~bunzip2 -c bkp_02.tar.bz2  | tar -tvf -
    ...

Bibliografia

1
PET Informática.
Linux Básico.
UFPR, Outubro 2002.
URL http://www.inf.ufpr.br/nicolui/Docs/Livros/LinuxBasico/.



Armando Luiz Nicolini Delgado
2008-07-10