Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       basename, dirname - analiza los componentes de un nombre de ruta

SINOPSIS

       #include <libgen.h>

       char *dirname(char *path);

       char *basename(char *path);

DESCRIPCIÓN

       Warning: there are two different functions basename()  - see below.

       Las funciones dirname() y basename() descomponen un nombre de ruta terminado en null en un
       directorio y un nombre de fichero. En el caso habitual, dirname() devuelve la  cadena  que
       precede,  pero no incluye, al último carácter '/', y basename() devuelve el componente que
       sigue al último carácter '/'. Los carácteres '/' del final no se cuentan  como  parte  del
       nombre de ruta.

       Si  path  no contiene una barra, dirname() devuelve la cadena "."  mientras que basename()
       devuelve una copia de path. Si path es  la  cadena  "/",  entonces  tanto  dirname()  como
       basename  devuelven  la  cadena  "/".  Si  path es un puntero a null o apunta a una cadena
       vacía, entonces tanto dirname() como basename() devuelven la cadena ".".

       Concatenando la cadena devuelta por dirname(), un carácter "/", y la cadena  devuelta  por
       basename() se obtiene el nombre de ruta completo.

       Both dirname()  and basename()  may modify the contents of path, so it may be desirable to
       pass a copy when calling one of these functions.

       These  functions  may  return  pointers  to  statically  allocated  memory  which  may  be
       overwritten by subsequent calls.  Alternatively, they may return a pointer to some part of
       path, so that the string referred to by path should not be modified  or  freed  until  the
       pointer returned by the function is no longer required.

       La  siguiente  lista  de  ejemplos  (extraídos de SUSv2) muestra las cadenas devueltas por
       dirname() y basename() para diferentes rutas:

              ruta       dirname   basename
              /usr/lib   /usr      lib
              /usr/      /         usr
              usr        .         usr
              /          /         /
              .          .         .
              ..         .         ..

VALOR DEVUELTO

       Both dirname()  and basename()  return pointers to null-terminated strings.  (Do not  pass
       these pointers to free(3).)

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

       ┌──────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├──────────────────────┼────────────────────┼───────────────────┤
       │basename(), dirname() │ Seguridad del hilo │ Multi-hilo seguro │
       └──────────────────────┴────────────────────┴───────────────────┘

CONFORME A

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

NOTAS

       There  are  two different versions of basename()  - the POSIX version described above, and
       the GNU version, which one gets after

               #define _GNU_SOURCE         /* Véase feature_test_macros(7) */
           #include <string.h>

       The GNU version never modifies its argument, and returns the empty string when path has  a
       trailing  slash,  and  in  particular  also  when  it  is "/".  There is no GNU version of
       dirname().

       With glibc, one gets the POSIX version of basename()  when <libgen.h> is included, and the
       GNU version otherwise.

ERRORES

       In  the  glibc  implementation,  the  POSIX  versions  of  these functions modify the path
       argument, and segfault when called with a static string such as "/usr/".

       Before glibc 2.2.1, the glibc version of dirname()  did  not  correctly  handle  pathnames
       with trailing '/' characters, and generated a segfault if given a NULL argument.

EJEMPLOS

       The following code snippet demonstrates the use of basename()  and 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);

VÉASE TAMBIÉN

       basename(1), dirname(1)

COLOFÓN

       Esta  página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una
       descripción del proyecto, información sobre cómo informar errores y la última  versión  de
       esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La  traducción  al  español  de  esta  página del manual fue creada por Miguel Pérez Ibars
       <mpi79470@alu.um.es>

       Esta traducción es documentación libre; lea  la  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  o posterior con respecto a las condiciones de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta  página  del  manual,  envíe  un  correo
       electrónico a debian-l10n-spanish@lists.debian.org ⟨⟩.