dirname コマンドは、指定した ファイルパスからファイル名部分を取り除き、ディレクトリパスのみを表示 するコマンドです。
シェルスクリプトでファイルの配置先ディレクトリを取得するときによく利用されます。
構文(Syntax)
dirname パス
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | パスからディレクトリ部分を出力 | dirname /home/user/file.txt |
-z | 出力の区切りを改行ではなく NUL にする | dirname -z /home/user/file.txt |
--help | ヘルプを表示 | dirname --help |
--version | バージョン情報を表示 | dirname --version |
実行例
ディレクトリ部分を取得
dirname /home/user/file.txt
出力:
/home/user
カレントディレクトリを指す場合
dirname file.txt
出力:
複数階層のパスから取得
dirname /var/log/nginx/access.log
出力:
/var/log/nginx
区切りを NUL にする(パイプ処理向け)
dirname -z /etc/hosts | xargs -0 echo
出力:
/etc
エラー例(引数なし)
dirname
出力例:
dirname: missing operand
Try 'dirname --help' for more information.
関連コマンド
basename: パスからファイル名部分を取得pwd: カレントディレクトリを表示realpath: 絶対パスを表示readlink: シンボリックリンクの実体パスを表示
備考
dirnameは GNU Coreutils に含まれていますが、多くのシェルではパラメータ展開(${var%/*})を使って同等の処理が可能です。- パスが
/の場合は/を返し、ファイル名のみの場合は.を返します。 - スクリプトでよく使われるパターン:
DIR="$(dirname "$0")"→ 実行中スクリプトのディレクトリを取得する方法
参考
- manページ: man7.org dirname(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント