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を呼んでいる。
PowerShell(ここでは、Ver.7.4.3を使った)では、「more」は、more.comを意味する。これは、「get-command more」で調べるとわかる。
どちらの場合でも、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を使うように環境整備しておくと、作業効率が改善する。ファイルパスの補完と組み合わせて、短時間で確認できる。いちいちメモ帳を開くことも必要なくなる。
この連載の記事
-
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る -
第446回
PC
Windows 11のフォトアプリがUWPからWin32アプリになったことで今更わかるUWPの問題点 -
第445回
PC
次期Windows 11ではAndroidのファイルをエクスプローラーからアクセス可能になる -
第444回
PC
外部ファイルをExcelに読み込む際の作業を効率化するPower Queryの活用 -
第443回
PC
Windows Terminalで採用されたCascadia Codeフォントを使うとプログラムを書くとき断然見やすい -
第442回
PC
Copilot+ PCで実現されるローカル推論で「対クラウド企業」を指向するMicrosoft - この連載の一覧へ