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
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.