よもぎのメモ帳

備忘録的な感じで技術的なことをストックしていきます。

Windowsでもtail -f がしたい!

EpisodeⅠ「邂逅の…tail -f」

プログラミングの授業でtail -fコマンドを実行しろと指示されるも、はて動かない。どうしたものかとなる。そもそもtail -fはUNIX系のコマンドでWindowsでは動かないんですね。

なぜtail -fコマンドを実行させるのかというと、①一回テキストファイルに出力する②それをtail -fを用いてターミナル等に表示させる。

そもそも先生の異常なまでの tail -f 愛のせいで、非常に虚無なことをさせるのが良くないとおもう。

当時の自分のPCはただのWindowsCygwinとか今となってはUbuntu on Bash on Windowsとか使えば多分tail -fできるけど*1。 ということでWindowsでtail -f的なことができないか探してみました。

Windowsでもtail -f はできる

調べてみたら死ぬほどページがヒットしたから、書く必要もないかもしれないけれど……Windows10(64bit)環境だからね!

例えば、

qiita.com

tech.guitarrapc.com

ここでPowerShellの初体験です。[Win]+Rだったり、タスクバーの検索だったりからpowershellと検索すると出てきます。以下手順。

PowerShellのバージョン確認

Windows PowerShell
PS> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.16299.248
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.248
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

ここのPSVersionのValueが3.0以上だったらいいらしい。Windows10だとたぶん5.0以上だから大丈夫

以下のコマンドを実行

PS > Get-Content -Path [ファイル名] -Wait -Tail [読み込む行数]

でもこれ正直めんどくさい……でも大丈夫です。 Get-Content にはエイリアス*2で、cat type gcが登録されているので、以下でOK(少なくとも自分は満足できる感じに動いた)

PS > cat [ファイル名] -wait

これなら楽でしょう?

参考は以下など

FileSystem の Get-Content

どういうことなんだろ

Get-Content コマンドレットはテキストファイルの読み取りのコマンドらしい。

-Waitでは一秒ごとに更新し、 -Tail hogeは最後からhoge行読み取る。でも結局更新してるので全部読み取る?

PowerShellとかもっと詳しくなると面白くなりそうとは思ったけど、知識不足過ぎた。いちおうこれで切り抜けられたので、誰かの参考になればいいとは思ってる。

文章って書くの難しいね!というのが感想ですね

*1:未検証

*2:合言葉みたいなもの、だと思ってる。