dirname
dirname — パス中のディレクトリ名の部分を返す
説明
string dirname ( string path )この関数は、ファイルへのパス名を有する文字列を引数とし、 ディレクトリの名前を返します。
Windows では、スラッシュ(/)とバックスラッシュ (\)の両方がディレクトリ区切り文字として使われます。 その他の環境ではスラッシュ(/)になります。
例 588. dirname()の例
<?php
$path = "/etc/passwd";
$file = dirname($path); // $file は "/etc" にセットされる
?>
注意: PHP4.0.3以降、dirname()は POSIXに準拠するよう変更されました。 これは原則としてpathにスラッシュが無い場合に カレントディレクトリを示すドット('.')が 返されることを意味します。また、戻り値は pathに /componentを付けない形で返されます。 これは、古いPHPではdirname()によって 空文字列が返されるような状況において、スラッシュやドットが 返される場合があることを意味します。
dirname() の動作は PHP 4.3.0 で変更されました。 次の例を確認してください:
<?php
// PHP 4.3.0 以前
dirname('c:/'); // '.' を返す
// PHP 4.3.0 以降
dirname('c:/'); // 'c:' を返す
?>
dirname() は PHP 5.0.0 からバイナリセーフになりました。
basename(), pathinfo(), realpath() も参照ください。
dirname
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 10:15 UTC 版)
ナビゲーションに移動 検索に移動dirnameは標準UNIXコンピュータプログラムである。dirnameはパス名を与えると、その最後にあるスラッシュ ('/'
) 文字で始まる接尾辞を削除したものを結果として返す。dirnameはSingle UNIX Specificationに記述されており主にシェルスクリプトで使われる。
使い方
dirnameのSingle UNIX Specification仕様によると、以下のようなコマンドである。
dirname string
- string
- パス名
例
dirnameは後に続くスラッシュを無視することでパス名からディレクトリパス名を抽出する。
$ dirname /home/carpetsmoker/docs/base.wiki /home/carpetsmoker/docs
$ dirname /home/carpetsmoker/docs/ /home/carpetsmoker
$ dirname base.wiki .
$ dirname / /
パフォーマンス
dirname
は1つのオペランドしか受け入れないので、シェルスクリプトの内部ループ内で使用するとパフォーマンスに有害となる可能性がある。
while read file; do
dirname "$file"
done < some-input
上記の例では入力行ごとにプロセスを呼び出してしまう。このため、通常はシェル置換を代わりに使用する。
echo "${file%/*}";
また処理を必要とする関連パス名も同様である。
if [ -n "${file##*/*}" ]; then
echo "."
else
echo "${file%/*}";
fi
これらの処理は後に続くスラッシュをdirnameとは異なって処理することに注意すること。
関連項目
外部リンク
dirname
: return the directory portion of a pathname – The Open Group基本仕様書第7号2018年版「シェル及びユーティリティ」
|
固有名詞の分類
- Dirnameのページへのリンク