>
を使用 オペレーター:
rsync -v > log.txt
rsync コマンドの出力を log.txt
という名前のファイルに書き込みます .
スクリプトを呼び出して、「標準出力」(AKA STDOUT) をログ ファイルにリダイレクトできます。 「>>」を使用してログ ファイルに追加するか、「>」を使用してログ ファイルを上書きします。ファイルがまだ存在しない場合は、ファイルが作成されます (そのディレクトリのアクセス許可が許可されている場合)。ファイルが既に存在する場合は、自分 (またはスクリプトを実行する人) が書き込み可能であることを確認してください。
ログ ファイルに上書きするのではなく、常にログ ファイルに追加する場合は、最初から何かがログ ファイルを「ローテーション」することを確認することをお勧めします。つまり、ログ ファイルを別の名前に移動し、古いログ ファイルを削除します。ログ ファイルがスクリプトに固有のものである場合、スクリプトにログ ファイルのローテーションを処理させることができます。
通常、推奨される方法は、STDOUT をリダイレクトしてスクリプトを呼び出すことですが、1 つまたは複数のコマンドに対してスクリプト自体の中でリダイレクトを実行したい場合もあります。シェル スクリプトの任意のステートメントの後に ">> logfile" を追加して、そのコマンドの STDOUT をログ ファイルに追加できます。これを「2>&1>> logfile」に変更して、「標準エラー」(AKA STDERR) との両方を追加できます ログファイルへの STDOUT。 STDERR は通常、スクリプトを実行しているすべての人に問題を通知するために使用されるため、通常、STDERR もログファイルに移動する必要はありません。しかし、あなたがそれを望んでいる時と状況があります。必要に応じて、{ と } 内でスクリプト内のコマンドをグループ化し、閉じ中括弧の後にリダイレクトを配置することで、グループ全体の STDOUT を一度にリダイレクトできます。
上記に加えて、出力を画面に表示したり、アーカイブ/grepping/などのファイルに出力したりすることに興味がある場合は、「tee」を実行することをお勧めします。 " 出力。これは優れたコマンドであり、実際の配管で見られる T パイプにちなんで名付けられ、mysql などの「サブコンソール」でうまく機能します。
コマンドは tee です ... これは、"toydi" という名前のユーザーからコピーされた例です:
<ブロック引用>
コマンドからの出力を同時に表示してログに記録するには:ls -l | tee -a file.log
この例では、ディレクトリ一覧の出力を表示し、出力を file.log に保存します。オプション -a は、ファイルを上書きするのではなく、追加するコマンドを示します。
また、ウィキペディアの画像をチェックして、ティーがどのように機能するかを視覚化してください。私はそれにリンクしたいのですが、複数のリンクを投稿するのに十分な「評判ポイント」がありません。「toydi」はリンクの功績に値すると感じました:)