Bash Globbing Tutorial

Bash Globbing Tutorial



Bash non supporta le espressioni regolari native come altri linguaggi di programmazione standard. La funzionalità della shell Bash utilizzata per abbinare o espandere tipi specifici di pattern è chiamata globbing. Il globbing viene utilizzato principalmente per abbinare i nomi dei file o per la ricerca di contenuti in un file. Il globbing utilizza i caratteri jolly per creare il modello. Di seguito sono descritti i caratteri jolly più comuni utilizzati per creare modelli di globbing.

'?' è usato per abbinare ogni singolo carattere. Puoi usare '?' per più volte per la corrispondenza di più caratteri.







Esempio 1:



Supponiamo di voler cercare quei nomi di file di testo i cui nomi sono lunghi 4 caratteri e l'estensione è .testo . Puoi applicare il modello globbing usando ' ? ' quattro volte per svolgere questo compito.



Scopri l'elenco di tutti i file e le cartelle della directory corrente.





$ls-l

Esegui il seguente comando per cercare quei file i cui nomi sono lunghi quattro caratteri e sconosciuti.

$ ls -l ????.txt



Esempio-2:

Supponiamo di voler cercare quei file di documenti i cui nomi sono lunghi 8 caratteri, i primi 4 caratteri sono f, o, o e T e l'estensione è documento . Esegui il seguente comando con il modello globbing per cercare i file.

$ls -lpiede????.doc

Esempio-3:

Supponiamo che tu sappia che il nome del file è 'migliore' e l'estensione è lunga 3 caratteri, ma non si conosce l'estensione. Esegui il seguente comando usando '? ' per cercare tutti i file con il nome 'test' aventi qualsiasi estensione di tre caratteri.

$ls -lmigliore.???

Asterisco – (*)

'*' viene utilizzato per abbinare zero o più caratteri. Se hai meno informazioni per cercare qualsiasi file o informazione, puoi usare '*' nel modello glob.

Esempio 1:

Supponiamo di voler cercare tutti i file di 'Pl' estensione. Esegui il seguente comando usando '*' per svolgere quel compito.

$ls -l *.pl

Esempio-2:

Supponiamo di conoscere solo il carattere iniziale del nome del file che è 'a' . Esegui il seguente comando usando '*' per cercare tutti i file della directory corrente i cui nomi iniziano con 'a' .

$ls -la*.*

Esempio-3:

Puoi applicare '*' nello script bash per vari scopi senza cercare i file. Crea un file bash chiamato 'check.sh' con il seguente script. Qui, quando l'utente digiterà ' y' o 'Y' o 'sì' o 'Sì' poi 'confermato' stamperà e quando verrà digitato il tipo 'n' o 'N' o 'no' o 'No' poi 'Non confermato' stamperà.

#!/bin/bash
buttato fuori 'Vuoi confermare?'
leggereRispondere
Astuccio $risposta in
[]* ) buttato fuori 'confermato.';;
[Nn]* ) buttato fuori 'Non confermato.';;
*) buttato fuori 'Riprova.';;
esac

Esegui lo script.

$bashcheck.sh

Parentesi quadra – ([])

'[]' viene utilizzato per abbinare il carattere dell'intervallo. Alcune delle dichiarazioni di intervallo più utilizzate sono menzionate di seguito.

Tutti gli alfabeti maiuscoli sono definiti dall'intervallo come, [:upper:] o [A-Z] .

Tutti gli alfabeti minuscoli sono definiti dall'intervallo come, [:lower:] o [a-z].

Tutte le cifre numeriche sono definite dall'intervallo come [:digit:] o [0-9].

Tutti gli alfabeti maiuscoli e minuscoli sono definiti dall'intervallo come, [:alpha:] o [a-zA-z].

Tutti gli alfabeti maiuscoli, minuscoli e le cifre sono definiti dall'intervallo come, [:alnum:] o [a-zA-Z0-9]

Esempio 1:

Esegui il seguente comando per cercare tutti i file e le cartelle il cui nome contiene P o che cosa o R o S .

$ls -l [p-s]*

Esempio-2:

Eseguire il comando seguente per cercare tutti i file e le cartelle il cui nome inizia con qualsiasi cifra da 1 a 5.

$ls -l [1-5]*

Gli manca – (^)

