locate ... | less
produz um caminho longo, que é mostrado como várias linhas no terminal, embora na verdade seja uma única linha.
Copio o caminho do terminal selecionando o texto com o mouse e pressionando Ctrl+ Shift+ C. Quando colo em um arquivo de texto, recebo uma linha de alteração indesejada no texto, exatamente da mesma maneira que é mostrada no terminal.
Mas eu lembro que às vezes consigo copiar um caminho longo locate ... | less
sem introduzir alterações de linha indesejadas e às vezes não consigo. Não sei se faço algo diferente.
Então, eu me pergunto como garantir que o problema não aconteça? Obrigado!
Meu SO: Ubuntu 12.04.
Meu terminal: Gnome Terminal 3.4.1.1
Respostas:
Em vez de copiar o que é exibido no terminal (apenas o que cabe na tela), copie o texto real. Use um dos utilitários externos xsel ou xclip (eles têm principalmente os mesmos recursos, usarei o xsel nesta resposta) para copiar dados da 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 canalizar um monte de linhas através de um comando. Vá até a primeira linha em que deseja atuar, digitemm
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, usemm|mxsel -b
e Enter.Remova a
-b
opção de copiar para a seleção principal em vez da área de transferência.fonte
O comportamento real disso é o seguinte:
se você estiver dentro
less
e tiver um arquivo com uma linha muito longa, se você rolar a linha longa para baixo e voltar, você terá várias linhas ao copiar o texto inteiro. Depois disso, quando você rolar as linhas divididas para baixo na parte inferior do terminal e rolar as linhas para cima novamente, as quebras de linha serão removidas novamente.Para visualização:
fonte
Além disso
less
, se você selecionar várias linhas de texto agrupadas e depois copiá-las, elas serão reduzidas como uma linha.Se você pressionar PgUpe copiar o mesmo texto, ele diminuirá como várias linhas.
PgDnestá bem, setas estão bem. Mas PgUpfaz com que o texto seja dividido.
fonte
Você pode copiar as linhas de saída sem novas linhas extras (quebras de linha) se o texto foi enviado diretamente para o terminal.
O terminal pode acompanhar onde está a linha real.
Mas se as linhas foram produzidas por
less
ou umpager
programa 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 para onde se destinam as novas linhas.fonte
locate <something> | less
em dois casos diferentes.echo $LESS
, talvez há opções interessantes para menos.)-S
modos, então talvez isso também piore.Se o objetivo é copiar e colar, eu uso em
cat
vez deless
oumore
e o terminal captura como realmente é, e não como está sendo exibido.fonte