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

11

Ao inserir um URL do Google Maps Directions na linha de comando (para abrir com o navegador chrom via Terminal), há um e comercial ( & ) no URL, mas o terminal o quebra por causa de coisas do Unix serem do Unix. Existe algo que eu possa digitar no terminal que, quando o comando realmente passar, será tratado como um e comercial?

Will; amp; trabalho?

    
por Leron 28.06.2011 / 08:18

3 respostas

11

Você precisa colocar o endereço entre aspas:

chromium-browser 'http://whatever.com/?x=1&y=2'
    
por htorque 28.06.2011 / 08:21
7

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

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

Não dizer que isso é melhor, de qualquer forma, é apenas outra opção para situações como essa.

    
por Oli 28.06.2011 / 11:37
1

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

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

Ambos agrupam o texto, o que faz com que o cromo trate um único argumento e caracteres como "; # & amp;" 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 em si:

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 '& amp;' 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

Normalmente, quando se lida com um tipo de citação, você pode apenas colocá-lo no outro tipo, mas você pode ter problemas com isso:

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

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

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
    
por Mat 01.07.2011 / 21:57