Pytania otagowane jako process-substitution

Podstawianie procesu forma komunikacji między procesami, która umożliwia wejście lub wyjście polecenia na pojawienie się jako plik (na przykład: `<(cmd)` lub `> (cmd)`).

5
Zastąpienie procesu i rura
Zastanawiałem się, jak zrozumieć następujące kwestie: Przełożenie standardowej komendy na standardową kolejną jest potężną techniką. Ale co, jeśli chcesz przesłać standardowe sekwencje wielu poleceń? W tym miejscu pojawia się podstawienie procesu. Innymi słowy, czy podstawienie procesu może zrobić wszystko, co może zrobić potok? Co może zrobić proces podstawiania, ale potok …

2
Dlaczego podstawienie procesu powoduje utworzenie pliku o nazwie / dev / fd / 63, który jest potokiem?
Próbuję zrozumieć nazwane potoki w kontekście tego konkretnego przykładu. Wpisuję &lt;(ls -l)w moim terminalu i uzyskać wyjście jako, bash: /dev/fd/63: Permission denied. Po wpisaniu cat &lt;(ls -l)mogłem zobaczyć zawartość katalogu. Jeśli mam wymienić catz echo, myślę uzyskać nazwę terminala (lub nie?). echo &lt;(ls -l)daje wynik jako /dev/fd/63. Również ten przykładowy …

2
Dlaczego `sort <(ls -l)` działa, ale `sort <(ls -l)` nie działa?
Dzisiaj uczę się czegoś o fifo w tym artykule: Wprowadzenie do nazwanych potoków , o którym wspomniano cat &lt;(ls -l). Zrobiłem kilka eksperymentów, używając sort &lt; (ls -l), który wyskakuje błąd: -bash: syntax error near unexpected token `('` Potem odkryłem, że źle wprowadziłem dodatkowe miejsce w poleceniu. Ale dlaczego to …

1
Dlaczego podstawianie procesów BASH nie działa w przypadku niektórych poleceń?
Czasami podstawienie procesu nie będzie działać zgodnie z oczekiwaniami. Oto przykład: Wkład: gcc &lt;(echo 'int main(){return 0;}') Wydajność: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Wkład: Ale działa zgodnie z oczekiwaniami, gdy jest używany z innym poleceniem: grep main &lt;(echo 'int main(){return 0;}') Wydajność: …


4
bash: jak propagować błędy w zastępowaniu procesów?
Chcę, aby moje skrypty powłoki kończyły się niepowodzeniem, ilekroć wykonanie polecenia nimi nie powiedzie się. Zazwyczaj robię to z: set -e set -o pipefail (zazwyczaj dodaję set -uteż) Chodzi o to, że żadne z powyższych nie działa z podstawieniem procesu. Ten kod wypisuje „ok” i kończy z kodem powrotu = …

1
W zsh różnica między cat <(cat) vs cat | kot vs kot = (kot)?
Spodziewałem się cat &lt;(cat)i cat | catzrobię to samo: skopiuj wiersze ze standardowego wejścia na standardowe wyjście. Zrozumiałem, że oba wykonałyby a catw podpowłoce, przekierowały catstdout podpowłoki do tymczasowej nazwanej potoki, a następnie wykonały inną catw bieżącej powłoce ze stdin przekierowanym do potoku. Zamiast tego cat &lt;(cat)pozwala mi pisać na …

4
Jak emulować podstawianie procesów w Dash?
Za bashpomocą mogę zastąpić proces i traktować dane wyjściowe procesu tak, jakby to był plik zapisany na dysku: $ echo &lt;(ls) /dev/fd/63 $ ls -lAhF &lt;(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -&gt; pipe:[1652825] niestety, zastępowanie procesów nie jest obsługiwane w dash. Jaki byłby najlepszy sposób na …

2
Wyjście zastępowania procesu jest poza kolejnością
The echo one; echo two &gt; &gt;(cat); echo three; polecenie daje nieoczekiwany wynik. Przeczytałem to: W jaki sposób podstawianie procesów jest realizowane w bash? i wiele innych artykułów na temat zastępowania procesów w Internecie, ale nie rozumiem, dlaczego tak się zachowuje. Oczekiwany wynik: one two three Rzeczywista wydajność: prompt$ echo …

5
pliki grep z listy
Próbuję uruchomić grep na liście kilkuset plików: $ head -n 3 &lt;(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Jednak pomimo tego, że szukam ciągu, o którym wiem, że znajduje się w plikach, następujące pliki nie wyszukują plików: $ grep -i 'foo' &lt;(cat files.txt) $ grep -i 'foo' admin.php The foo was found …


2
Bash: podstawienie procesu i standardowe wejście
Następująca linia jest oczywista: echo "bla" | foo | bar Ale czy te poniżej robią to samo? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) Które z fooi barprzeczytałem „bla” ze standardowego wejścia i dlaczego? Mam na myśli, że oczywiście mogę po prostu kodować i sprawdzać, ale …


3
Jak używać tee do przekierowania na grep
Nie mam dużego doświadczenia w używaniu tee, więc mam nadzieję, że nie jest to bardzo podstawowe. Po obejrzeniu jednej z odpowiedzi na to pytanie natknąłem się na dziwne zachowanie tee. Aby wygenerować pierwszy wiersz i znaleziony wiersz, mogę użyć tego: ps aux | tee &gt;(head -n1) | grep syslog USER …


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.