Windows で Tail -f をやりたい
Windows には tail
コマンドがない。ログファイルを確認する時に tail -f
が重宝するのだが…。
というわけで、Windows 上で tail
コマンドを使うための方法を紹介する。
msys・Git For Windows を入れれば入っている
いわゆる GitBash である。Git For Windows など、msys 系のツールや Cygwin を入れれば Tail コマンドが入っている。
Windows Server 2003 Resource Kit Tools に入っている純正品を使う
以下よりリソースキットをダウンロードする。この中にある tail.exe が Windows 純正。
適当なところにインストールすると、tail.exe
が見つかるはず。これを PATH が通っているところに置いておく。といっても、インストーラが解凍したときに環境変数 PATH に解凍先のフォルダパスを勝手に追加してくれるので、そのままで良い人はそのまま使える。PATH を変えられたくない場合はインストール後に修正する。
Windows バッチで再現
以下で紹介されているバッチスクリプトを使えば、入力ファイルが出力オープンな状態の間だけ監視を続けてくれる。アプリケーションが常に追記しているログファイルなどであれば出力オープンなままなので、実質的に tail -f
だ。
- windows-batch-scripts/TailF.bat at master · Neos21/windows-batch-scripts · GitHub
- 参考 : バッチファイルで作るtail -fコマンド: Windows Script Programming
PowerShell 3.0 以降で再現
Windows 8 以降で使える PowerShell 3.0 なら、以下のように Get-Content
コマンドで再現可能。
Get-Content -Path Sample.log -Tail 10 -Wait
PowerShell のバージョンを確認するには以下のとおり。当方 Windows 10 なので PSVersion は 5.0 らしい。
PS > $PSVersionTable
Name Value
---- -----
PSVersion 5.0.10586.494
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.10586.494
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Get-Content
コマンドは以下のように cat
エイリアスが定義されているので、cat
と打っても使える。
PS > Get-Alias | Where-Object {$_.Definition -match "Get-Content"}
# Gal | ?{$_.Definition -match "Get-Content"}
CommandType Name
----------- ----
Alias cat -> Get-Content
Alias gc -> Get-Content
Alias type -> Get-Content
- 参考 : Windows で tail -f する方法
- 参考 : PowerShell/コマンドレットのエイリアスを調べる方法 - Windowsと暮らす
Get-Alias | Where-Object { $_.Definition -eq "<コマンドレット名>" }
Get-Alias | Out-String -Stream | Select-String <コマンドレット名>
JScript で作成する
同じコマンドでも実装のされ方が違うのは面白い。
- 参考 : ※ あばにゃんの個人の感想です
- 参考 : 中堅SEの覚書: Windowsで"tail"コマンド
Tail For Windows を使う
フリーソフトを使う。
以上
自分は GitBash をメインに使っているが、Windows 純正 tail.exe も入れておいてある。これでおけ~。