Come saltare la valutazione della e commerciale nella riga di comando?


13

Quando si inserisce un URL delle indicazioni di Google Maps nella riga di comando (per l'apertura con browser chromium tramite Terminale) c'è una e commerciale ( &) nell'URL, tuttavia il terminale lo interrompe lì perché roba Unix è roba Unix. C'è qualcosa che posso digitare nel terminale che quando il comando effettivamente passa, sarà trattato come una e commerciale?

Will; amp; opera?

Risposte:


15

Devi inserire l'indirizzo tra virgolette:

chromium-browser 'http://whatever.com/?x=1&y=2'

Ok, ho avuto la citazione alla fine, ma non quella iniziale ... questo lo spiega. Grazie.
Leron,

7

Le citazioni risolveranno questo problema, ma puoi anche sfuggire alle cose con una barra rovesciata:

echo http://whatever.com/?x=1\&y=2

Non dire che è meglio, in ogni caso, è solo un'altra opzione per situazioni come questa.


1

In questo caso non importa, ma c'è una differenza tra virgolette singole e doppie.

Le virgolette doppie sostituiranno caratteri speciali come '$' e virgolette, mentre le virgolette singole trattano tutto alla lettera, ad eccezione della virgoletta singola di chiusura.

Entrambi raggrupperanno il testo, il che fa sì che il cromo lo tratti come un singolo argomento, e caratteri come "; # &" non hanno un significato speciale in quel contesto.

Questo mostra l'uso di '\' per evitare una virgoletta doppia tra virgolette doppie e una barra rovesciata stessa:

mat@sen:~$ echo "a&bc\\#de\"f"
a&bc\#de"f

Con le virgolette singole non cambia nulla:

mat@sen:~$ echo 'a&bc\\#de\"f'
a&bc\\#de\"f

Senza le virgolette '&' lo divide in due comandi:

mat@sen:~$ echo a&bc\\#de\"f
[1] 2619
a
bc\#de"f: command not found
[1]+  Done                    echo a
[1]+  Done                    echo a

Di solito quando si ha a che fare con un tipo di preventivo, è possibile racchiuderlo nell'altro tipo, ma è possibile che si verifichino problemi con questo:

mat@sen:~$ echo "'a'bc$foo"
'a'bc

Le virgolette singole non vengono sostituite, ma lo è "$". La seguente sintassi funziona però:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.