このページの本文へ

前へ 1 2 次へ

Windows Info 第439回

今更more.comを使うのか!? Windowsでのページングを考える

2024年07月10日 12時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

PowerShellには組み込みのページャーがある

 PowerShell/Windows PowerShellには組み込みのページャーがある。パイプラインの最後に「Out-Host -Paging」付けることでページングがなされる。ただし、筆者の環境では、コマンド実行時のEnterキーを取ってしまうのか、最初のページのみ、1回Enterキーが入力された状態になり、ちょっとバグっぽい(最新版でも、言語を英語にしても同じ)。

 とはいえ、ちょっと見にくいだけであり、なんと言っても標準機能なのでインストールしないで利用でき、PowerShell/Windows PowerShell文字エンコード(Unicode)に対応している。トラブル対策に覚えておきたい。

 また、以前にも以下の記事で解説したが(「コマンドの出力が長いとき、PowerShellではとりあえずselect-objectでなんとかする」)、Out-GridViewを使うと、別ウィンドウにパイプラインを出力できる。ファイルを表示させる場合には、

Get-Content .\less.man | Out-GridView

などとして、ファイル内容をGet-Contentコマンドで取り出して、Out-GridViewに入れてやる。

 PowerShellとWindows PowerShellでは、「more」の扱いが異なる。Windows PowerShell(Ver.5.1.22621.3672)では、「more」は、組み込みの関数になっているが、内部でmore.comを呼んでいる。

ページャー

Windows PowerShellでは、moreは関数(Function)として定義されている。しかし、その中でmore.comを呼び出して使っている

 PowerShell(ここでは、Ver.7.4.3を使った)では、「more」は、more.comを意味する。これは、「get-command more」で調べるとわかる。

ページャー

PowerShellでは、moreは、more.comである。ただし、標準搭載のhelp関数が内部でmore.comを使っていて、環境変数$env:PAGERで指定したページャープログラムに差し替え可能だ。逆に言えば、環境変数$env:PAGERを指定しない場合、more.comが使われる

 どちらの場合でも、more.comと指定することで、「C:\Windows\System32\more.com」が起動する。

 PowerShellでは、HELPコマンド(HELP関数)が内部的にmore.comを利用している。内部をみると、環境変数PAGERにコマンドを指定すれば、これをページャーとして利用するようだ。

 more.comの場合にless.exeを使いたい場合、手っ取り早いのは、「more」のエイリアスとしてless.exeを指定することだ。また、HELPコマンド向けとして環境変数PAGERにもless.exeを指定する。どちらの場合もless.exeに対するPATH設定は行われていると仮定している。以下の2行をプロファイルで指定しておくといいだろう。

set-alias -Name more -Value less.exe
$env:PAGER=less.exe

 これで、「dir | more」などとすると、lessでページングされる。なお、moreの後ろにオプションを付けることもできる。たとえば行番号をつけたいなら「dir | more -n」などとする。

 moreやlessは、テキストファイルの中身をのぞくのに使うため、利用頻度も低くない。1回less.exeを使うように環境整備しておくと、作業効率が改善する。ファイルパスの補完と組み合わせて、短時間で確認できる。いちいちメモ帳を開くことも必要なくなる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン