basename e dirname: due comandi che dovresti conoscere

comandi Linux della shell del terminale

A volte alcuni tutorial hanno lo scopo di spiegare comandi un po 'più esotici e strani, d'altra parte, ce ne sono alcuni che includono distribuzioni seriali e non sono così popolari come cd, ls, cat, ecc., Ma sono altrettanto pratici. In questo tutorial ti mostrerò cosa si può fare con due di questi comandi: basename e dimmi.

Forse a priori ti sembrano assurde e che non servono, ma sì applicazioni piuttosto pratiche in alcuni casi, come, ad esempio, negli script in cui è necessario estrarre una parte di un percorso, come il nome del file o della directory in modo che un altro comando operi su questo ...

A cosa servono

Questi comandi sono molto semplici e le sue funzioni sono:

  • nome di base: utilizzato per estrarre il nome del file da un percorso.
  • cognome: utilizzato per estrarre il nome della directory da un percorso.

Esempi di utilizzo

Qui puoi vederne alcuni esempi come usarli:

  • Ad esempio, da usare nome di base con / etc / passwd e che restituisce il nome del file nel suo output, in questo caso passwd:
basename /etc/passwd

  • Puoi anche specificare un'estensione in modo che ti dia il nome del file senza l'estensione. Ad esempio, supponiamo di voler estrarre il nome di un'immagine /home/media/test.jpg senza l'estensione jpg (restituirebbe prueba):
basename -s .jpg /home/media/prueba.jpg

  • Puoi anche elaborare più percorsi contemporaneamente separatamente, per questo devi usare l'opzione -a:
basename -a /etc/passwd /var/log/boot.log

  • Per fare il contrario e darti il ​​nome della directory, senza il nome del file, devi usare cognome. Ad esempio, se vuoi usarlo nel percorso /var/spool/mail/test.txt e fare in modo che restituisca / var / spool / mail, usa:
dirname /var/spool/mail/prueba.txt

Per quanto riguarda a utilità in uno script, ecco un altro esempio. Immagina di avere uno script semplice e che in esso ci sia un percorso variabile. Ma vuoi che mostri la directory che contiene un file, indipendentemente dal file, in quel caso potresti avere qualcosa come:

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

result=$(dirname "$pathname")

echo $result

Ovviamente, in questo script il "percorso" sarebbe sempre lo stesso statico dichiarato dalla costante all'inizio, ma ci possono essere casi in cui non lo è, ed è qui che diventa pratico. Ad esempio:

/*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


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Gregory ros suddetto

    Un buon esempio di quelle cose che quando impari vedi inutili, ma quando arrivi all'argomento vedi quanto sono pratiche.