ヒストリを出力する
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をすべて止めてから置き換える。
履歴機能を使うと、似たようなコマンドを編集で入力できるため、キーストロークを減らすことができる。コマンドラインの補完やエイリアスと合わせて使えば、利用中のキーストロークをかなり減らせる。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第531回
PC
Windowsのコンソール上でUnix/Linuxの標準的なコマンドを動かす「Windows CoreUtils」 -
第530回
PC
Windows 11でタスクバーの位置の移動機能が復活するのは結局どうなった? プレビュー版の現状を見る -
第529回
PC
Windowsの標準スクリプト言語であるPowerShellの現状をあらためて紹介する -
第528回
PC
Windows 11の標準機能でメモリに問題がないかを診断する -
第527回
PC
Windowsがクラッシュする原因を究明する方法 AIを活用すると結構早い -
第526回
PC
今年6月にPCが起動しなくなる心配はないが、セキュアブートが機能しないとWindowsのセキュリティ機能は一部使えなくなる -
第525回
PC
6月以降「PCが起動不可能に?」と間違った騒がれ方をしている原因の「セキュアブート」とは? -
第524回
PC
Windows Insider Programが変化 チャンネルが3つになって整理される -
第523回
PC
AI傾倒に一息入れて、既存のWindowsの改良を宣言するMicrosoft タスクバーを画面の上下左右に移動可能に!? -
第522回
PC
Windowsでも完全キーボード操作派は注目! PowerToysのコマンドパレット -
第521回
PC
Windowsでアプリをインストールしたときに警告が表示する「Defender SmartScreen」と「Smart App Control」 - この連載の一覧へ











