dirname コマンド

目的

指定されたパスの最後の部分を除いた部分をすべて標準出力に出力します。

構文

dirname Path

説明

dirname コマンドは、指定されたパス名を読み取り、最後の / (スラッシュ) を除くすべてと、その後ろの文字を削除し、結果を標準出力に書き出します。 最後の / の後ろに文字がなければ、dirname コマンドは最後の / の 1 つ手前の / を使用し、その後ろに続くすべての文字を無視します。 dirname コマンドでは、次の規則に従ってパス名を作成します。

  1. Path パラメーターが // (2 つのスラッシュ) の場合、 または Path パラメーターがスラッシュ文字のみで構成される場合は、 その文字列を単一の / (スラッシュ) に変更します。ステップ 2 から 7 までをスキップします。
  2. 指定されたパスから末尾の / を除去します。
  3. Path パラメーター内に / 文字が残っていなければ、 パスを単一の(ピリオド) に変更します。ステップ 4 から 7 までスキップします。
  4. パスから、スラッシュ以外の末尾の文字を除去します。
  5. 残りのパスが // (2 つのスラッシュ) であれば、 ステップ 6 に進みます。
  6. パスから末尾の / 文字を除去します。
  7. 残りのパスが空であれば、そのパスを単一の / に変更します。

例えば、次のように入力すると、


dirname // 

結果は単一の / (スラッシュ) となります。次のように入力します。


dirname /a/b/ 

結果は /a となります。次のように入力します。


dirname a 

結果は単一の . (ピリオド) となります。次のように入力します。


dirname a/b 

結果はパス名 a となります。

一般に dirname コマンドと basename コマンドは、シェル・プロシージャー内のコマンド置換の中で、指定した入力ファイルの名前に何らかの変更を加えた出力ファイルの名前を指定する目的で使用されます。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

別のファイルと同じディレクトリーにあるファイルの名前を作成するには、次のように入力します。

AOUTFILE=`dirname $TEXTFILE`/a.out

これによって、シェル変数 AOUTFILE が、 TEXTFILE と同じディレクトリーにある、 a.out ファイルの名前に設定されます。TEXTFILE/home/fran/prog.c である場合は、 dirname $TEXTFILE の値は、 /home/fran で、AOUTFILE は、 /home/fran/a.out になります。

ファイル

項目 説明
/usr/bin/dirname dirname コマンドが入っています。