У меня есть bashscript, который порождает процессы на двух разных машинах по ssh, а затем cat выводит один в текстовый файл. Как я могу отображать вывод ALSO в терминале, когда он работает?pipe bash output to two different streams
ответ
Посмотрите на полезную информацию tee
(man tee
).
Команда tee
отличная, если вы хотите сохранить поток в файл и продолжить его обработку. Однако, если вы хотите отправить stdout на две отдельные программы, вы можете использовать цикл while while и эхо выводить на stdout и stderr, а затем передавать stdout в одну программу и stderr в другую.
echo input |
while read foo; do
echo "$foo"
echo "$foo" >&2
done 2> >(command1 1>&2) | command2
Вот демо, где строка «вход» предваряется с номером, чтобы показать, где выходы собираются, а затем отправлены в качестве входных данных для двух программ на языке Perl, который просто предварять имя потока.
echo input |
while read foo; do
echo "1: $foo"
echo "2: $foo" >&2
done 2> >(perl -wpe 's//STDERR: /;' 1>&2) | perl -wpe 's//STDOUT: /;'
выход
STDERR: 2: input STDOUT: 1: input
Протест - это время/чтение/эхо вещи не может сохранить конец строки и двоичный текст и длинные строки будут вызывать проблемы. Как и во многих других случаях, bash не может быть лучшим решением. Вот Perl решение для чего-нибудь, но на самом деле огромных файлов:
echo input |
perl -wne 'print STDERR; print;' 2> >(command1 >&2) | command2
- 1. Pipe ffmpeg output to named pipe
- 2. GPUImage Different Preview to Output
- 3. Pipe envsubst output to hive
- 4. Pipe Output to Python File
- 5. Pipe grep output to xargs
- 6. Bash pipe to python
- 7. Bash - pipe multiple grep и print output
- 8. gulp: pipe typescript output to mocha
- 9. Pipe direct tty output to sed
- 10. Join Two Different Table
- 11. AWK output to bash Array
- 12. Bash: awk output to array
- 13. audio mix two pcm streams
- 14. Замените String Two Different Parts
- 15. overwrite has_many association to use two different owner_ids
- 16. Cipher Output и Input Streams
- 17. Redirect bash pipe output как скрипт скрипта python второй аргумент
- 18. Pipe Ipython magic output для переменной?
- 19. DB2 Output to Variable через скрипт bash
- 20. Pipe output cat to cURL для загрузки списка файлов
- 21. Singleton class return two different singleton objects
- 22. wso2 cloning from two different api
- 23. csh pipe output команды find
- 24. Pipe netstat output несколько раз
- 25. Неожиданное поведение с boost :: streams :: output filter
- 26. ConcurrentModificationException: single thread, two different Hashtables
- 27. Select Statement on Two different views
- 28. mysql - Calculate Percentage from two different table
- 29. crash-stopping bash pipe
- 30. bash + c pipe параметр
И сделать это с 'tee' вы выпустить простейшую команду' выходного кота | тройником filename' – Kimvais
Работала блестяще, благодаря –
Не стоит забывать о стандартная ошибка: выход cat 2> & 1 | tee filename – Harvey