Qual é a linha de comando equivalente a copiar um arquivo para a área de transferência?

89

Qual é a linha de comando equivalente a pressionar CTRL + C sobre um arquivo no gerenciador de arquivos para que o arquivo (não o nome do arquivo) seja copiado para a área de transferência?

Uma situação em que isso pode ser útil e rápido, por exemplo, é quando você deseja copiar para a área de transferência um arquivo do diretório em que está no terminal para colar rapidamente o arquivo no diretório em que está no gerenciador de arquivos. Há outros.

Strapakowsky
fonte
Isso realmente não parece uma duplicata para mim. Uma resposta é sobre copy paste geral em geral, e este é de cerca de copiar um arquivo assunto específico
Ulysse BN

Respostas:

104

Quando você pressiona Ctrl-C sobre um arquivo no gerenciador de arquivos, o conteúdo do arquivo NÃO é copiado para a área de transferência. Um teste simples: selecione um arquivo no gerenciador de arquivos, pressione Ctrl-C, abra um editor de texto, pressione Ctrl-V. O resultado não é o conteúdo do arquivo, mas o caminho completo.

Na realidade, a situação é um pouco mais complicada porque você não pode fazer o contrário - copie uma lista de nomes de arquivos de um editor de texto e cole-os no gerenciador de arquivos.

Para copiar alguns dados da linha de comando para a área de transferência do X11, você pode usar o xclipcomando, que pode ser instalado com o

sudo apt-get install xclip

copiar o conteúdo de um arquivo ou a saída de algum comando para a área de transferência

cat ./myfile.txt|xclip -i

o texto pode ser colado em algum lugar usando o botão do meio do mouse (isso é chamado de "buffer de seleção primário").

Se você deseja copiar dados para a seleção "área de transferência", para que possam ser colados em um aplicativo com Ctrl-V, você pode

cat ./myfile.txt|xclip -i -selection clipboard

Para poder copiar arquivos da linha de comando e colá-los em um gerenciador de arquivos, você precisa especificar um "átomo de destino" correto para que o gerenciador de arquivos reconheça os dados na área de transferência e também forneça os dados no formato correto. Felizmente, no caso de copiar arquivos em um gerenciador de arquivos, é apenas uma lista de nomes de arquivos absolutos, cada um em uma nova linha, algo que é fácil de gerar usando o findcomando:

find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

(pelo menos isso funciona para mim no KDE). Agora você pode agrupar um pequeno script que você pode chamar, digamos cb:

#!/bin/sh
xclip -i -selection clipboard -t text/uri-list

então você o coloca ~/bin, define o bit executável e o usa assim:

find ${PWD} -name "*.txt"| cb

Legal, não é?

Sergey
fonte
Bom, mas funciona apenas para texto e não é realmente o arquivo, apenas o texto. Suponha que você tenha um arquivo jpg?
precisa saber é o seguinte
Sim, eu sabia desse efeito: se você copiar um arquivo do gerenciador de arquivos, se colar em outra pasta, cole o arquivo, mas se colar em um editor de texto, obterá o caminho do arquivo.
precisa saber é o seguinte
No caso de arquivos binários (jpg etc.), tudo é muito mais complicado. Aqui eu fiz uma pergunta inspirada pelo seu - unix.stackexchange.com/questions/53503/... - ter uma leitura sobre "átomos-alvo" e outras coisas
Sergey
11
Ouvi dizer que o xclip também suporta a cópia de arquivos com xclip-copyfilee xclip-pastefile. Eu realmente não o usei, mas pode ser uma solução.
Gladen 1/11/12
Uau, @Gladen, acho que você precisa publicá-la como uma resposta separada. Embora ela não funciona ao usar xclip-copyfilee depois xclip-pastefile, mas não parece trabalhar com gerenciador de arquivos Ubuntu ...
Sergey
9

Ouvi dizer que o xclip também suporta a cópia de arquivos com xclip-copyfilee xclip-pastefile. Eu realmente não o usei, mas pode ser uma solução.

Gladen
fonte
Isso apenas copia os nomes dos arquivos, não o conteúdo dos arquivos. Basta dar uma olhada nos exemplos da página de manual, ou seja,$ man xclip-copyfile
Craig
0

O Mac OS possui pbcopyuma sintaxe mais fácil:

pbcopy < ~/.ssh/id_rsa.pub 

ou

cat ~/.ssh/id_rsa.pub  | pbcopy

Para simular pbcopyno Ubuntu com xclip(instalado via sudo apt install xclip):

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Penghe Geng
fonte