はじめに
小ネタです。
いろんな言語やツールのチュートリアルを読み進めていると、 必ずと言っていいほど書かれているコマンドのセットがあります。
それが mkdir と cd 。
例えば「チュートリアル用の作業ディレクトリを使って」といった処理の場合に以下のように 2 つのコマンドがセットで記述されます。
| |
毎度のことながらこのような処理をスクリプトに起こした場合、気になってしまうこと。 それは DRY ( 繰り返しを避ける ) ではないという点。
/home/genzouw/sample-app というディレクトリ名が 2 回登場しています。
これを回避するために 変数 を利用する事もできます。
| |
より簡潔な記述方法を紹介します。
検証環境
| |
「ディレクトリ作成 → 移動」を行う DRY なワンライナー
結論から言います。
以下のワンライナーで実現できます。
| |
ポイントは 2 点です。
mkdir -pコマンドを利用する$_変数を利用する
一つ一つ解説していきます。
1. mkdir -p コマンドを利用する
過去のエントリ( “mkdir”コマンドでディレクトリを作成する際には存在チェックはしなくても良い | ゲンゾウ用ポストイット )で取り上げていますが、 mkdir コマンドは -p オプションを使用すると以下のような挙動になります。
- ディレクトリ作成の際に親ディレクトリがなかった場合、自動的に作成してくれる
- ディレクトリが既に存在していた場合でもエラーとならない
2. $_ 変数を利用する
$_ という特殊な変数があります。
$_ は直前に実行されたコマンドの最後の引数が格納されます。
試してみます。
| |
今回のワンライナーでは、 mkdir -p /home/genzouw/sample-app コマンドを実行したため、 $_ 変数を参照すると /home/genzouw/sample-app という値が格納されています。
cd $_ で cd /home/genzouw/sample-app と同じ結果が得られます。
ひとこと
セットアップスクリプトを作成する際に活用できるのではないでしょうか?