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

この連載の記事
-
第523回
PC
AI傾倒に一息入れて、既存のWindowsの改良を宣言するMicrosoft タスクバーを画面の上下左右に移動可能に!? -
第522回
PC
Windowsでも完全キーボード操作派は注目! PowerToysのコマンドパレット -
第521回
PC
Windowsでアプリをインストールしたときに警告が表示する「Defender SmartScreen」と「Smart App Control」 -
第520回
PC
WindowsターミナルのPreview版 v1.25では「操作」設定に専用エディタが導入 -
第519回
PC
「セキュアブート」に「TPM」に「カーネルDMA保護」、Windowsのセキュリティを整理 -
第518回
PC
WindowsにおけるUAC(ユーザーアカウント制御)とは何? 設定は変えない方がいい? -
第517回
PC
Windows 11の付箋アプリはWindowsだけでなく、スマホなどとも共有できる -
第516回
PC
今年のWindows 11には26H2以外に「26H1」がある!? 新種のCPUでのAI対応の可能性 -
第515回
PC
そもそも1キロバイトって何バイトなの? -
第514回
PC
Windows用のPowerToysのいくつかの機能がコマンドラインで制御できるようになった -
第513回
PC
Gmailで外部メール受信不可に! サポートが終わるPOPってそもそも何? - この連載の一覧へ











