電子メールのデバッグ目的で、パイプされたものをすべて取得してファイルにダンプする小さなシェルスクリプトを探しています。何か案は?
11 に答える
UNIXコマンドティーはこれを行います。
man tee
cat > FILENAME
似たようなものを必要としているのはあなただけではありません...実際、誰かが数十年前にその機能を望んでいて、teeを開発しました:-)
もちろん、>文字を使用してstdoutを任意のシェルのファイルに直接リダイレクトできます。
echo "hello, world!" > the-file.txt
標準のUNIXツールティーはこれを行うことができます。入力を出力にコピーすると同時に、ファイルに記録します。
Procmailを使用します。Procmailはあなたの友達です。Procmailはこの種のもののために作られています。
スクリプトで分析したい場合:
while /bin/true; do
read LINE
echo $LINE > $OUTPUT
done
ただし、単に cat を使用できます。cat が stdin で何かを取得した場合、それは stdout にエコーされるため、それを cat >$OUTPUT にパイプする必要があります。これらは同じことを行います。2番目はバイナリデータでも機能します。
シェルスクリプトが必要な場合は、これを試してください:
#!/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