Pytania otagowane jako pipe

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ą „|”.

13
Wyłącz buforowanie w rurze
Mam skrypt, który wywołuje dwa polecenia: long_running_command | print_progress Te long_running_commandodciski postęp, ale jestem zadowolony z niego. Używam, print_progressaby uczynić to ładniejszym (mianowicie, drukuję postęp w jednym wierszu). Problem: Podłączenie rury do standardowego wyjścia również aktywuje bufor 4K, do ładnego programu do drukowania nic nie dostaje ... nic ... nic …
395 shell  pipe  buffer 



1
Bash: Co robi „> |”?
Właśnie widziałem to spisane; $ some-command &gt;| /tmp/output.txt Rury pionowe są używane w standardowych przekierowaniach „przesyłanie” danych wyjściowych z jednego polecenia do drugiego, czy &gt;|w rzeczywistości jest całkowicie bezużyteczne, ponieważ byłoby takie samo jak &gt;w tym scenariuszu?

6
Jak duży jest bufor rur?
Jako komentarz w nie jestem pewien, dlaczego „| true” w pliku makefile ma taki sam efekt, jak napisany przez użytkownika „|| true” użytkownik cjm : Kolejny powód do uniknięcia prawda jest taka, że ​​jeśli polecenie wytworzyło wystarczającą ilość danych wyjściowych do wypełnienia bufora potoku, zablokowałoby oczekiwanie na przeczytanie go przez …
146 pipe  buffer 

7
Przekaż wynik poprzedniego polecenia do następnego jako argument
Mam polecenie, które wyprowadza dane do stdout ( command1 -p=aaa -v=bbb -i=4). Linia wyjściowa może mieć następującą wartość: rate (10%) - name: value - 10Kbps Chcę grepować ten wynik, aby zapisać tę „szybkość” (myślę, że fajka będzie tu przydatna). Na koniec chciałbym, aby ta szybkość była wartością parametru drugiego polecenia …



3
Pseudopliki dla danych tymczasowych
Często chcę podawać stosunkowo krótkie dane łańcuchowe (choć może to być kilka wierszy) do programów wiersza poleceń, które przyjmują tylko dane wejściowe z plików (np. Wdiff) w powtarzający się sposób. Jasne, że mogę utworzyć jeden lub więcej plików tymczasowych, zapisać tam ciąg i uruchomić polecenie z nazwą pliku jako parametrem. …
98 bash  files  pipe 

4
W jakiej kolejności działają polecenia potokowe?
Nigdy tak naprawdę nie myślałem o tym, jak powłoka faktycznie wykonuje polecenia potokowe. Zawsze mówiono mi, że „standardowe wyjście jednego programu jest przesyłane do wejścia innego standardowego”, jako sposób myślenia o rurach. Więc naturalnie pomyślałem, że w przypadku powiedzmy A | B, A uruchamia się jako pierwsze, a następnie B …
89 pipe  ps 

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 …

4
Nie możesz potokować do diff?
Chciałem być sprytny i porównać plik zdalny z plikiem lokalnym bez wcześniejszego ręcznego pobrania. Mogę pobrać zawartość pliku zdalnego przez ssh user@remote-host "cat path/file.name" Jednak przesyłanie tego do diff ssh user@remote-host "cat path/file.name" | diff path/file.name daje mi to: diff: missing operand after `path/file.nae' diff: Try `diff --help' for more …

6
Czy mogę potokować stdout na jednym serwerze, aby stdin na innym serwerze?
stdoutna jednym serwerze CentOS musi być podłączony do stdininnego serwera CentOS. czy to możliwe? Aktualizacja ScottPack, MikeyB i jofel mają poprawne odpowiedzi. Odpowiedziałem Scottowi, ponieważ chociaż moje pytanie nie określało bezpieczeństwa jako wymogu, zawsze miło jest być bezpiecznym. Jednak sugestie pozostałych dwóch stypendystów również się sprawdzą.
74 pipe  stdout  stdin 


8
Jak zrobić potok dwukierunkowy między dwoma programami?
Każdy wie, jak sprawić, by rurę jednokierunkowy pomiędzy dwoma programami (wiążą się stdoutz pierwszego i stdindrugiego jednego) first | second. Ale jak zrobić potok dwukierunkowy, tj. Wiązanie krzyżowe stdini stdoutdwóch programów? Czy istnieje prosty sposób, aby to zrobić w powłoce?
63 shell  pipe 

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.