colar url no terminal (urxvt, zsh) falhou, alguns caracteres escaparam

7

Nos últimos meses, acho que, se eu copiar o URL no chrome e, em seguida, Shift Insert no urxvt, o URL colado é salvo.

Por exemplo, o URL original é:

http://example.com/?a=c

o conteúdo colado é:

http://example.com/\?a\=c

Mas se eu colá-lo em outros lugares, como no navegador da web ou no vim, não há como escapar.

O que eu uso é arch linux, urxvt, zsh, oh-my-zsh.

    
por 宇宙人 02.07.2016 / 16:17

3 respostas

5

Isso é um módulo Z Shell conhecido como "url- quote-magic " em ação. Está tentando garantir que você acabe com o que você pretendia, mesmo que tenha ignorado completamente os metacaracteres e as citações do shell. Ele detecta quando (em ZLE) uma palavra sem aspas se parece com uma URL, com um esquema na frente, e muda a maneira como a auto-inserção de caracteres acontece com o resto da palavra.

Se a operação de colar tivesse simplesmente entrado

http://example.com/?a=c
no editor de linha de comando, você teria acabado com um comando que quando executado teria tentado executar expansão de nome de arquivo e falha ao executar porque nenhum nome de arquivo correspondido . Um exemplo bem conhecido por Vivek Verma é:
~$  mpv https://www.youtube.com/watch?v=HcgJRQWxKnw
zsh: no matches found: https://www.youtube.com/watch?v=HcgJRQWxKnw
~$  

Lembre-se: o Z Shell possui muitos caracteres de expansão de nome de arquivo, incluindo não apenas ? , [ , ] e * ; mas também = (pesquisa de nome de comando), < e > (intervalos de números), ~ , ^ e # . E isso nem inclui os mecanismos de compatibilidade do shell Korn. Veja a zshexpn página de manual para os detalhes bastante longos.

A url-quote-magic determinou que essa não era uma palavra citada, reconheceu o prefixo http: schema e alterou o ? e o = para \? e \= para que eles não o fizessem invocar expansão de nome de arquivo.

Então, a menos que você realmente queira , por algum motivo, os URLs que você colou ou digitou (sem adicionar nenhuma aspas, observação) ficarão sujeitos a todas as expansões de nomes de arquivos e ou não funcionar ou (no raro caso de surpresa extrema) produzir correspondências inesperadas, provavelmente você deve ficar feliz em saber que essa cotação automática de metacaracteres de shell no que você claramente considera como URLs está sendo feita para você. ☺

    
por 02.07.2016 / 17:48
2

O lugar para procurar é o oh-my-zsh e seu uso (ou não) do plugin de colagem segura:

Com base nesses e em relatórios semelhantes, parece que url-quote-magic foi interrompido por alterações em não usando o recurso de colar entre colchetes. Você provavelmente deve abrir um relatório de bug no local apropriado.

    
por 02.07.2016 / 17:15
0

O texto é mostrado como escapado, mas o comando não é afetado por essas falhas. Se você testar essa URL com qualquer comando como curl, wget ou até mesmo google-chrome, verá que ela funcionará sem problemas.

    
por 05.11.2016 / 23:22