Są pewne polecenia, które filtrują lub działają na wejściu, a następnie przekazują je jako dane wyjściowe, myślę, że zwykle stdout
- ale niektóre polecenia po prostu biorą stdin
i robią to, co z nimi robią, i nie generują nic.
Najbardziej znam się na systemie OS X, dlatego od razu przychodzą mi na myśl dwa pbcopy
i pbpaste
- które umożliwiają dostęp do schowka systemowego.
W każdym razie wiem, że jeśli chcę wziąć standardowe wyjście i wypluć dane wyjściowe, aby przejść zarówno stdout
do pliku, jak i do pliku, mogę użyć tee
polecenia. I wiem trochę xargs
, ale nie sądzę, że tego właśnie szukam.
Chcę wiedzieć, jak mogę podzielić, stdout
aby przejść między dwoma (lub więcej) poleceniami. Na przykład:
cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors
Prawdopodobnie jest lepszy przykład niż ten, ale naprawdę interesuje mnie, jak mogę wysłać polecenie stdout do polecenia, które go nie przekazuje, i jednocześnie powstrzymując się stdout
od „wyciszenia” - nie pytam o to, jak cat
plik i grep
część i skopiuj go do schowka - określone polecenia nie są tak ważne.
Ponadto - nie pytam, jak wysłać to do pliku i stdout
- może to być pytanie „duplikowane” (przepraszam), ale szukałem i mogłem znaleźć tylko te podobne, które pytały o sposób podziału między stdout a plikiem - i wydawało się tee
, że odpowiedzi na te pytania są dla mnie nieskuteczne.
Na koniec możesz zapytać „dlaczego nie uczynić pbcopy ostatnią rzeczą w łańcuchu rur?” a moja odpowiedź brzmi: 1) co jeśli chcę go użyć i nadal widzieć dane wyjściowe w konsoli? 2) co jeśli chcę użyć dwóch poleceń, które nie są wypisywane stdout
po przetworzeniu danych wejściowych?
Aha, i jeszcze jedno - zdaję sobie sprawę, że mógłbym użyć tee
i nazwaną potok ( mkfifo
), ale liczyłem na sposób, w jaki można to zrobić inline, zwięźle, bez wcześniejszej konfiguracji :)