Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Virgolette

Il primo tipo di citazione che prenderemo in esame è virgoletteSe inseriamo del testo tra virgolette doppie, tutti i caratteri speciali utilizzati dalla shell perdono il loro significato speciale e vengono trattati come caratteri normali. Le eccezioni sono "$", "\" (barra rovesciata) e "`" (virgolette rovesciate). Ciò significa che la suddivisione in parole, l'espansione del percorso, l'espansione della tilde e l'espansione delle parentesi graffe vengono soppresse, ma l'espansione dei parametri, l'espansione aritmetica e la sostituzione di comando vengono comunque eseguite. Utilizzando le virgolette doppie, possiamo gestire i nomi di file contenenti spazi incorporati. Supponiamo di essere la sfortunata vittima di un file chiamato due parole.txtSe provassimo a usarlo sulla riga di comando, la suddivisione delle parole farebbe sì che venisse trattato come due argomenti separati anziché come l'argomento singolo desiderato:



[io@linuxbox~]$ ls -l due parole.txt

ls: impossibile accedere a due: Nessun file o directory del genere

ls: impossibile accedere a words.txt: nessun file o directory del genere

[io@linuxbox~]$ ls -l due parole.txt

ls: impossibile accedere a due: Nessun file o directory del genere

ls: impossibile accedere a words.txt: nessun file o directory del genere


Utilizzando le virgolette doppie, interrompiamo la suddivisione delle parole e otteniamo il risultato desiderato; inoltre, possiamo persino riparare il danno:



[io@linuxbox~]$ ls -l "due parole.txt"

-rw-rw-r-- 1 me me 18 2016-02-20 13:03 due parole.txt [me@linuxbox ~]$ mv "due parole.txt" due_parole.txt

[io@linuxbox~]$ ls -l "due parole.txt"

-rw-rw-r-- 1 me me 18 2016-02-20 13:03 due parole.txt [me@linuxbox ~]$ mv "due parole.txt" due_parole.txt


Ecco fatto! Ora non dobbiamo più digitare quelle fastidiose virgolette doppie.

Ricorda che l'espansione dei parametri, l'espansione aritmetica e la sostituzione dei comandi avvengono ancora tra virgolette doppie:


Immagine

[io@linuxbox~]$ echo "$USER $((2+2)) $(cal)"

io 4 febbraio 2016


Su

Mo

Tu

We

Th

Fr

Sa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29


Dovremmo soffermarci un attimo a esaminare l'effetto delle virgolette doppie sulla sostituzione di comando. Innanzitutto, analizziamo più approfonditamente il funzionamento della suddivisione delle parole. Nel nostro esempio precedente, abbiamo visto come la suddivisione delle parole sembra rimuovere gli spazi extra nel testo:


[io@linuxbox~]$ eco questo è un

questa è una prova

test

[io@linuxbox~]$ eco questo è un

questa è una prova


Immagine

Per impostazione predefinita, la suddivisione delle parole cerca la presenza di spazi, tabulazioni e caratteri di avanzamento riga e li tratta come Delimitatori tra le parole. Ciò significa che spazi, tabulazioni e nuove righe non tra virgolette non sono considerati parte del testo. Servono solo da separatori. Poiché separano le parole in argomenti diversi, la nostra riga di comando di esempio contiene un comando seguito da quattro argomenti distinti. Se aggiungiamo le virgolette doppie:


[io@linuxbox~]$ echo "questo è un

test"

[io@linuxbox~]$ echo "questo è un


questa è una prova

questa è una prova


Immagine

La suddivisione delle parole viene eliminata e gli spazi incorporati non vengono trattati come delimitatori, ma diventano parte dell'argomento. Una volta aggiunte le virgolette doppie, la nostra riga di comando contiene un comando seguito da un singolo argomento.

Il fatto che i caratteri di nuova riga siano considerati delimitatori dal meccanismo di suddivisione delle parole provoca un effetto interessante, seppur sottile, sulla sostituzione dei comandi. Si consideri quanto segue:


Immagine

[io@linuxbox~]$ eco $(cal)

Febbraio 2016 Dom Lu Ma Me Gi Ve Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

[io@linuxbox~]$ echo "$(cal)"

Febbraio 2016


Su

Mo

Tu

We

Th

Fr

Sa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29


Nel primo caso, la sostituzione di comando senza virgolette ha prodotto una riga di comando contenente 38 argomenti. Nel secondo, una riga di comando con un argomento che include gli spazi incorporati e le nuove righe.


Il miglior sistema operativo cloud computing su OnWorks: