basename(3) - wariua/manpages-ko GitHub Wiki

NAME

basename, dirname - ๊ฒฝ๋กœ๋ช… ์š”์†Œ ํŒŒ์‹ฑ ํ•˜๊ธฐ

SYNOPSIS

#include <libgen.h>

char *dirname(char *path);

char *basename(char *path);

DESCRIPTION

์ฃผ์˜: ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ basename() ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์•„๋ž˜ ์ฐธ๊ณ .

dirname() ๋ฐ basename() ํ•จ์ˆ˜๋Š” ๋„๋กœ ๋๋‚˜๋Š” ๊ฒฝ๋กœ๋ช… ๋ฌธ์ž์—ด์„ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ถ€๋ถ„๊ณผ ํŒŒ์ผ๋ช… ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๋ณดํ†ต ๊ฒฝ์šฐ์— dirname()์€ ๋งˆ์ง€๋ง‰ '/' ์ „๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  basename()์€ ๊ทธ ๋งˆ์ง€๋ง‰ '/' ๋‹ค์Œ ๋ถ€๋ถ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋์— ๋ถ™์€ '/' ๋ฌธ์ž๋Š” ๊ฒฝ๋กœ๋ช…์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.

path ์•ˆ์— ์Šฌ๋ž˜์‹œ๊ฐ€ ์—†์œผ๋ฉด dirname()์€ ๋ฌธ์ž์—ด "."์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  basename()์€ path์˜ ์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. path๊ฐ€ ๋ฌธ์ž์—ด "/"์ด๋ฉด dirname()๊ณผ basename() ๋ชจ๋‘ ๋ฌธ์ž์—ด "/"๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. path๊ฐ€ ๋„ ํฌ์ธํ„ฐ๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฉด dirname()๊ณผ basename() ๋ชจ๋‘ ๋ฌธ์ž์—ด "."๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

dirname()์ด ๋ฐ˜ํ™˜ํ•œ ๋ฌธ์ž์—ด, "/", basename()์ด ๋ฐ˜ํ™˜ํ•œ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ด๋ฉด ์™„์ „ํ•œ ๊ฒฝ๋กœ๋ช…์ด ๋‚˜์˜จ๋‹ค.

dirname()๊ณผ basename()์—์„œ path์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ด ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์‚ฌ๋ณธ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒŒ ๋ฐ”๋žŒ์งํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด ํ•จ์ˆ˜๋“ค์ด ์ •์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด์–ด์ง€๋Š” ํ˜ธ์ถœ์—์„œ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฎ์–ด ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜๋Š” path์˜ ์ผ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ๋”๋Š” ํ•„์š”์น˜ ์•Š๊ฒŒ ๋  ๋•Œ๊นŒ์ง€๋Š” path๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

(SUSv2์—์„œ ๊ฐ€์ ธ์˜จ) ๋‹ค์Œ ์˜ˆ์‹œ ๋ชฉ๋ก์€ ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด dirname()๊ณผ basename()์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ณด์—ฌ ์ค€๋‹ค.

๊ฒฝ๋กœ dirname basename
/usr/lib /usr lib
/usr/ / usr
usr . usr
/ / /
. . .
.. . ..

RETURN VALUE

dirname()๊ณผ basename() ๋ชจ๋‘ ๋„ ์ข…๋ฃŒ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์ด ํฌ์ธํ„ฐ๋ฅผ free(3)๋กœ ์ „๋‹ฌํ•ด์„  ์•ˆ ๋œ๋‹ค.)

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
basename(), dirname() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

๋‘ ๊ฐ€์ง€ ์„œ๋กœ ๋‹ค๋ฅธ basename() ๋ฒ„์ „์ด ์žˆ๋‹ค. ์œ„์—์„œ ๊ธฐ์ˆ ํ•œ POSIX ๋ฒ„์ „, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์–ป๋Š” GNU ๋ฒ„์ „์ด๋‹ค.

#define _GNU_SOURCE         /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <string.h>

GNU ๋ฒ„์ „์—์„œ๋Š” ์ ˆ๋Œ€ ์ธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉฐ path ๋์— ์Šฌ๋ž˜์‹œ๊ฐ€ ์žˆ์„ ๋•Œ, ํŠนํžˆ path๊ฐ€ "/"์ผ ๋•Œ์—๋„ ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. dirname()์˜ GNU ๋ฒ„์ „์€ ์—†๋‹ค.

glibc์—์„œ๋Š” <libgen.h>๋ฅผ ํฌํ•จํ•˜๋ฉด POSIX ๋ฒ„์ „ basename()์„ ์–ป๊ณ  ์•„๋‹ˆ๋ฉด GNU ๋ฒ„์ „์„ ์–ป๋Š”๋‹ค.

BUGS

glibc ๊ตฌํ˜„์—์„œ ์ด ํ•จ์ˆ˜๋“ค์˜ POSIX ๋ฒ„์ „์ด path ์ธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉฐ, "/usr/" ๊ฐ™์€ ์ •์  ๋ฌธ์ž์—ด๋กœ ํ˜ธ์ถœ ์‹œ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

glibc 2.2.1 ์ „์—์„œ dirname()์˜ glibc ๋ฒ„์ „์ด ๋์— '/' ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋ช…์„ ์˜ฌ๋ฐ”๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ์œผ๋ฉฐ NULL ์ธ์ž๋ฅผ ์ฃผ๋ฉด ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

EXAMPLE

๋‹ค์Œ ์ฝ”๋“œ ์กฐ๊ฐ์€ basename() ๋ฐ dirname() ์‚ฌ์šฉ ๋ฐฉ์‹์„ ๋ณด์—ฌ ์ค€๋‹ค.

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);

SEE ALSO

basename(1), dirname(1)


2019-03-06

โš ๏ธ **GitHub.com Fallback** โš ๏ธ