Какой простой способ сбросить входные данные канала в файл?(Linux)

StackOverflow https://stackoverflow.com/questions/76700

  •  09-06-2019
  •  | 
  •  

Вопрос

Я ищу небольшой скрипт оболочки, который возьмет все, что в него вложено, и сбросит это в файл..для целей отладки электронной почты.Есть какие-нибудь идеи?

Это было полезно?

Решение

Команда unix tee делает это.

man tee

Другие советы

cat > FILENAME

Вы не одиноки в том, что нуждаетесь в чем-то подобном...на самом деле, кто-то хотел эту функциональность несколько десятилетий назад и разработал тройник :-)

Конечно, вы можете перенаправить стандартный вывод непосредственно в файл в любой командной строке, используя символ >:

echo "hello, world!" > the-file.txt

Стандартный инструмент unix tee может это сделать.Он копирует входные данные в выходные, одновременно записывая их в файл.

Используйте Procmail.Procmail - ваш друг.Procmail создан для подобных вещей.

Если вы хотите проанализировать это в скрипте:

while /bin/true; do
    read LINE
    echo $LINE > $OUTPUT
done

Но вы можете просто использовать cat.Если cat получит что-то из stdin, оно передаст это в стандартный вывод, так что вам придется передать это в cat >$OUTPUT.Они будут делать то же самое.Второй способ работает и для двоичных данных.

Если вам нужен сценарий командной строки, попробуйте это:

#!/bin/sh
exec cat >/path/to/file

Если exim или sendmail - это то, что записывается в канал, то procmail - хороший ответ, потому что он обеспечит вам блокировку / сериализацию файлов, и вы сможете поместить все это в один файл.

Если вы просто хотите записать данные в файл, то - tee > /tmp/log.$$ или - cat > /tmp/log.$$ может быть достаточно.

Использование <<command>> | tee <<file>> для передачи команды по каналу <<command>> в файл <<file>>.

Это также покажет результат.

А?Наверное, я не понял вопроса?

Разве ты не можешь просто засунуть свою трубку в >> ~file

Например

echo "Foobar" >> /home/mo/dumpfile

добавит Foobar к файлу дампа (и создаст файл дампа, если необходимо).Нет необходимости в сценарии оболочки...Это то, что вы искали?

если вы не заботитесь о выводе результата

cat - > filename

или

cat > filename
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top