[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
redirecionamento para intermediarios
From: |
Ivan lopes |
Subject: |
redirecionamento para intermediarios |
Date: |
Mon, 1 Oct 2007 20:51:32 -0300 |
vamos complicar um pouco ...
$ ls -d /usr /usa
ls: /usa: No such file or directory
/usr/
repare que tivemos dois tipos de saidas, uma
conduzida pelo stdout, outra pelo stderr
vejamos:
# FD 2 ligado a arquivo
$ ls -d /usr /usa 2> a.txt
/usr/
$ cat a.txt
ls: /usa: No such file or directory
# FD 1 ligado a arquivo
$ ls -d /usr /usa 1> a.txt
ls: /usa: No such file or directory
$ cat a.txt
/usr/
vamos fazer copias ... isso mesmo xerocar ... na
verdade nem uma coisa nem outra, sao copias de atribuicoes
...
# FD 2 vai funcionar igual ao FD 1
# FD 2 recebe as atribuicoes de FD 1 ...
$ ls -d /usr /usa 2>&1 | tee a.txt
ls: /usa: No such file or directory
/usr/
# repare que tanto FD 1 quanto FD 2 passaram pelo pipe.
$ cat a.txt
ls: /usa: No such file or directory
/usr/
... veja a diferenca agora ...
$ ls -d /usr /usa | tee a.txt
ls: /usa: No such file or directory
/usr/
# domente FD 1 passou pelo pipe.
$ cat a.txt
/usr/
# FD 1 vai funcionar igual ao FD 2
# FD 1 recebe as atribuicoes de FD 2 ...
$ ls -d /usr /usa 1>&2 | tee a.txt
ls: /usa: No such file or directory
/usr/
# tanto Fd 1 quanto FD 2 foram barrados ...
$ cat a.txt
vazio zzzz
# Agora vou fechar FD1
$ ls -d /usr /usa >&-
ls: /usa: No such file or directory
ls: write error: Bad file descriptor
# Fechando FD1 e FD2
$ ls -d /usr /usa >&- 2>&-
repare que o erro encadeado de FD1 foi para FD2.
# Fechando FD2
$ ls -d /usr /usa 2>&-
/usr/
# FD2 com as caracteristicas de FD1
$ ls -d /usa /usr 2>&1
ls: /usa: No such file or directory
/usr/
# FD2 com as caracteristicas de FD1 e
# mostre apenas os erros.
$ ls -d /usa /usr 2>&1 1>&-
ls: /usa: No such file or directory
ls: write error: Bad file descriptor
# FD2 com as caracteristicas de FD1,
# mostre apenas os erros e troque e por a.
$ ls -d /usa /usr 2>&1 1>&- | tr e a
ls: /usa: No such fila or diractory
ls: writa arror: Bad fila dascriptor
==================================
= Esqueca tudo e decore o Macete =
= MACETE =
* O FD 2 nao passa o pipe.
* '<-' sinal de recebe.
==================================
a) Ninguem pode atravessar o pipe ...
FD1 <- FD2 # FD1 recebe FD2, isto eh, FD1 nao
# atravesse o pipe, igual ao FD2.
$ ls -d /usa /usr 1>&2 | sed 's/^/passou-> /'
ls: /usa: No such file or directory
/usr/
b) Somente o erro pode atravessar o pipe.
FD3 <- FD2 # FD3 nao atravessa
FD2 <- FD1 # FD2 atravessa
FD1 <- FD3 # FD1 nao atravessa, pq FD3 tb nao.
FD3 trancado.
$ ls -d /usa /usr 3>&2 2>&1 1>&3 3>&- | sed 's/^/passou-> /'
passou-> ls: /usa: No such file or directory
/usr/
c) somente o stdout pode atravessar o pipe.
$ ls -d /usa /usr | sed 's/^/passou-> /'
ls: /usa: No such file or directory
passou-> /usr/
e) Ninguem pode atravessar o pipe ... ou ser impresso
FD1 <- FD2
FD1 trancado
FD2 trancado
ls -d /usa /usr 1>&2 1>&- 2>&- | sed 's/^/passou-> /'
--
[ ]'s
Ivan Carlos Da Silva Lopes
Engenheiro Eletronico e Computacao
UFRJ
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- redirecionamento para intermediarios,
Ivan lopes <=