posso obter o powershell para copiar corretamente o texto de múltiplas linhas como o Bash no Ubuntu?

0

Eu uso uma VM Ubuntu em casa para o desenvolvimento do Rails e fiquei um pouco estragado pelo Bash. Quando eu copio texto de múltiplas linhas do Bash, parece que é muito bom saber que o texto é de uma linha ou multilinha quando eu copio.

No Powershell (hospedado no Console2) no Win7, não entendo esse comportamento. Observe como HRESULT é cortado em dois nesta mensagem de erro (role para a direita):

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1558,9): warning MSB3284: Cannot get the file
path for type library "fdca4b6c-605a-4b76-adce-68010c4a2581" version 4.0. Library not registered. (Exception from HRESU
LT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [C:\Dev\Foo.csproj]

Existe uma maneira de fazer com que Powershell descubra que não deveria cortar palavras ao meio? Esse comportamento só está disponível no Bash e eu deveria apenas usar o Bash no Windows (talvez o CygWin)?

    
por jcollum 30.03.2012 / 18:07

2 respostas

2

Eu sei que isso não resolve o problema de copiar diretamente o texto que já foi impresso para o console, mas uma opção é canalizar a saída para Out-String -Width <columns> para evitar que linhas longas sejam quebradas. Em seguida, canalize a saída para clip.exe para copiá-lo para a área de transferência.

Se, por exemplo, eu digitar um comando inválido e receber uma mensagem de erro que desejo copiar:

PS> Blah
The term 'Blah' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:1 char:1
+ Blah
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (Blah:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Eu posso obter a última mensagem de erro com $Error[0]

$Error[0]| Out-String -Width 10000| clip.exe

e é isso que eu recebo quando colo no bloco de notas (note que a primeira linha não está quebrada).

The term 'Blah' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Blah
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (Blah:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
    
por 30.03.2012 / 20:33
0

O comportamento de cópia do Powershell é baseado em blocos, em vez de baseado em linhas, e infelizmente não é possível vincular novamente linhas agrupadas. No entanto, embora eu goste de bash (e fish) para criação de scripts, a profunda integração do Powershell com o Windows Services e Servers torna um shell mais apropriado para o uso, apesar de sua interface menos eficiente. Talvez outra pessoa esteja ciente de uma substituição do Powershell que mantenha a integração com objetos do Windows, mas também tenha uma interface melhor; Eu não sou.

    
por 30.03.2012 / 18:21