コマンドラインでコマンドを実行すると、長い出力が出てしまうことが多い。この問題は、コンピューターがまだ機械式端末装置などで印字出力をしていたときからの問題なので、さまざまな解決策が用意されている。今回はその対策を解説する。
まずは基本的となる対策
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が出力される。
この連載の記事
-
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ - この連載の一覧へ