[PS1] Powershell で tail -f

2014年12月22日

 ログファイルを継続的に参照する場合に、追記のみを待ち受けて表示してほしい状況があります。

 unix系 や cygwin だと tail コマンドがあってたとえば以下のように書ける(らしい)。

tail test.txt -f -n 0

 Windows で行う場合、コマンドプロンプトでは tail コマンドに相当するコマンドが標準では用意されていませんが、Powershell では以下のように書けば同じことができるようです。

Get-Content .test.txt -Wait -Tail 0 

 また、-tail オプションは Powershell 2 系では使用できないようで、そうすると素の Windows 7 では使えません。この場合は、-tail オプションの代わりに select を通すことで似た結果が得られます。

Get-Content .test.txt -Wait | select -Skip (gc .test.txt).Count

 注意点としては、Get-Content の特性のせいか、保存された時点までの差分を pipe に渡します。このため、保存された箇所で改行しているかのように表示されてしまいます。

 たとえば、一行のテキスト "aa bb cc "を、

  1.  "aa " を入力して保存 (CTRL + S)
  2.  "bb " を入力して保存 (CTRL + S)
  3.  "cc " を入力して保存 (CTRL + S)

とすると、テキストファイル本体は "aa bb cc " で一行ですが、Powershell での表示は 3行で表示されます。

 ここを確実に扱いたい場合は、Cygwin の tail コマンドを持ち込まないとダメですかね…といった感じです(汗






カテゴリー: OS, PowerShell, Windows

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org