Como pular a avaliação do e comercial na linha de comando?

13

Ao inserir um URL de direções do Google Maps na linha de comando (para abrir com o navegador chromium via Terminal), existe um e comercial ( &) no URL, no entanto, o terminal o interrompe por causa do material Unix ser material Unix. Existe algo que eu possa digitar no terminal que, quando o comando realmente for executado, ele será tratado como um e comercial?

Will; amp; trabalhos?

Leron
fonte

Respostas:

15

Você precisa colocar o endereço entre aspas:

chromium-browser 'http://whatever.com/?x=1&y=2'
htorque
fonte
Ok, eu tinha a citação no final, mas não a da frente ... isso explica. Obrigado.
Leron
7

As cotações irão corrigir isso, mas você também pode escapar das coisas com uma barra invertida:

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

Não dizendo que isso é melhor, por qualquer meio, é apenas mais uma opção para situações como essa.

Oli
fonte
1

Na verdade, não importa nesse caso, mas há uma diferença entre aspas simples e aspas duplas.

As aspas duplas substituem caracteres especiais como '$' e aspas, enquanto as aspas simples tratam tudo literalmente, exceto a aspas simples de fechamento.

Ambos agruparão o texto, o que faz com que o cromo o trate de um único argumento, e caracteres como "; # &" não têm significado especial nesse contexto.

Isso mostra o uso de '\' para escapar de aspas duplas entre aspas duplas e uma barra invertida:

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

Com aspas simples, nada muda:

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

Sem as aspas, o '&' o divide em dois 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

Geralmente, ao lidar com um tipo de citação, você pode simplesmente envolvê-lo no outro tipo, mas pode ter problemas com isso:

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

As aspas simples não são substituídas, mas o '$' é. Porém, a seguinte sintaxe funciona:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
Esteira
fonte