Dirname

dirnameは標準UNIXコンピュータプログラムである。dirnameはパス名を与えると、その最後にあるスラッシュ ('/') 文字で始まる接尾辞を削除したものを結果として返す。dirnameSingle 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年版「シェル及びユーティリティ」
Unixコマンド
ファイルとファイルシステム管理
プロセス管理
ユーザ管理/環境
テキスト処理
  • awk
  • banner
  • basename
  • comm(英語版)
  • csplit(英語版)
  • cut
  • diff
  • dirname
  • ed
  • ex(英語版)
  • fmt
  • fold(英語版)
  • head
  • iconv
  • join(英語版)
  • less
  • m4
  • more
  • nkf
  • nl
  • paste(英語版)
  • patch
  • printf(英語版)
  • read(英語版)
  • sed
  • sort
  • spell(英語版)
  • strings
  • tail
  • tr
  • troff
  • uniq
  • vi
  • wc
  • xargs
  • yes
シェルビルトイン
通信
検索
  • find
  • grep
  • locate(英語版)
  • whatis(英語版)
  • whereis(英語版)
マニュアル
  • apropos(英語版)
  • help(英語版)
  • man
ソフトウェア開発
その他
  • bc
  • dc
  • cal
  • date
  • expr
  • false
  • lp(英語版)
  • lpr
  • od
  • sl
  • sleep
  • stty
  • true
  • tty