Chciałbym wysłać stdout z jednego procesu do stdin innego procesu, ale także do konsoli. Na przykład wysyłanie stdout do stdout + stderr.
Na przykład mam git edit
alias do następujących:
git status --short | cut -b4- | xargs gvim --remote
Chciałbym, aby lista nazw plików była wysyłana na ekran xargs
.
Czy istnieje tee
narzędzie podobne do tego? Aby móc zrobić coś takiego:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
io-redirection
stdout
stdin
tee
Roger Lipscombe
źródło
źródło
/dev/stdout
jest przekierowany. Oznacza to, że jeśli użyjesztee /dev/stdout
efektu, wszystko zostanie wysłanexargs
dwukrotnie, a nic nie trafi do terminala./dev/stdout
nie jest przekierowywany przez potok, pozostanie bieżącym standardowym wyjściem procesu. Jeśli jednak zamkniesz polecenie w skrypcie, a następnie przekierujesz standardowe wyjście tego skryptu,/dev/stdout
nastąpi przekierowanie. W interaktywnej konsolitee /dev/tty
itee /dev/stdout
ma ten sam efekt, nawet podczas korzystania z potoków.echo foo | tee /dev/stdout | tr f b
iecho foo | tee /dev/tty | tr f b
. Oto podpowiedź dla Ciebie: jest totee
interpretacja/dev/stdout
nazwy pliku.Bardziej ogólne rozwiązanie niż
/dev/tty
:źródło
start cmd:>
jest Twoja$PS1
?PS1
, tak: hauke-laging.de/software/prompt (niemiecki)Możesz użyć polecenia tee , po prostu podaj plik STDERR, na przykład:
więc w takim przypadku Twój alias może:
źródło
/proc/self/fd/2