Acabei de fazer uma pergunta relacionada, pois não consigo fazer o xclip funcionar ao fazer login no Ubuntu a partir do Git Bash no Windows: stackoverflow.com/q/60117294/470749
Ryan
1
Salve o conteúdo do arquivo na área de transferência. apt install xclipecat file | xclip -sel clip
EsmaeelE
Respostas:
598
Eu sempre quis fazer isso e encontrei uma maneira agradável e fácil de fazê-lo. Anotei o procedimento completo para o caso de mais alguém precisar.
Primeiro instale um programa de 16 kB chamado xclip:
sudo apt-get install xclip
Você pode canalizar a saída xclippara ser copiada na área de transferência:
cat file | xclip
Para colar o texto que você acabou de copiar, use:
xclip -o
Para simplificar a vida, você pode configurar um alias no seu arquivo .bashrc como eu fiz:
alias "c=xclip"
alias "v=xclip -o"
Para ver como isso é útil, imagine que eu queira abrir meu caminho atual em uma nova janela de terminal (pode haver outras maneiras de fazê-lo como Ctrl+ Tem alguns sistemas, mas isso é apenas para fins ilustrativos):
Terminal1:
pwd | c
Terminal2:
cd `v`
Observe o ` ` redor v. Isso é executado vprimeiro como um comando e depois o substitui no local para cduso.
Copie apenas o conteúdo para a Xárea de transferência
cat file | xclip
Se você deseja colar em outro lugar que não seja um Xaplicativo, tente este:
"cat file | xclip" copia apenas o conteúdo para a área de transferência 'X', se você deseja colar em outro lugar que não seja um aplicativo 'X', tente o seguinte: "arquivo gato | xclip -selection clipboard"
khotyn
5
Sua escolha de alça é apropriada!
Matt Joiner
4
Se você deseja remover o caractere de nova linha para poder colar e editar diretamente o resultado de "pwd | c", você pode fazer "pwd | tr -d '\ n' | xclip -selection c"
Anake em
12
também definir alias "cs=xclip -selection clipboard"e alias "vs=xclip -o -selection clipboard"fazer copiar / colar da área de transferência do sistema mais fácil
Yibo Yang
1
Que tal uma solução em que eu não tenho acesso ao sudo e o xclip não está instalado?
DanGordon
179
No OS X, use pbcopy; pbpastevai na direção oposta.
não funciona para saída de comando tho - por exemplopbcopy < git merge-base master some-branch
Ben
se você estiver usando o tmux, ele não funcionará, a menos que você reconecte sua sessão: superuser.com/a/413233/146254
Atav32
1
você também pode usar cat, se você já trabalha com ele: cat file.txt | pbcopy
rtrigoso 2/06
3
Eu sei que o comentário tem 5 anos, mas no caso de alguém se deparar com isso no futuro, para usar com saída de comando, façagit merge-base master some-branch | pbcopy
Nota: originalmente eu pretendia mencionar isso no meu comentário para resposta de Bob Enohp . Mas então percebi que deveria adicionar um README à minha essência. Como o editor de essência não oferece uma visualização do Markdown, usei a caixa de respostas aqui e depois de copiar / colar no meu pensamento de essência, "Eu também poderia enviar a resposta".
Isso funcionou perfeitamente para mim copiar uma saída de comando para a área de transferência no terminal no macOS, obrigado!
Joshua Dyck
46
Eu escrevi esse pequeno script que tira o palpite dos comandos de copiar / colar.
A versão Linux do script depende do xclip já estar instalado no seu sistema. O script é chamado de área de transferência.
#!/bin/bash# Linux version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if command -v xclip 1>/dev/null;thenif[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
xclip -i -selection clipboard
else# stdin is not a pipe# clipboard -> stdout
xclip -o -selection clipboard
fielse
echo "Remember to install xclip"fi
A versão do script para OS X conta com o pbcopy e o pbpaste pré-instalados em todos os Macs.
#!/bin/bash# OS X version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
pbcopy
else# stdin is not a pipe# clipboard -> stdout
pbpaste
fi
O uso do script é muito simples, uma vez que você simplesmente entra ou sai clipboardcomo mostra esses dois exemplos.
Eu uso os nomes pbcopye pbpasteno Linux para que ele funciona tanto para Linux e OS X.
StackedCrooked
Para fazer o script funcionar globalmente no ubuntu: * Salve-o em ~/.scripts/clipboard * Torne-o executável chmod +x ~/.scripts/clipboard para o bash: * adicione export PATH=$PATH:~/.scriptsno final do ~/.bashrc for fish: * adicione set PATH ~/.scripts $PATHao ~/.config/fish/fish.config Se algum arquivo ou pasta ainda não existir, apenas crie-o.
Hóquei
2
Você também pode envolver esse script como uma função clipboard(){ ... }e colá-lo .bashrc
Sebastian Nowak
Isso é muito parecido com o que eu fiz, mas eu permito o encadeamento date | cb | tee -a updates.log. Isso enviaria a datesaída do comando para a área de transferência e passaria para o tee -acomando que o anexa a um arquivo e o repassa para stdout. Mas é como um " tee à prova de vazamentos para a área de transferência", porque se você simplesmente não date | cbobtém saída. E, finalmente, também funciona cb > file.txtgist.github.com/RichardBronosky/…
Bruno Bronosky
Uma sugestão - retire o caractere de nova linha à direita para evitar executar o comando ao colar (por exemplo, se copiar e colar um caminho). Eu faço isso modificando o comando xclip -i -selection clipboardparaxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev 25/05
23
Adicione isso ao seu ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Agora, recorte p pastas ec c cópias - mas você também pode fazer coisas mais sofisticadas:
clipp | sed 's/^/ /'| cclip
↑ recua sua área de transferência; bom para sites sem o { }botão de estouro de pilha
Você pode adicioná-lo executando o seguinte:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
Estou usando o Parcellite e xselpara copiar a última mensagem de confirmação do gitmeu gerente da área de transferência (por algum motivo xclipnão funciona):
@AfshinMoazami, o título e a pergunta em si são genéricos. Somente as tags sugerem o sistema unix, e minha resposta cobre o caso quando você tenta obter a data DE um servidor unix para uma máquina Windows, o que pode ser útil para futuros leitores.
precisa saber é
1
Promovido porque sim, útil para administradores do Windows que só têm o Powershell para jogar localmente (embora agora com o LSW realmente funcional, eu possa entrar no bash diretamente do Powershell e fazer minhas coisas * nixy a partir daí).
Flith
Seu trabalho em prompt do DOS, bem como o bash git no Windows 10 ou sejaecho Hello World | clip
5
Para mac, este é um exemplo de maneira de copiar (na área de transferência) colar (da área de transferência) usando a linha de comando
Copie o resultado do pwdcomando para a área de transferência como
Fiz uma pequena ferramenta fornecendo funcionalidade semelhante, sem usar o xclip ou o xsel. stdouté copiado para uma área de transferência e pode ser colado novamente no terminal. Vejo:
Observe que essa ferramenta não precisa de uma sessão X. A área de transferência pode ser usada apenas dentro do terminal e não deve ser colada Ctrl+Vou clique com o botão do meio do mouse em outras janelas X.
Eu venho de um histórico despojado do KDE e não tenho acesso xclip,xsel ou outro material extravagante. Eu tenho um TCSH Konsole para piorar a situação.
Nota: necessário bash, pois o TCSH não suporta argumentos de várias linhas.
Seguido por um alias do TCSH no .cshrc.
alias clipboard xargs -0/path/to/foo
Explicação:
xargs -0tubos stdin em um único argumento. Esse argumento é passado para o executável do bash, que envia uma solicitação de "copiar para a área de transferência" para klipperuso qdbus. O canal para /dev/nullnão imprimir o caractere de nova linha retornado pelo qdbusconsole.
Exemplo de uso:
ls | clipboard
Isso copia o conteúdo da pasta atual para a área de transferência.
Nota: Funciona apenas como um tubo. Use o executável bash diretamente se precisar copiar um argumento.
Observe que, se um xserver (como vcxsvr ou xming) estiver instalado no Windows, uma tela é exibida e o xclipboard está em execução, você pode realmente usar o xclip sem aparência.
bitbyte 16/09/18
0
Apenas para cobrir um caso extremo :) e porque o título da pergunta pergunta (pelo menos agora) como copiar a saída de um comando diretamente para a área de transferência.
Muitas vezes, acho útil copiar a saída do comando depois que ele já foi executado e não quero ou não posso executar o comando novamente.
Nesse cenário, podemos usar o gdm ou um utilitário semelhante do mouse e selecionar usando o mouse. apt-get install gdme, em seguida, clique com o botão direito do mouse ou nas combinações Cntrl + Shift + ce Cntrl + Shift + v para copiar e colar no terminal
Ou, qual é o método preferido para mim (como o mouse não pode selecionar corretamente dentro de um painel quando você tem vários painéis lado a lado e precisa selecionar mais de uma linha), usando o tmux, podemos copiar no buffer do tmux usando o padrão [, espaço, mova para selecionar, digite ou você pode selecionar um bloco de código. Além disso, isso é particularmente útil quando você está dentro de uma das faixas do multiplexador cli como o tmux E precisa selecionar um monte de texto, mas não os números das linhas (minha configuração do vim renderiza os números das linhas)
Depois disso, você pode usar o comando:
tmux save-buffer - | xclip -i
É claro que você pode fazer o alias de algo que você gosta ou ligar diretamente no arquivo de configuração do tmux
Isso serve apenas para fornecer uma resposta conceitual para cobrir esse caso extremo, quando não é possível executar o comando novamente. Se você precisar de exemplos de código mais específicos, informe-me
apt install xclip
ecat file | xclip -sel clip
Respostas:
Eu sempre quis fazer isso e encontrei uma maneira agradável e fácil de fazê-lo. Anotei o procedimento completo para o caso de mais alguém precisar.
Primeiro instale um programa de 16 kB chamado
xclip
:Você pode canalizar a saída
xclip
para ser copiada na área de transferência:Para colar o texto que você acabou de copiar, use:
Para simplificar a vida, você pode configurar um alias no seu arquivo .bashrc como eu fiz:
Para ver como isso é útil, imagine que eu queira abrir meu caminho atual em uma nova janela de terminal (pode haver outras maneiras de fazê-lo como Ctrl+ Tem alguns sistemas, mas isso é apenas para fins ilustrativos):
Observe o
` `
redorv
. Isso é executadov
primeiro como um comando e depois o substitui no local paracd
uso.Copie apenas o conteúdo para a
X
área de transferênciaSe você deseja colar em outro lugar que não seja um
X
aplicativo, tente este:fonte
alias "cs=xclip -selection clipboard"
ealias "vs=xclip -o -selection clipboard"
fazer copiar / colar da área de transferência do sistema mais fácilNo OS X, use
pbcopy
;pbpaste
vai na direção oposta.fonte
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Eu criei uma ferramenta para Linux / OSX / Cygwin que é semelhante a alguns desses outros, mas um pouco exclusiva. Eu chamo
cb
e pode ser encontrado nesta essência do github .Nessa essência, eu demonstro como copiar e colar via linha de comando usando Linux, macOS e Cygwin.
Linux
Mac OS
Cygwin
Nota: originalmente eu pretendia mencionar isso no meu comentário para resposta de Bob Enohp . Mas então percebi que deveria adicionar um README à minha essência. Como o editor de essência não oferece uma visualização do Markdown, usei a caixa de respostas aqui e depois de copiar / colar no meu pensamento de essência, "Eu também poderia enviar a resposta".
cb
Um tee à prova de vazamento para a área de transferência
Esse script é modelado depois
tee
(consulteman tee
).É como seus comandos normais de copiar e colar, mas unificados e capazes de detectar quando você deseja que ele seja encadeado
Exemplos
cópia de
Colar
Encadeamento
Copiar via redirecionamento de arquivo
(cronologicamente, fazia sentido demonstrar isso no final)
fonte
Eu escrevi esse pequeno script que tira o palpite dos comandos de copiar / colar.
A versão Linux do script depende do xclip já estar instalado no seu sistema. O script é chamado de área de transferência.
A versão do script para OS X conta com o pbcopy e o pbpaste pré-instalados em todos os Macs.
O uso do script é muito simples, uma vez que você simplesmente entra ou sai
clipboard
como mostra esses dois exemplos.fonte
pbcopy
epbpaste
no Linux para que ele funciona tanto para Linux e OS X.~/.scripts/clipboard
* Torne-o executávelchmod +x ~/.scripts/clipboard
para o bash: * adicioneexport PATH=$PATH:~/.scripts
no final do~/.bashrc
for fish: * adicioneset PATH ~/.scripts $PATH
ao~/.config/fish/fish.config
Se algum arquivo ou pasta ainda não existir, apenas crie-o.clipboard(){ ... }
e colá-lo .bashrcdate | cb | tee -a updates.log
. Isso enviaria adate
saída do comando para a área de transferência e passaria para otee -a
comando que o anexa a um arquivo e o repassa parastdout
. Mas é como um " tee à prova de vazamentos para a área de transferência", porque se você simplesmente nãodate | cb
obtém saída. E, finalmente, também funcionacb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
paraxargs echo -n | xclip -i -selection clipboard
Adicione isso ao seu
~/.bashrc
:Você pode adicioná-lo executando o seguinte:
fonte
Estou usando o Parcellite e
xsel
para copiar a última mensagem de confirmação dogit
meu gerente da área de transferência (por algum motivoxclip
não funciona):fonte
Sem usar ferramentas externas, se você estiver se conectando ao SSH da visualização do servidor, este é um comando relativamente fácil:
Em um prompt de comando do Windows 7+:
Isso colocará o conteúdo do arquivo remoto na área de transferência local.
(O comando requer a execução do Pageant para a chave, ou será solicitada uma senha.)
fonte
echo Hello World | clip
Para mac, este é um exemplo de maneira de copiar (na área de transferência) colar (da área de transferência) usando a linha de comando
Copie o resultado do
pwd
comando para a área de transferência comoUse o conteúdo na área de transferência como
fonte
Fiz uma pequena ferramenta fornecendo funcionalidade semelhante, sem usar o xclip ou o xsel.
stdout
é copiado para uma área de transferência e pode ser colado novamente no terminal. Vejo:https://sourceforge.net/projects/commandlinecopypaste/
Observe que essa ferramenta não precisa de uma sessão X. A área de transferência pode ser usada apenas dentro do terminal e não deve ser colada Ctrl+Vou clique com o botão do meio do mouse em outras janelas X.
fonte
No Linux com o xclip instalado:
fonte
Com base nas postagens anteriores, acabei com a seguinte solução de alias de peso leve que pode ser adicionada a
.bashrc
:Exemplos:
fonte
Eu venho de um histórico despojado do KDE e não tenho acesso
xclip
,xsel
ou outro material extravagante. Eu tenho um TCSH Konsole para piorar a situação.Requisitos:
qdbus
klipper
xargs
bash
Crie um executável bash
foo.sh
.Nota: necessário bash, pois o TCSH não suporta argumentos de várias linhas.
Seguido por um alias do TCSH no
.cshrc
.Explicação:
xargs -0
tubos stdin em um único argumento. Esse argumento é passado para o executável do bash, que envia uma solicitação de "copiar para a área de transferência" paraklipper
usoqdbus
. O canal para/dev/null
não imprimir o caractere de nova linha retornado peloqdbus
console.Exemplo de uso:
Isso copia o conteúdo da pasta atual para a área de transferência.
Nota: Funciona apenas como um tubo. Use o executável bash diretamente se precisar copiar um argumento.
fonte
Eu costumo executar este comando quando tenho que copiar o meu
ssh-key
:ctrl+v
em qualquer outro lugar.fonte
no Wayland, o xcopy parece não funcionar, use wl-clipboard . por exemplo, no fedora
fonte
Para aqueles que usam o bash instalado no sistema Windows (conhecido como Windows Subsystem para Linux (WSL)), tentar o xclip apresentará um erro:
Em vez disso, lembre-se de que o subsistema linux tem acesso aos executáveis do Windows. É possível usar o clip.exe como
que permite usar o comando colar (ctrl-v).
fonte
Apenas para cobrir um caso extremo :) e porque o título da pergunta pergunta (pelo menos agora) como copiar a saída de um comando diretamente para a área de transferência.
Muitas vezes, acho útil copiar a saída do comando depois que ele já foi executado e não quero ou não posso executar o comando novamente.
Nesse cenário, podemos usar o gdm ou um utilitário semelhante do mouse e selecionar usando o mouse.
apt-get install gdm
e, em seguida, clique com o botão direito do mouse ou nas combinações Cntrl + Shift + ce Cntrl + Shift + v para copiar e colar no terminalOu, qual é o método preferido para mim (como o mouse não pode selecionar corretamente dentro de um painel quando você tem vários painéis lado a lado e precisa selecionar mais de uma linha), usando o tmux, podemos copiar no buffer do tmux usando o padrão [, espaço, mova para selecionar, digite ou você pode selecionar um bloco de código. Além disso, isso é particularmente útil quando você está dentro de uma das faixas do multiplexador cli como o tmux E precisa selecionar um monte de texto, mas não os números das linhas (minha configuração do vim renderiza os números das linhas)
Depois disso, você pode usar o comando:
tmux save-buffer - | xclip -i
É claro que você pode fazer o alias de algo que você gosta ou ligar diretamente no arquivo de configuração do tmux
Isso serve apenas para fornecer uma resposta conceitual para cobrir esse caso extremo, quando não é possível executar o comando novamente. Se você precisar de exemplos de código mais específicos, informe-me
Felicidades
fonte