Potok Unix łączy deskryptory plików dwóch procesów. Potok jest tworzony za pomocą funkcji potoku POSIX zadeklarowanej w <unistd.h>. Powłoki umożliwiają tworzenie potoków między procesami za pomocą „|”.
Mam aplikację, która wygeneruje dużą ilość danych, których nie chcę przechowywać na dysku. Aplikacja generuje głównie dane, których nie chcę używać, ale zestaw przydatnych informacji, które należy podzielić na osobne pliki. Na przykład biorąc pod uwagę następujące dane wyjściowe: JUNK JUNK JUNK JUNK A 1 JUNK B 5 C 1 …
Przepraszam, jeśli to głupie pytanie, ale staram się osiągnąć coś takiego, ale w jednym wierszu: $ prog1 | prog2 $ prog1 | prog3 Zasadniczo chcę wykonać prog1 i przesłać dane wyjściowe do prog2 i prog3 osobno (nie łańcuchowo). Na początku próbowałem użyć tee, ale to nie wydawało się właściwe, ponieważ …
Poniższy przykład mnie zaskoczył. Wydaje się to sprzeczne z intuicją ... poza tym, że jest więcej czasu na echo | sedkombo dla użytkownika. Dlaczego echozużywa tyle czasu sys, gdy działa sam, a może powinno być pytanie, jak sedzmienia się stan gry? Wydaje się, że echobyłoby potrzeby, aby zrobić to samo …
Usiłuję uzyskać cdnazwę katalogu przekierowanego do niej z innego polecenia. Żadna z tych metod nie działa: $ echo $HOME | cd $ echo $HOME | xargs cd Działa to: $ cd $(echo $HOME) Dlaczego pierwszy zestaw poleceń nie działa i czy istnieją inne, które również zawodzą w ten sposób?
Jeśli chcę tcpdump żądań DNS klientów (na routerze OpenWrt 10.04), to ja root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br-lan, link-type EN10MB (Ethernet), capture size 96 bytes 22:29:38.989412 IP 192.168.1.200.55919 > 192.168.1.1.53: 5697+ A? …
Chcę timepolecenia składającego się z dwóch oddzielnych poleceń z jednym wyjściem potokowym do drugiego. Weźmy na przykład dwa poniższe skrypty: $ cat foo.sh #!/bin/sh sleep 4 $ cat bar.sh #!/bin/sh sleep 2 Jak mogę timezgłosić czas foo.sh | bar.sh(i tak, wiem, że fajka nie ma tutaj sensu, ale to tylko …
Próbuję znaleźć najbardziej skuteczny sposób na iterację pewnych wartości, które są stałą liczbą wartości od siebie na liście słów oddzielonych spacjami (nie chcę używać tablicy). Na przykład, list="1 ant bat 5 cat dingo 6 emu fish 9 gecko hare 15 i j" Chcę więc móc iterować po liście i uzyskiwać …
To pytanie zostało przeniesione z usterki serwera, ponieważ można na nie odpowiedzieć w systemie wymiany stosów Unix i Linux. Migrował 3 lata temu . Utworzyłem plik testowy o nazwie „test”, który zawiera następujące elementy: xxx yyy zzz Uruchomiłem polecenie: (sed '/y/ q'; echo aaa; cat) < test i mam: xxx …
Niektóre powłoki bashobsługują proces podstawiania, który jest sposobem prezentacji wyników procesu w postaci pliku: $ diff <(sort file1) <(sort file2) Jednak ten konstrukt nie jest POSIX i dlatego nie jest przenośny. Jak można zastąpić proces w sposób przyjazny dla POSIX (tj. Taki, który działa /bin/sh) ? uwaga: pytanie nie pyta, …
Czytałem o tym, jak rury są implementowane w jądrze Linuksa i chciałem zweryfikować moje zrozumienie. Jeśli się mylę, zostanie wybrana odpowiedź z poprawnym wyjaśnieniem. Linux ma VFS o nazwie pipefs, który jest zamontowany w jądrze (nie w przestrzeni użytkownika) pipefs ma pojedynczy super blok i jest montowany we własnym rootie …
W wierszu polecenia mogę przekierować lub potokować wyjście polecenia do pliku lub innego polecenia za pomocą operatora >lub |po poleceniu. Natknąłem się na mniej standardową sytuację, w której chciałbym przekierować dane wyjściowe do pliku, ale wydaje mi się, że nie mam możliwości przekierowania go: Będąc w nowym terminalu [chiliNUT ~]$ …
Czy mniej może (po naciśnięciu F) wejść potokowych (podobnie jak plik)? W przypadku pliku, który jest zapisywany, polecenie less <file> podąży za plikiem po naciśnięciu F. Ale jeśli mam polecenie, które potokuje wyjście bezpośrednio na mniej, w ten sposób command | less naciśnięcie F nic nie da. Wygląda więc na …
Dlaczego otrzymuję różne wartości $xz poniższych fragmentów? #!/bin/bash x=1 echo fred > junk ; while read var ; do x=55 ; done < junk echo x=$x # x=55 .. I'd expect this result x=1 cat junk | while read var ; do x=55 ; done echo x=$x # x=1 .. …
Zbadałem prawie wszystkie dostępne podobne pytania , ale bezskutecznie. Pozwól mi szczegółowo opisać problem: Uruchamiam niektóre skrypty nienadzorowane, które mogą generować standardowe dane wyjściowe i standardowe linie błędów, chcę uchwycić je w dokładnej kolejności wyświetlanej przez emulator terminala, a następnie dodać do nich przedrostek „STDERR:” i „STDOUT:”. Próbowałem na nich …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.