ヒストリを出力する
PSReadLineヒストリには、組み込みヒストリのように履歴一覧を表示するコマンドがない。このため、ヒストリ項目の一覧を見るには、Get-Contentコマンドを使う。
Get-Content (Get-PSReadLineOption).HistorySavePath
なお、Get-Contentには、「-First 行数」、「-Last 行数」のオプションが利用でき、ファイルの一部だけを取り出すことが可能。たとえば、最新から10個前のヒストリ項目までを表示したければ、
Get-Content (Get-PSReadLineOption).HistorySavePath -Last 10
とする。
また、PSReadLineヒストリには、重複項目を呼び出さないオプションはあるが、bashのように重複項目を登録しないというオプションがない。保存先のテキストファイルには、重複するヒストリ項目が含まれることになる。これを削除することで、保存先テキストファイルを圧縮できる。
順番が変わってもいいのであれば、「Sort-Object -Uniq」が利用できるが、記録順を保持したまま重複行を削除するには、WSL側にあるtrとawkを使って
get-Content (Get-PSReadLineOption).HistorySavePath | wsl.exe -- tr -d \\d `| --% awk '!a[$0]++ {print}'
とすることで重複項目を除去したテキストが得られる。trはWindowsの行末記号であるCR+LFをLinux標準のLFのみに変換している。後続のawkで重複行を探して出力させないようにしている。
awkの前の「--%」はawkコマンドをPowerShellが解釈しないようにするための「停止解析トークン(stop-parsing token)」(https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.5#the-stop-parsing-token)である。
ヒストリを記憶するテキストファイルは、PowerShellでコマンドを実行するたびに書き込みが発生するため、適当なファイルに保存して、PowerShellをすべて止めてから置き換える。
履歴機能を使うと、似たようなコマンドを編集で入力できるため、キーストロークを減らすことができる。コマンドラインの補完やエイリアスと合わせて使えば、利用中のキーストロークをかなり減らせる。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











