Windows PowerShell コマンドで Unix Tail コマンドを実現する

Migel Hewage Nimesha 2023年12月11日
  1. Win32 の tailtail Unix コマンド関数を実現する
  2. テール Unix コマンド機能を実現する Get-Content を備えた Windows PowerShell
  3. テール Unix コマンド機能を実現する Cat を備えた Windows PowerShell
Windows PowerShell コマンドで Unix Tail コマンドを実現する

Unix オペレーティングシステムには、OS コマンド tail が含まれています。tail プログラムの目的は、テキストファイル/パイプデータの末尾を表示することです。

期待される出力は、ファイルの最後の行です。行数は変えることができます。同じコマンドを一度に複数のファイルで使用して、標準出力を出力できます。

Unix に加えて、tail コマンドは Unix ライクなシステムと FreeDOS および MSX-DOS システムをサポートします。

クロスプラットフォームアプリケーションの Windows バージョンである Windows PowerShell では、コマンドラインシェルコマンドを実行して、さまざまな機能の自動化を実現できます。ただし、ここで使用されるコマンドは、Unix ライクなシステムで使用される標準のスクリプトコマンドとは異なります。

Windows PowerShell でテールと同様の機能を実行するには、いくつかの許容可能な方法があります。

Win32 の tailtail Unix コマンド関数を実現する

この機能を実現する一般的な方法の 1つは、Windows PowerShell 用の tail-f プログラムを使用することです。Win32 のテール。ファイルの変更を追跡し、ユーザーがリアルタイムで変更を追跡できるようにします。ただし、ユーザーは、https://tailforwin32.sourceforge.net のリンクから入手できる別のプログラムを完全に使用する必要があります。したがって、Windows システムの PowerShell 固有の代替手段を探しているユーザーには適したソリューションではありません。

ただし、これにも受け入れ可能な PowerShell ベースのソリューションがいくつかあります。

テール Unix コマンド機能を実現する Get-Content を備えた Windows PowerShell

最も効果的な方法の 1つは、Get-Content を使用することです。その後に -Tail n が続きます。n は出力として取得する必要のある行数です。

以前のバージョンの WindowsPower Shell、V1 および V2 では、この機能は、Get-Content コマンドの後に -Wait コマンドを実行することで実現されていました。ファイルがリアルタイムで変更されている場合は、待機コマンドを使用して、変更を追跡できるようにします。

Get-Content .\DummyLogFile.txt

ここで、出力は以下に示すようにファイル全体のコンテンツを取得します。ログファイルの最初の行から始まり、最後まで続きます。

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
.
.

ただし、- Wait を使用すると、ファイルテールへのリアルタイムの変更を追跡できます。

Get-Content .\DummyLogFile.txt -Wait

ここでは、出力にすべてのファイルデータが含まれ、以下の変更を待ちます。

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
_

PowerShell の V2 に続くバージョンの後半では、V3 は -Tail キーワードをサポートします。したがって、ファイル全体を取得するのではなく、必要な最後の行のみをプレビューできます。

 Get-Content .\DummyLogFile.txt -Tail 4

指定された出力は、指定されたテキストの最後の 4 行です。4 は n の可変値であり、tail コマンドに続いて、以下のテールラインの数を含めます。

C:\Users>  Get-Content .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
PS C:\Users>

ログファイルや絶えず変化するファイルのように、ユーザーがリアルタイムデータを必要とする場合は、-Wait コマンドを追加できます。新しい最後の行が追加されると、出力が更新されて新しい行が出力されます。

PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4

出力は変更を待ちます。

Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.

ただし、テール値が大きい -wait を使用すると、ログファイルなどの絶えず変化するファイルでシステムを待機させることができます。その結果、大量のメモリが消費されます。したがって、-wait -tail コマンドを一緒に使用するファイルの種類に注意することが重要です。

テール Unix コマンド機能を実現する Cat を備えた Windows PowerShell

Unix ライクなシステムに精通しているユーザーにとっては、cat コマンドを使用すると便利です。

PS C:\Users> cat .\DummyLogFile.txt

cat コマンドのみを使用すると、Get-Content のみと同様に、テキストファイルのコンテンツが出力または出力されます。

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
 ...

ただし、-Tail n コマンド(n は出力に必要な最終行数)で cat を使用すると、Unix の tail コマンドと同様の出力が提供されます。

PS C:\Users> cat .\DummyLogFile.txt -Tail 4

コードの出力は次のようになります。

C:\Users>  cat .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
PS C:\Users>

必要に応じて、cat コマンドを Wait コマンドと一緒に使用して、システム内のログファイルなどのテキストファイルへのリアルタイムの変更を追跡することもできます。

PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait

したがって、出力が提供され、システムは指定されたファイルの変更を待機します。次に、これらの変更されたファイルの末尾の行が、PowerShell によって出力として出力されます。

Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
_

Linux tail は、Linux および Linux のようなシステムでさまざまなログファイルを追跡するために最もよく使用されます。したがって、Windows ユーザーがコマンドラインスクリプトを実行して特定の同様の機能を実行できるようにする PowerShell には、このような機能が必要です。

新しい PowerShell バージョンでは、tail コマンドが上記の Get-Content または cat コマンドと一緒に使用され、wait コマンドがリアルタイムの変更を追跡するために使用されます。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.