Encuentra el nombre de la carpeta actual en Bash

MD Aminul Islam 20 junio 2023
Encuentra el nombre de la carpeta actual en Bash

Encontrar un directorio es muy fácil a través del script Bash. Pero encontrar el nombre exacto de la carpeta del directorio en el que se encuentra ahora es un poco complejo.

Este artículo presentará tres formas de encontrar el nombre de la carpeta del directorio en este artículo. Además, veremos ejemplos y explicaciones necesarias para facilitar el tema.

Encuentra el nombre de la carpeta actual en Bash

Usaremos una palabra clave especial para este propósito: PWD. Esta palabra clave incorporada en Bash se usa para encontrar el directorio de trabajo actual.

En nuestro ejemplo a continuación, encontraremos el nombre de la carpeta donde estamos ahora. El código para nuestro ejemplo se verá como el siguiente.

current_dir=${PWD##*/}
echo "$current_dir"

Arriba está la forma más fácil de hacer la tarea. Pero nuestro siguiente ejemplo es un poco complejo.

Encontraremos el nombre de la carpeta usando el siguiente ejemplo.

Current_Dir=${PWD##*/}
Current_Dir=${Current_Dir:-/}
printf '%s\n' "${PWD##*/}"
printf '%q\n' "${PWD##*/}"

En el ejemplo anterior, asignamos una variable con la línea Current_Dir=${PWD##*/} y a través de la línea Current_Dir=${Current_Dir:-/} corregimos el caso donde el PWD=/ .

Después de eso, puede usar cualquiera de las líneas de las siguientes dos líneas. Ambas líneas se imprimirán en stdout.

Pero la primera línea es más robusta que el echo para algunos nombres inusuales donde la segunda se cita para usar como entrada de shell, y también es útil para hacer legibles los caracteres ocultos. Después de ejecutar el script anterior, obtendrá solo el nombre de la carpeta del directorio actual.

También podemos realizar una tarea similar a través de nuestro ejemplo a continuación. Aquí tomamos todo el directorio en una variable.

El código para nuestro próximo ejemplo es algo como el siguiente.

DirectoryStr=/path/to/somewhere//
shopt -s extglob
CurrentDir=${DirectoryStr%%+(/)}
CurrentDir=${CurrentDir##*/}
CurrentDir=${CurrentDir:-/}
printf '%s\n' "$CurrentDir"

Expliquemos este ejemplo parte por parte.

  1. En la primera línea, creamos una variable y le asignamos la ruta al directorio como una cadena.
  2. Luego, a través de la línea shopt -s extglob, habilitamos la sintaxis del glob +(...).
  3. A través de la línea CurrentDir=${DirectoryStr%%+(/)}, recortamos la cadena sin importar cuántas barras diagonales existen en la cadena.
  4. A través de la línea CurrentDir=${CurrentDir##*/}, eliminamos todo lo anterior al último /.
  5. Acabamos de corregir el caso del directorio a través de la línea CurrentDir=${CurrentDir:-/}.
  6. Por último, acabamos de imprimir la carpeta del directorio.

Todos los códigos utilizados en este artículo están escritos en Bash. Solo funcionará en el entorno Linux Shell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Bash Directory