.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2000 by Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Created, 14 Dec 2000 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH basename 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ basename, dirname \- разделяет путь на компоненты .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBchar *dirname(char *\fP\fIpath\fP\fB);\fP \fBchar *basename(char *\fP\fIpath\fP\fB);\fP .fi .SH ОПИСАНИЕ Warning: there are two different functions \fBbasename\fP(); see below. .PP The functions \fBdirname\fP() and \fBbasename\fP() break a null\-terminated pathname string into directory and filename components. In the usual case, \fBdirname\fP() returns the string up to, but not including, the final \[aq]/\[aq], and \fBbasename\fP() returns the component following the final \[aq]/\[aq]. Trailing \[aq]/\[aq] characters are not counted as part of the pathname. .PP Если \fIpath\fP не содержит косую черту, то \fBdirname\fP() возвращает строку «.», а \fBbasename\fP() возвращает копию \fIpath\fP. Если строка \fIpath\fP равна «/», то \fBdirname\fP() и \fBbasename\fP() возвращают строку «/». Если значение \fIpath\fP равно указателю null или указывает на пустую строку, то \fBdirname\fP() и \fBbasename\fP() возвращают строку «.». .PP Если объединить строку, возвращаемую \fBdirname\fP(), «/» и строку, возвращаемую \fBbasename\fP(), то получится первоначальный путь. .PP Функции \fBdirname\fP() и \fBbasename\fP() могут изменить содержимое \fIpath\fP, поэтому желательно передавать копию строки при их вызове. .PP Данные функции могут возвращать указатели на статически выделенную память, которая может измениться при последующих вызовах. Или же они могут возвращать указатель на часть \fIpath\fP, поэтому строка, на которую ссылается \fIpath\fP, не должна изменяться или освобождаться до тех пор, пока указатель, возвращаемый функцией, станет ненужным. .PP В следующих примерах (взяты из SUSv2) показаны строки, возвращаемые \fBdirname\fP() и \fBbasename\fP() для различных путей: .RS .TS lb lb lb l l l l. путь dirname basename /usr/lib /usr lib /usr/ / usr usr . usr / / / \&. . . \&.. . .. .TE .RE .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Функции \fBdirname\fP() и \fBbasename\fP() возвращают указатели на строки, оканчивающиеся null (не передавайте эти указатели \fBfree\fP(3)). .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBbasename\fP(), \fBdirname\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH ВЕРСИИ Существует две различные версии \fBbasename\fP() — версия POSIX, описанная выше, и версия GNU, которая описана далее .PP .in +4n .EX \fB #define _GNU_SOURCE\fP /* смотрите feature_test_macros(7) */ \fB#include \fP .EE .in .PP Версия GNU никогда не изменяет свои аргументы и возвращает пустую строку, если \fIpath\fP оканчивается символом косой черты, а в частности, если значение равно «/». Версии GNU для \fBdirname\fP() не существует. .PP Если в исходный код включён файл \fI\fP, то из glibc используется версия \fBbasename\fP(), описанная в POSIX, иначе — версия GNU. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH ДЕФЕКТЫ Функции версии POSIX, реализованные в glibc, изменяют аргумент \fIpath\fP, что приводит к ошибки сегментации при их вызове со статической строкой вида «/usr/». .PP Before glibc 2.2.1, the glibc version of \fBdirname\fP() did not correctly handle pathnames with trailing \[aq]/\[aq] characters, and generated a segfault if given a NULL argument. .SH ПРИМЕРЫ Следующий пример кода демонстрирует использование \fBbasename\fP() и \fBdirname\fP(): .in +4n .EX 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\en", dname, bname); .EE .in .SH "СМ. ТАКЖЕ" \fBbasename\fP(1), \fBdirname\fP(1) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Artyom Kunyov , Azamat Hackimov , Dmitriy Ovchinnikov , Dmitry Bolkhovskikh , ITriskTI , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .