pbcopy para Windows?

42

No MacOSX, existe um comando que pode canalizar a saída de um comando para a área de transferência, para que possa ser colado em outro lugar na GUI.

Como isso pode ser feito no cmd.exe ou com um cmdlet do PowerShell?

leeand00
fonte

Respostas:

62

Use algo como:

someCommand | clip

Isso canalizará o resultado para a área de transferência do Windows

soandos
fonte
Boa sugestão. Este é um utilitário padrão do Windows. Na maioria dos sistemas, está em C:\Windows\system32\clip.exe.
Nicole Hamilton
@NicoleHamilton direito, mas uma vez que é parte da variável PATH, que não precisa ser explicitado
soandos
Meu argumento e parte da razão pela qual eu dei um voto positivo foi que gostei de ter sugerido um utilitário padrão do Windows, e não algo que o OP deveria d / l de algum lugar. A maioria das pessoas conhece o PATH.
Nicole Hamilton
3
Para a posteridade, se você quiser o conteúdo de um arquivo, digite 'somefile.txt | clip '
ferventcoder 02/02
2
Irritantemente, o windows echo adiciona um \ r \ n e não possui eco -n ... então "echo test | clip" terá test \ r \ n no buffer de cópia ... echo | set / p = "test" | clip. .. endereça esse valor bruto
hpavc 11/02/15
6

Estou usando o shell de comando Git Bash para Windows e, como alguém observou acima, o uso clipé muito irritante, porque também copia o retorno de carro no final da saída de qualquer comando. Então, eu escrevi esta função para abordá-lo:

function cpy {
while read data; do     # reads data piped in to cpy
    echo "$data" | cat > /dev/clipboard     # echos the data and writes that to /dev/clipboard
done
tr -d '\n' < /dev/clipboard > /dev/clipboard     # removes new lines from the clipboard
}

Então, por exemplo:

$ pwd | cpy  # copies directory path

$ git branch | cpy # copies current branch of git repo to clipboard
Mateus
fonte
Um bom. Se você tiver GNU utils Win32 instalado, você pode cortar fora a quebra de linha com tre ainda usar clip, ou seja:pwd | tr -d \r\n | clip
Ben Sinclair
2

Apenas para referência, tive que copiar minha chave pública diretamente depois que o Bitbucket me deu um aviso de chave ruim. Eu era capaz de usar a resposta @soandos assim:

cat ~/.ssh/id_rsa.pub | clipcopiar minha chave diretamente da linha de comando em um PC. (uma vez que a linha de comando é péssima em comparação com o terminal)

Ben Racicot
fonte
1

Para uso em WSL / bash . Adicionar a ~/.bashrc:

function pbcopy() {
    printf $(</dev/stdin) | clip.exe
}
export -f pbcopy
rainabba
fonte
Isso não deveria printf %s "$(...impedir% de expansão na entrada? Não sei por que o printf é necessário
w00t
0

No PowerShell, basta inserir o texto Set-Clipboard. Para digitação rápida, você pode usar o alias scb. Isso não adiciona uma quebra de linha extra como o cliputilitário.

Por exemplo, este comando coloca o conteúdo myfile.txtna área de transferência:

gc .\myfile.txt | scb

Observe que, para objetos que representam objetos do sistema de arquivos, Set-Clipboardo objeto será copiado no mesmo sentido que o Explorer faz quando você pressiona Ctrl + C um arquivo. Se não era isso que você queria, passe o objeto Out-Stringprimeiro.

Ben N
fonte
0

Essa função substitui o clipe padrão do Windows no Git Bash, onde uma nova linha à direita é copiada.

function clip {
    printf "$(</dev/stdin)" | cat > /dev/clipboard
}

Isso se baseia na resposta de Mateus, que preserva apenas a última linha e introduz uma nova linha à direita. O uso printfevita a nova linha que é echoadicionada.

Ed Chapel
fonte