dirname 中文man页面

系统
dirname 和 basename 把 以 null 结尾 的 路径名 分解为 目录 和 文件名. 一般情况下, dirname 返回 路径名 的 前面部分, 直到 (但不包括) 最后一个 '/', 而 basename 则 返回 最后一个 '/' 后面 的 内容. 如果 路径名 以 '/' 结尾, 该 '/' 被认为 不是 路径名 的 一部分.

NAME

dirname, basename - 分析路径成员

总览 (SYNOPSIS)

#include <libgen.h>

char *dirname(char *path);
char *basename(char *path);

描述 (DESCRIPTION)

dirnamebasename 把 以 null 结尾 的 路径名 分解为 目录 和 文件名. 一般情况下, dirname 返回 路径名 的 前面部分, 直到 (但不包括) 最后一个 '/', 而 basename 则 返回 最后一个 '/' 后面 的 内容. 如果 路径名 以 '/' 结尾, 该 '/' 被认为 不是 路径名 的 一部分.

如果 路径名 path 不包含 斜杠 '/', dirname 返回 字符串 ".", 而 basename 返回 path 的 副本. 如果 路径名 path 是 "/", 则 dirnamebasename 均 返回 "/". 如果 路径名 path 是 NULL 指针 或 指向 空串, 则 dirnamebasename 均 返回 ".".

dirname 返回的 字符串, "/", 和 basename 返回的 字符串 连接 起来, 能够 产生 一个 完整 的 路径名.

无论 dirname 还是 basename 都 有可能 更改 path 的 内容, 因此 如果 需要 保护 原有 路径名, 应该 传送 副本 作为 参数. 此外, dirnamebasename 返回的 指针 可能 指向 一块 静态分配 的 内存, 会被 下次 调用 覆盖.

下面 的 例子 (摘自 SUSv2) 展示了 对于 不同的 路径名, dirnamebasename 返回 的 字符串:

path            dirname         basename
"/usr/lib"      "/usr"          "lib"
"/usr/"         "/"             "usr"
"usr"           "."             "usr"
"/"             "/"             "/"
"."             "."             "."
".."            "."             ".."

示例 (EXAMPLE)

char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";

dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);
free(dirc);
free(basec);

返回值 (RETURN VALUE)

dirnamebasename 均 返回 以 null 结尾的 字符串 的 指针.

BUGS

在 glibc 的 各个 版本 中, 直到 (并包括) 2.2.1, dirname 无法 正确 处理 以 '/' 字符 结尾 的 路径名. 如果 参数 是 NULL 指针, 他 还会 产生 段冲突 (segmentation violation).

遵循 (CONFORMING TO)

SUSv2

另见 (SEE ALSO)

dirname(1), basename(1)

  #p#

NAME

dirname - strip non-directory suffix from file name  

SYNOPSIS

dirname NAME
dirname OPTION  

DESCRIPTION

Print NAME with its trailing /component removed; if NAME contains no /'s, output `.' (meaning the current directory).

--help
display this help and exit
--version
output version information and exit

AUTHOR

Written by David MacKenzie and Jim Meyering.  

REPORTING BUGS

Report bugs to <bug-coreutils@gnu.org>.  

COPYRIGHT

Copyright © 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

SEE ALSO

The full documentation for dirname is maintained as a Texinfo manual. If the info and dirname programs are properly installed at your site, the command

info coreutils dirname

should give you access to the complete manual.

责任编辑:韩亚珊 来源: CMPP.net
相关推荐

2011-08-12 09:44:37

dirname中文man

2011-08-24 16:48:36

man中文man

2011-08-15 10:21:09

man中文man

2011-08-11 16:11:49

at中文man

2011-08-25 10:21:56

man.conf中文man

2011-11-01 13:46:50

中文mantac

2011-08-25 16:55:26

gets中文man

2011-08-25 15:49:02

freopen中文man

2011-08-25 16:00:56

fflush中文man

2011-08-25 16:08:55

fsetpos中文man

2011-08-25 15:33:18

exit中文man

2011-08-24 17:19:00

raw中文man

2011-08-25 10:55:37

services中文man

2011-08-25 09:35:26

units中文man

2011-08-24 13:57:35

DECLARE中文man

2011-08-11 15:28:43

ali中文man

2011-08-23 17:24:11

userdel中文man

2011-08-23 17:33:22

rdev中文man

2011-08-23 18:05:21

ABORT中文man

2011-08-18 19:15:25

group中文man
点赞
收藏

51CTO技术栈公众号