PDA

Visualizza la versione completa : "|" PIPE come funzionano?


bako
06-05-2006, 19:07
Salva gente,
devo implementare una shell per un esame, tra i requisit c'è limplementazione delle pipe ..
solo che non ho capito come funzionano
se do
who | wc
loutput di who va a wc che lo legge giusto?
e se do
who | wc | qualcosa altro
l'output dei primi 2 va nel 3°?
e se do
gedit 1 | gedit 2| gedit 3| gedit 4
apre gedit, con i file 1 2 3 4?

vortex87
06-05-2006, 19:19
No, le pipe sono proprio dei "tubi" tra un comando e l'altro:
Es:


cmd1 | cmd2 | cmd3

L'output di cmd1 va a cmd2, che lo legge dallo standard-in. Poi, qualunque cosa faccia cmd2, il suo output viene passato a cmd3, che lo legge dallo stdin, e cosi via...
In pratica cmd3 non riceve l'output di cmd1 se non attraverso l'output di cmd2

bako
06-05-2006, 19:27
capito, ora è tutto più chiaro..

bako
11-05-2006, 19:03
qualcuno mi posta un comando che sfrutta il maggior numero di pipe? (5 o 6 tipo)
es: questo | comando | sfrutta | le | pipe | ciao
ovviamente che abbia un senso da fare con le pipe..
:ciauz:

U-bahn
11-05-2006, 21:09
è solo un esempio...:fagiano:

cat $(find /usr/include -type f | grep alsa |grep seq.h) |sort |uniq |tr a-z A-Z |lp -d tp0

se vuoi più pipe aggiungi qualche sed...

:ciauz:

bako
11-05-2006, 21:14
Originariamente inviato da U-bahn
è solo un esempio...:fagiano:

cat $(find /usr/include -type f | grep alsa |grep seq.h) |sort |uniq |tr a-z A-Z |lp -d tp0

se vuoi più pipe aggiungi qualche sed...

:ciauz:

:oVVoVe: va benone

francofait
11-05-2006, 22:47
Originariamente inviato da bako
:oVVoVe: va benone

scusate ma un riesco proprio a trattenerla

:D :D le 'pipe' funzionan sempre :D :D :maLOL: :maLOL:

bako
12-05-2006, 12:04
Originariamente inviato da francofait
scusate ma un riesco proprio a trattenerla

:D :D le 'pipe' funzionan sempre :D :D :maLOL: :maLOL:
bella
problemino: quella uso delle pipe mi sembra usi le parentesi per le priorità
io nella mia shell nn l'ho implemntata, quindi mi serve un uso delle pipe liscio
:ciauz:

U-bahn
12-05-2006, 14:18
Originariamente inviato da bako
bella
problemino: quella uso delle pipe mi sembra usi le parentesi per le priorità
io nella mia shell nn l'ho implemntata, quindi mi serve un uso delle pipe liscio
:ciauz:

beh, le parentesi servono per passare a cat l'output delle pipe tra le parentesi, dato che cmd1|cmd2|cm3|cat non funziona....puoi sostituire le pipe tra parentesi con il nome di un file ed aggiungere tutte le pipe che vuoi

es.

cat /usr/include/stdio.h |grep extern |sort |uniq |tr e 0 |tail -n 50 |rev |tac |nl |less

(mi chiedo a cosa potrebbe servire)

:ciauz:

bako
14-05-2006, 14:20
Originariamente inviato da U-bahn

(mi chiedo a cosa potrebbe servire)



ho fatto una shell in c, che implementa anche l'uso delle pipe e devo testarlo

Loading