Copie um texto longo de linha única de um terminal com linha de alteração indesejada

12

locate ... | less gera um caminho longo, que é mostrado como várias linhas no terminal, embora na verdade seja uma única linha.

Eu copio o caminho do terminal selecionando o texto com o mouse e pressionando Ctrl + Deslocamento + C . Quando eu o colo em um arquivo de texto, recebo uma linha de alteração indesejada no texto, exatamente da mesma forma que é mostrada no terminal.

Mas lembro-me de que às vezes posso copiar uma saída de caminho longo em locate ... | less , sem introduzir alteração de linha indesejada, e às vezes não consigo. Eu não sei se faço algo diferente.

Então, eu me pergunto como garantir que o problema não aconteça? Obrigado!

Meu sistema operacional: Ubuntu 12.04.

Meu terminal: Terminal Gnome 3.4.1.1

    
por Tim 26.04.2014 / 01:33

5 respostas

3

Em vez de copiar o que é exibido no terminal (apenas o que se ajusta na tela, com), copie o texto real. Use um dos utilitários externos xsel ou xclip (eles têm basicamente os mesmos recursos, eu usarei xsel nesta resposta) para copiar dados de ou para a área de transferência do X. Para copiar para a área de transferência, passe o conteúdo desejado na entrada padrão. Ao colar da área de transferência, o conteúdo é gravado na saída padrão.

Em menos, use o comando | para enviar várias linhas através de um comando. Vá até a primeira linha em que você deseja atuar, digite mm para definir uma marca, vá até a última linha e digite |mxsel -b e pressione Enter . Duas marcas são predefinidas: ^ para o início do arquivo, $ para o final do arquivo. Portanto, para copiar o arquivo inteiro, use <|$xsel -b . Para copiar uma única linha, use mm|mxsel -b e Enter .

Remova a opção -b para copiar para a seleção principal em vez da área de transferência.

    
por 28.09.2014 / 23:49
3

O comportamento real disso é o seguinte:

se você estiver em less e tiver um arquivo com uma linha muito longa, se você rolar pela linha longa para baixo e rolar para cima, haverá várias linhas ao copiar todo o texto. Depois disso, quando você deslocar as linhas divididas pela parte inferior do terminal e rolar as linhas para cima novamente, as quebras de linha serão removidas novamente.

Para visualização:

    
por 23.05.2018 / 16:58
2

Em less , se você selecionar várias linhas de texto e copiá-las, elas aparecerão como uma linha.

Se você pressionar PgUp e depois copiar o mesmo texto, ele aparecerá como várias linhas.

PgDn está bom, as setas estão bem. Mas o PgUp faz com que o texto seja dividido.

    
por 28.02.2016 / 11:21
1

Você pode copiar as linhas de saída sem novas linhas extras (quebras de linha) se o texto tiver sido enviado diretamente para o terminal.
O terminal pode rastrear onde a linha real termina.

Mas se as linhas foram geradas por less ou um programa pager semelhante, o terminal não sabe onde estão as novas linhas. O pager usa o terminal como uma tela cheia de caracteres e diz ao terminal "coloque esses caracteres lá" e operações como rolagem. Mas, para o terminal, não há como ver onde as novas linhas são pretendidas.

    
por 09.07.2014 / 00:56
0

Se o objetivo for copiar & cole, eu uso cat em vez de less ou more e, em seguida, o terminal o captura como realmente é, e não como está sendo exibido.

    
por 10.04.2018 / 00:47