Puoi usare '^' con parentesi quadre per definire in modo più specifico il modello di globbing. '^' può essere utilizzato all'interno o all'esterno della parentesi quadra. '^' viene utilizzato al di fuori della parentesi quadra per cercare quei contenuti del file che iniziano con un determinato intervallo di caratteri. '^' viene utilizzato all'interno della parentesi quadra per mostrare tutto il contenuto del file evidenziando le righe che iniziano con un determinato intervallo di caratteri . È possibile utilizzare diversi tipi di modelli di globbing per la ricerca di contenuti particolari da un file. 'presa' il comando viene utilizzato per la ricerca di contenuti in bash. Supponiamo di avere un file di testo chiamato 'lista.txt' con il seguente contenuto. Prova i seguenti esempi per quel file.

Mela
4000
Banana
700
arancia
850
Pera
9000
jackdruit

Esempio 1:

Esegui il seguente comando per cercare quelle righe da list.txt file che inizia con P o Q o R .

$ grep '^[P-R]' list.txt

Esempio – 2:

Esegui il seguente comando per evidenziare quelle righe da list.txt file che inizia con A o B o C .

$ grep '[^A-C]' list.txt

Segno Esclamativo – (!)

Puoi usare '!' all'interno del modello di intervallo. Funziona allo stesso modo dell'uso del simbolo '^' al di fuori del modello di intervallo. Alcuni esempi di utilizzo '!' segno sono riportati di seguito.

Esempio 1:

Esegui il seguente comando per mostrare quelle righe da list.txt file che inizia con 'P' o Q o R .

$ grep [!P-R] list.txt

Esempio – 2:

Esegui il seguente comando per mostrare quelle righe da list.txt file che inizia con qualsiasi cifra da da 4 a 8 .

$ grep [!4-8] list.txt

Simbolo del dollaro – ($)

'$' è usato per definire il carattere finale. Se vuoi cercare informazioni in base all'ultimo carattere, puoi usare '$' nel modello glob.

Esempio 1:

Esegui il seguente comando per cercare quelle righe da list.txt file che termina con 'a' .

$ grep a$ list.txt

Esempio – 2:

Esegui il seguente comando per cercare quelle righe da list.txt file che finiscono con il numero cinquanta .

$ grep 50$ list.txt

Parentesi graffa – ({})

'{}' può essere usato per abbinare i nomi dei file con più di un pattern di globbing. Ogni modello è separato da ',' tra parentesi graffe senza spazio. Alcuni esempi sono riportati di seguito.

Esempio 1:

Esegui il seguente comando per cercare quei file i cui nomi sono lunghi 5 caratteri e l'estensione è 'SH' o gli ultimi due caratteri dei file sono 'ns' e l'estensione è 'testo' .

$ ls -l {?????.sh,*st.txt}

Esempio – 2:

Esegui il seguente comando per eliminare tutti i file le cui estensioni sono 'doc' o 'docx' .

$rm {*.doc,*.docx}

Tubo– ( | )

Il segno '|' viene utilizzato anche per applicare più di una condizione al modello di globbing. Ogni modello è separato dal simbolo '|' nel comando.

Esempio 1:

Esegui il seguente comando per cercare quei nomi di file che iniziano con il carattere 'a' e hanno l'estensione 'bash' o 'sh'.

$lsa*+(.bash|.SH)

Esempio – 2:

Crea un file bash chiamato 'menu.bash' e aggiungi il seguente script. Se l'utente digita 1 o S poi stamperà Ricerca di testo . Se l'utente digita 2 o R poi stamperà Sostituzione del testo . Se l'utente digita 3 o D poi stamperà Eliminazione del testo . stamperà Riprova per qualsiasi altro ingresso.

#!/bin/bash
buttato fuori 'Seleziona qualsiasi opzione dal menu:'
leggereRispondere
Astuccio $risposta in
1 |S) buttato fuori 'Ricerca di testo';;
2 |R) buttato fuori 'Sostituzione del testo';;
3 |D) buttato fuori 'Eliminazione del testo';;
*) buttato fuori 'Riprova.';;
esac

Esegui lo script.

$bashmenu.bash

CONCLUSIONE

Alcuni dei modelli di globbing più comunemente usati sono spiegati in questo tutorial utilizzando esempi molto semplici. Spero che dopo aver praticato gli esempi precedenti, il concetto di globbing ti sarà chiaro e sarai in grado di applicarlo con successo nei comandi e negli script bash.

Per maggiori informazioni guarda questo video: