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 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 …
Chciałbym usunąć wszystkie początkowe i końcowe spacje i tabulatory z każdego wiersza wyniku. Czy istnieje proste narzędzie, do trimktórego mógłbym przesłać dane wyjściowe? Przykładowy plik: test space at back test space at front TAB at end TAB at front sequence of some space in the middle some empty lines with …
Właśnie widziałem to spisane; $ some-command >| /tmp/output.txt Rury pionowe są używane w standardowych przekierowaniach „przesyłanie” danych wyjściowych z jednego polecenia do drugiego, czy >|w rzeczywistości jest całkowicie bezużyteczne, ponieważ byłoby takie samo jak >w tym scenariuszu?
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 …
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 …
Mam plik binarny (którego nie mogę modyfikować) i mogę: ./binary < file Mogę też zrobić: ./binary << EOF > "line 1 of file" > "line 2 of file" ... > "last line of file" > EOF Ale cat file | ./binary daje mi błąd. Nie wiem, dlaczego to nie działa …
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. …
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 …
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 …
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 …
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ą.
Mam polecenie, które generuje dane wyjściowe w kolorze, i chciałbym przesłać je do pliku z usuniętymi kodami kolorów. Czy istnieje takie polecenie, które działa tak cat, że usuwa kody kolorów? Planuję zrobić coś takiego: $ command-that-produces-colored-output | stripcolorcodes > outfile
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?
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.