pipe vs. redirects

14

Od dawna używam piszczałek i przekierowań i po prostu zdałem sobie sprawę, że nie wiem dokładnie, jak się różnią. Po prostu wiem, że jeśli chcesz przechowywać dane wyjściowe w pliku, użyj & gt ;. W przeciwnym razie najczęściej używasz |. Czy ktoś może wyjaśnić różnicę między potokami a przekierowaniami?

tony_sid
źródło

Odpowiedzi:

14

Obie robią tę samą podstawową rzecz; przekierowują deskryptor pliku wykonanego procesu. Różnica polega na tym, jak. Rura łączy standardowe wyjście jednego procesu ze standardowym wejściem, podczas gdy przekierowanie przekierowuje z / do pliku ( > od stdout do pliku, < z pliku do standardowego).

Ignacio Vazquez-Abrams
źródło
To rozróżnienie, które zaciera się w Linuksie i innych systemach /dev/fd. Na przykład, jeśli uciekasz echo foo > >(somecommand), rozwinie się do echo foo > /dev/fd/3. Nadal jest przekierowywany, ale do procesu.
grawity