シェルスクリプトを書いていると、カレントディレクトリ名は必要だが、
pwdコマンドから返される完全なパスは必要ないことがよくある。本稿では、カレントディレクトリだけを抜き出す方法を4通り紹介する。
basenameを使う
basenameコマンドは、カレントディレクトリ名を抜き出す最も簡単で単純な方法だ。
basename /usr/local/bin bin
ただし、ディレクトリ変数を使うシェルスクリプトでは、この方法は役に立たない。この場合は、pwdをバッククォート(`)で囲んでbasenameと併用することで、変数に対応できる。
cd /usr/local/bin basename `pwd` bin
echoとパラメータ置換を使う
bashスクリプト言語は、変数を操作したり拡張したりできるパラメータ置換などの心憎いトリックを満載している。${var##pattern}構文のパラメータ置換を使うと、$varから、$varの先頭から$patternに一致する最長の部分を削除できる。具体的には、次のように使用する。
cd /var/log/squid
echo ${PWD##*/}
squid
PWDは現在のパスが格納される環境変数であり、##は*/までの間にあるものをすべて削除することを意味する。つまり、最後の/までのすべてが削除されて、最後の文字列1つだけが残る。前の例では、この文字列がカレントディレクトリのsquidである。パラメータ置換やその他の変数の操作方法については、「Advanced Bash-Scripting Guide」に詳しい解説がある。
