basename i dirname: dos comandaments que hauries de conèixer

terminal shell comandaments Linux

De vegades, alguns tutorials van dirigits a explicar ordres alguna cosa més exòtics i estranys, en canvi, hi ha alguns que inclouen les distribucions de sèrie i no són tan populars com cd, ls, cat, etc., però que són igualment pràctics. En aquest tutorial us mostraré el que es pot fer amb dos d'aquests comandaments: basename i dirname.

Potser a priori et semblin absurds i que no tenen cap utilitat, però tenen aplicacions bastant pràctiques en alguns casos com, per exemple, en els scripts on es necessita extreure alguna part d'una ruta, com el nom de el fitxer o directori perquè un altre ordre operi sobre això ...

Per a què serveixen

Aquestes ordres són molt bàsics, i les seves funcions són:

  • nom de base: Serveix per extreure el nom de el fitxer d'una ruta.
  • nom de dir: Serveix per extreure el nom de directori d'una ruta.

Exemples d'ús

Aquí pots veure alguns Example de com usar-los:

  • Per exemple, per a usar nom de base amb / etc / passwd, i que et torni a la seva sortida el nom de el fitxer, en aquest cas passwd:
basename /etc/passwd

  • També pots especificar una extensió perquè te de el nom de el fitxer sense l'extensió. Per exemple, imagina que vulguis extreure el nom d'una imatge /home/media/prueba.jpg sense l'extensió jpg (retornaria Prova):
basename -s .jpg /home/media/prueba.jpg

  • fins i tot pots processar diverses rutes alhora per separat, per a això has de fer servir l'opció -a:
basename -a /etc/passwd /var/log/boot.log

  • Per fer el contrari, i que et de el nom de directori, sense el nom de el fitxer, llavors has de fer servir nom de dir. Per exemple, si vols usar-lo en la ruta /var/spool/mail/prueba.txt i que et torni / var / spool / mail, llavors usa:
dirname /var/spool/mail/prueba.txt

Quant a una utilitat en un script, Aquí tens un altre exemple. Imagina que tens un script simple, i que en ell hi ha una ruta que és variable. Però vols que mostri el directori que conté un fitxer, sense importar el fitxer, en aquest cas podries tenir alguna cosa com:

pathname="/home/usuario/data/fichero"

result=$(dirname "$pathname")

echo $result

Evidentment, en aquest script el «pathname» seria sempre aquest mateix estàtic declarat per la constant de del principi, però poden donar-se casos en què no ho sigui, i és aquí on es torna pràctic. Per exemple:

/*script para convertir una imagen gif en png*/

#!/bin/sh
for file in *.gif;do
    #Salir si no hay ficheros
    if [! -f $file];then
        exit
    fi
    b='basename $file .gif'
    echo NOW $b.gif is $b.png
    giftopnm $b.gif | pnmtopng >$b.png
done


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Gregorio Ros va dir

    Un bon exemple d'aquestes coses que quan aquestes aprenent veus inútils, però que quan ja et poses a el tema veus el practico que són.