このページの本文へ

前へ 1 2 次へ

Windows Info 第474回

Windowsでのコマンドラインのヒストリ機能

2025年03月23日 10時00分更新

文● 塩田紳二 編集● ASCII

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

ヒストリを出力する

 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をすべて止めてから置き換える。

 履歴機能を使うと、似たようなコマンドを編集で入力できるため、キーストロークを減らすことができる。コマンドラインの補完やエイリアスと合わせて使えば、利用中のキーストロークをかなり減らせる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ

デジタル用語辞典

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