
PowerShell で Linux の tail の動作を再現するにはどうすればよいですか?
ログ ファイル ( ) を書き込むアプリケーションを実行していますerror.log
が、その最後の行を表示し、コンソールの変更を更新し続けたいと思います。
tail -f filename
PowerShell のようなものに相当するものはありますか?
答え1
PowerShell 3 以降、Get-Content
(alias gc
) コマンドレットは、ファイルシステムで使用する場合に-Tail
および-Wait
パラメータをサポートします。 で検索してくださいhelp gc
。
答え2
PSv3以降のネイティブPS相当は
Get-Content -Last n
これも高速です。PSv2以下では
Get-Content filename | Select -Last n
しかし、これにはいくつか注意点があります。たとえば、ファイルへの新しい変更をブロックして待つことはできませんし、最後の行を表示する前にファイルを最初から完全に読み取る必要があるため、あまり効率的ではありません。
PSCXGet-FileTail
パラメータを持つコマンドがあります-Wait
:
名前
Get-FileTail
概要
PSCX コマンドレット: ファイルの内容を追跡します。オプションで新しいコンテンツを待機します。
構文
Get-FileTail [-Path] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>] [-Wait] [<CommonParameters>] Get-FileTail [-LiteralPath] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>] [-Wait] [<CommonParameters>]
説明
この実装は、ファイル全体を処理するのではなく、末尾から行を読み取ることで、ファイルの内容を効率的に追跡します。この動作は、大きなログ ファイルやネットワーク上の大きなログ ファイルを効率的に追跡するために重要です。また、
Wait
パラメーターを指定して、コマンドレットを待機させ、ファイルに書き込まれた新しいコンテンツを表示することもできます。待機ループから抜け出すには、 Ctrl+ を使用しますC。エンコードが指定されていない場合、コマンドレットはファイルから最初の文字を読み取ることでエンコードを自動検出しようとします。ファイルにまだ文字が書き込まれていない場合、コマンドレットはデフォルトで Unicode エンコードを使用します。Encoding パラメーターを使用してエンコードを明示的に指定することで、この動作をオーバーライドできます。
Get-FileTail
tail
PSCX をインストールすると、デフォルトでエイリアスが設定されます。