Как одновременно подавать стандартный ввод и выгружать данные в файл?

Как одновременно подавать стандартный ввод и выгружать данные в файл?

Я хотел бы скормить команде стандартный ввод и одновременно сбросить этот стандартный ввод в файл. Это просто неудачная попытка:

read | tee dump.txt

эта команда ожидает стандартный ввод. Я ожидаю, что все, что я ввожу, будет передано readИ сброшено в dump.txt. Как это сделать?

решение1

Поменяйте местами конвейер: сначала пропустите вывод, teeчтобы сохранить копию в файле, а затем снова скопируйте его на стандартный вывод, а затем передайте его в вашу фактическую команду.

Я использую catздесь вместо этого, потому что он принимает неопределенное количество входных данных и не завершается после первой строки (плюс дополнительный символ новой строки, см.здесьдля объяснения этого) например read:

echo something | tee dump.txt | cat

Связанный контент