PowerShell で Linux の `tail` のようなコマンドはありますか?

PowerShell で Linux の `tail` のようなコマンドはありますか?

PowerShell で Linux の tail の動作を再現するにはどうすればよいですか?

ログ ファイル ( ) を書き込むアプリケーションを実行していますerror.logが、その最後の行を表示し、コンソールの変更を更新し続けたいと思います。

tail -f filenamePowerShell のようなものに相当するものはありますか?

答え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-FileTailtailPSCX をインストールすると、デフォルトでエイリアスが設定されます。

関連情報