Espansioni della shell
Mentre si lavora in una shell, gli insiemi o gli intervalli di informazioni vengono spesso ripetuti. L'espansione della shell consente di generare un gran numero di token della shell utilizzando sintassi compatte. L'espansione viene eseguita sulla riga di comando dopo che il comando è stato suddiviso in token. Tra le molte espansioni disponibili, il nome del percorso, il nome del file e le espansioni delle parentesi sono spiegati più avanti.
Espansione del nome del percorso
L'espansione del percorso semplifica le modifiche alla posizione all'interno della gerarchia di directory. L'espansione del percorso include:
– La tilde (~) carattere, che rappresenta il percorso assoluto della directory home dell'utente corrente
– Il carattere tilde (~) con un nome utente, che rappresenta la directory home dell'utente specificato
– Il trattino ( -) carattere, che rappresenta la directory di lavoro precedente
Considera i seguenti esempi per ciascuno dei caratteri di espansione:
1. Cambia le directory in dir1 usando il carattere tilde (~).
$ cd ~/dir1 $ pwd /home/user/dir1/
2. Modificare le directory nella directory home dell'utente utilizzando il carattere tilde (~) seguito da un nome utente.
$ cd ~user $ pwd /home/user
3. Passare dalla directory user a quella tmp usando il carattere di espansione –.
$ cd $ pwd /home/user
$ cd /tmp $ pwd /tmp
$ cd - /export/home/user1 $ cd - /tmp
Espansione nome file
Le espansioni dei nomi dei file sono:
- Il carattere asterisco (*)
- Il carattere punto interrogativo (?)
- Le parentesi quadre ([]) caratteri
1. Asterisco (*) Carattere
Il carattere di espansione asterisco (*) è anche chiamato carattere jolly e rappresenta zero o più caratteri, ad eccezione del punto iniziale (.) di un file nascosto. Ad esempio, elenca tutti i file e le directory che iniziano con la lettera f seguita da zero o più altri caratteri.
$ ls f* file.1 file.2 file.3 file4
Un altro esempio consiste nell'elencare tutti i file e le directory che terminano con il numero 3, preceduto da zero o più caratteri.
$ ls *3 file.3 file3
2. Punto interrogativo (?) Carattere
Il carattere del punto interrogativo (?) è anche chiamato carattere jolly e rappresenta qualsiasi singolo carattere eccetto il punto iniziale (.) di un file nascosto. Ad esempio, elenca tutti i file e le directory che iniziano con la stringa dir e seguiti da un altro carattere.
$ ls dir? dir1: coffees fruit trees dir2: beans notes recipes
Se nessun file corrisponde a una voce che utilizza il carattere punto interrogativo (?), viene visualizzato un messaggio di errore.
$ ls z? z?: No such file or directory
3. Parentesi quadre ([]) Caratteri
La parentesi quadra ([] ) i caratteri rappresentano un insieme o un intervallo di caratteri per una singola posizione di carattere.
– Un insieme di caratteri è un numero qualsiasi di caratteri specifici, ad esempio [acb]. I personaggi in un set non devono necessariamente essere in qualsiasi ordine. Ad esempio, [abc] è uguale a [cab].
– Un intervallo di caratteri è una serie di caratteri ordinati.
- Un intervallo elenca il primo carattere seguito da un trattino (-) e poi l'ultimo carattere, ad esempio [a–z] o [0–9].
- Quando specifichi un intervallo, disponi i caratteri nell'ordine in cui desideri che appaiano nell'output.
- Ad esempio, usa [A–Z] o [a–z] per cercare rispettivamente qualsiasi carattere alfabetico maiuscolo o minuscolo.
Ad esempio, elenca tutti i file e le directory che iniziano con le lettere da a a f.
$ ls [a-f]* brands dante_1 file.1 file2 file4 celery feathers file1 file.3 fruit dante feathers_6 file.2 file3 fruit2
Ad esempio, elenca tutti i file e le directory che iniziano con le lettere fo p.
$ ls [fp]* perm file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
L'espansione del tutore
L'espansione parentesi graffa {} è un meccanismo mediante il quale possono essere generate stringhe arbitrarie. I modelli da espandere tra parentesi graffe assumono la forma di un preambolo opzionale, seguito da una serie di stringhe separate da virgole o da un'espressione di sequenza tra una coppia di parentesi graffe, seguita da un postscript opzionale. Il preambolo "a" è preceduto da ogni stringa contenuta tra parentesi graffe e il poscritto "e" viene quindi aggiunto a ciascuna stringa risultante, espandendosi da sinistra a destra.
$ echo a{d,c,b}e ade ace abe