GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo del comando Linux Basename negli script Bash

Il comando basename in Linux stampa il componente finale in un percorso file. Ciò è particolarmente utile negli script bash in cui desideri estrarre il nome del file dal percorso del file lungo.

Ve lo mostro con alcuni esempi.

Comando nome base

Il comando basename ha due tipi di sintassi. Il primo prevede un suffisso:

basename PATH [suffix]

Il secondo ti consente di aggiungere opzioni:

basename OPTION PATH

Non è possibile combinare le opzioni con suffisso. Non essere ancora confuso. Segui gli esempi e poi capirai cosa voglio dire.

L'utilizzo del comando basename con un percorso file darà il nome del file:

basename /home/user/data/filename.txt
filename.txt

Il comando basename è piuttosto stupido in realtà. Non riconosce davvero il percorso del file. Cerca solo le barre (/) e stampa quello che c'è dopo l'ultima barra.

Ad esempio, se eseguo l'esempio precedente rimuovendo il nome del file, ecco cosa produrrà.

basename /home/user/data
data

Rimuovi estensione file con suffisso

L'uso principale del comando bash consiste nell'estrarre il nome del file dal percorso del file. Puoi anche rimuovere l'estensione del file mentre estrai il nome del file.

Basta menzionare ciò che si desidera rimuovere dalla fine dell'output. Quindi diciamo che vuoi rimuovere il .txt da filename.txt. Basta aggiungerlo alla fine del comando basename:

basename /home/user/data/filename.txt .txt
filename

Puoi anche usare l'opzione -s per il suffisso:

basename -s .txt /home/user/data/filename.txt
filename

Il suffisso viene rimosso dalla fine del componente finale dell'input. In realtà non riesce a capire l'estensione del file. Se fornisci txt (senza punto) invece di .txt, otterrai 'nomefile' (con il punto alla fine).

Inoltre, se fornisci un suffisso che non è alla fine del componente, l'output rimane come se non ci fosse un suffisso.

basename /home/user/data/filename.txt name
filename.txt

Utilizzo di basename con più percorsi

Con l'opzione -a , puoi utilizzare più percorsi contemporaneamente.

basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1.txt
filename2.txt

Puoi usare l'opzione del suffisso -s con -a ma con alcune limitazioni. Puoi fornire un solo suffisso a tutti i percorsi dei file.

basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1
filename2

Non è possibile assegnare singole risorse. Non funzionerà.

Puoi anche separare l'output con NULL invece della nuova riga con -z opzione.

Utilizzo di basename nello script bash

Ho mostrato alcuni esempi del comando basename. Vediamo un paio di esempi di basename negli script bash.

Supponiamo di avere una variabile di percorso file e di voler memorizzare il nome del file dal percorso in una variabile. Questo potrebbe essere un semplice script:

pathname="/home/dir/data/filename"

result=$(basename "$pathname")

echo $result

Un altro esempio è dove vuoi rinominare le estensioni dei file. Ovviamente puoi usare il comando rename per rinominare i file in batch, ma questo è solo un esempio.

Quindi, ho scritto questo script di esempio con lo scopo di sostituire le estensioni dei file:

for file in *$1; do
if [ -f $file ]; then
 mv $file `basename $file .$1`.$2
fi
done

Hai notato che ho messo un segno di spunta se è file o meno nello script bash in modo che non cambi una directory corrispondente?

Puoi usare lo script sopra in questo modo:

./myscript.sh html htm

E rinominerà tutti i file nella directory corrente con html alla fine in htm.

Questi erano solo alcuni esempi. Puoi usarlo secondo le tue esigenze.

Il comando basename è completato dal comando dirname. A differenza di basename, il comando dirname stampa tutto il percorso tranne l'ultimo componente.

Spero che questo tutorial ti sia piaciuto. Come sempre, sentiti libero di porre domande o fornire suggerimenti nella sezione commenti.


Linux
  1. Comando coda di Linux

  2. Utilizzo del comando di sospensione di Linux negli script Bash

  3. Comando wc Linux

  4. comando Linux grep

  5. Come dividere iso o file usando il comando "split" in Linux

Comando della cronologia in Linux (Cronologia di Bash)

Comando del nome di base in Linux

Utilizzo di Cat Command in Linux con esempi

Come utilizzare il comando echo negli script Bash in Linux

Utilizzo del comando Watch in Linux

Utilizzo del comando Linux Dirname negli script Bash