コマンドラインでコマンドを実行すると、長い出力が出てしまうことが多い。この問題は、コンピューターがまだ機械式端末装置などで印字出力をしていたときからの問題なので、さまざまな解決策が用意されている。今回はその対策を解説する。
まずは基本的となる対策
MS-DOS時代からの対策は、more.comコマンドである。more.comは、画面1面分の出力をすると、そこで出力を停止して、キー入力待ちとなる。Unix/Linux系では、その発展型となるlessコマンドもあり、逆方向にスクロールさせることも可能だ。
more.comは、cmd.exeでもPowerShellでも利用できる。どちらも「C:\Windows\System32\more.com」が呼び出される。「.com」を省略してmoreとすることも可能だ。
dir | more
のようにコマンド出力をパイプ記号でmoreコマンドに送り込めばよい。
Unix/Linuxには、head/tailコマンドが用意されている。これらは、先頭のn行/末尾のn行のみを出力するコマンドである。多くのコマンド出力は、一部分、特に先頭や末尾の行だけで十分なことがある。たとえば、コマンドがどんな出力をしているのかを知りたいときなどだ。
Unix/Linuxのhead、tailコマンドは、オプションなしでは、先頭の10行、末尾の10行を出力できる。
ls | head #先頭の10行を出力
ls | tail #末尾の10行を出力
同じ機能は、PowerShellおよびWindows PowerShell(以下、2つを合わせてPowerShell)のSelect-Objectコマンドでもできる。
dir | Select-Object -First 10 #先頭の10行を出力
dir | Select-Object -Last 10 #末尾の10行を出力
コマンドの出力が何行あるのかは、Unix/Linuxならばwcコマンド、PowerShellならばMeasure-Objectコマンドで調べられる。それぞれオプションを付けることで、行数のみを表示できる。
dir | Measure-Object -Line #PowerShell
ls | wc -l #Unix/Linux
PowerShellの場合、利用頻度の高いオブジェクトには「既定のビュー」という自動書式設定があり簡略表示がなされていることには注意したい。
たとえば、dirコマンド(get-childitemのエイリアス)の場合、コンソールで出力するとMode、LastWriteTime、Length、Nameという4つのプロパティしか表示されない。しかし、「dir ファイル」は、System.IO.FileInfoというオブジェクトを出力しており、そこには多数のプロパティがある。これは、System.IO.FileInfoに対して、既定のビューと呼ばれる自動書式が設定されているからだ。
しかし、上記のようにdirコマンドの出力をパイプで渡すと、System.IO.FileInfoオブジェクトが Measure-Objectに渡り、画面で見ているような出力は渡されない。このために、Measure-Objectは、正しくファイルの数を数えることができる。
逆にmoreコマンドは、dirコマンドの画面出力と同じものを受け取る。このため、dirコマンドの表示出力そのままをページ表示できる。
PowerShellではコマンドの出力を「Out-Gridview」コマンドでGUIウィンドウに表示できる。このとき表示されるのもmoreと同じく既定のビューで書式設定されたオブジェクトになる。しかし、以下のようにSelect-Objectコマンドを挟むことで、すべてのプロパティを表示できる(記事冒頭画面)。
dir | Select-Object * | Out-Gridview
PowerShellでは、bashなどと異なり、コマンドはオブジェクトを出力する。どのようなオブジェクトが出ているのかは、Get-Memberコマンドで見ることができる。
dir | Get-Member
dirコマンドの場合、System.IO.FileInfoまたはSystem.IO.DirectoryInfoが出力される。

この連載の記事
-
第407回
PC
2025年以降もWindows 10に延長サポートがある可能性!? 対応ハードを絞る真の本命は次期Windows? -
第406回
PC
Windowsにおける言語設定とは -
第405回
PC
WSLプレビューVer.2.0.7でMirroredネットワーク、DNSトンネリングを試す -
第404回
PC
開発者向けに性能が高い、Windowsの「開発ドライブ」を試す -
第403回
PC
WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す -
第402回
PC
プレビュー版が登場したWSLのVer.2.0 新機能を具体的に見る -
第401回
PC
内部的な改良で便利になったWindows Terminal v1.19での新機能を確認 -
第400回
PC
Windowsにおける音声認識など、ボイス機能を整理 -
第399回
PC
Windowsではプロセスからプログラムに関するさまざまな情報が得られる -
第398回
PC
Windows Subsystem for Androidの進化を確認 エクスプローラーからのファイルのドラッグ&ドロップが可に -
第397回
PC
Windowsにおけるディスク、ドライブ、パーティションの扱いの違い - この連載の一覧へ