¿Cómo omitir la evaluación de ampersand en la línea de comando?

13

Al ingresar una URL de instrucciones de Google Maps en la línea de comando (para abrir con el navegador de cromo a través de la Terminal) hay un signo ( &) en la URL, sin embargo, la terminal lo rompe allí porque las cosas de Unix son cosas de Unix. ¿Hay algo que pueda escribir en la terminal que, cuando el comando realmente se ejecute, se trate como un signo?

Voluntad ¿trabajo?

Leron
fuente

Respuestas:

15

Necesita poner la dirección entre comillas:

chromium-browser 'http://whatever.com/?x=1&y=2'
htorque
fuente
De acuerdo, tenía la cita al final, pero no la que estaba al frente ... eso lo explica. Gracias.
Leron
7

Las citas solucionarán esto, pero también puedes escapar de las cosas con una barra diagonal inversa:

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

No decir que esto es mejor, de ninguna manera, es solo otra opción para situaciones como esta.

Oli
fuente
1

En realidad no importará en este caso, pero hay una diferencia entre comillas simples y comillas dobles.

Las comillas dobles sustituirán caracteres especiales como '$' y comillas, mientras que las comillas simples tratan todo literalmente, excepto la comilla simple de cierre.

Ambos agruparán el texto, lo que hace que el cromo lo trate como un argumento único, y los caracteres como "; # &" no tienen un significado especial en ese contexto.

Esto muestra el uso de '\' para escapar de una comilla doble dentro de comillas dobles, y una barra invertida en sí misma:

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

Con comillas simples nada cambia:

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

Sin las comillas, el '&' lo divide en dos comandos:

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

Por lo general, cuando se trata de un tipo de cotización, puede envolverlo en el otro tipo, pero puede tener problemas con esto:

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

Las comillas simples no se sustituyen, pero el '$' sí. Sin embargo, la siguiente sintaxis funciona:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
Estera
fuente