Я хотел бы отправить стандартный вывод из одного процесса в стандартный поток другого процесса, но также и в консоль. Например, отправка stdout в stdout + stderr.
Например, я получил git edit
псевдоним для следующего:
git status --short | cut -b4- | xargs gvim --remote
Я хотел бы, чтобы список имен файлов был отправлен на экран, а также xargs
.
Так есть ли tee
подобная утилита, которая сделает это? Так что я могу сделать что-то вроде:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
io-redirection
stdout
stdin
tee
Роджер Липскомб
источник
источник
/dev/stdout
происходит перенаправление. То есть, если бы вы использовалиtee /dev/stdout
эффект, все было бы отправленоxargs
дважды, и ничто не пошло бы в терминал./dev/stdout
не перенаправляется по каналу, он останется стандартным выводом текущего процесса. Однако, если вы инкапсулируете команду в сценарии, а затем перенаправите стандартный вывод этого сценария, то/dev/stdout
он будет перенаправлен. В интерактивной консолиtee /dev/tty
иtee /dev/stdout
имеет тот же эффект, даже при использовании труб.echo foo | tee /dev/stdout | tr f b
иecho foo | tee /dev/tty | tr f b
. Вот подсказка для вас: это то,tee
что интерпретирует/dev/stdout
как имя файла.Более общее решение, чем
/dev/tty
:источник
start cmd:>
твой$PS1
?PS1
: hauke-laging.de/software/prompt (немецкий)Вы можете использовать команду tee , просто введите ее в файл STDERR, например:
так что в этом случае ваш псевдоним может быть:
источник
/proc/self/fd/2