Linux - copiar / cortar arquivo na área de transferência

1

Eu queria saber se é possível copiar ou cortar um arquivo na área de transferência e colá-lo em outro diretório mais tarde. Fiz uma pesquisa rápida e só encontrei informações sobre como copiar o conteúdo de um arquivo para a área de transferência, mas não o próprio arquivo.

Preto
fonte
É assim que a maioria dos gerenciadores de arquivos funciona, certo? Recortar / copiar um arquivo de uma pasta, navegar para outra pasta e colar, mover ou copiar o arquivo. Ele armazena apenas o nome do arquivo / caminho na área de transferência "real". Qual programa você está usando? Ou você deseja excluir / mover o arquivo primeiro e depois escolher um destino para o segundo ? Parece que é necessário usar uma pasta temporária (como / tmp), recorte e cole para temp primeiro e depois recorte e cole do temp para o destino real.
Xen2050 04/04
Como assim, que programa eu estou usando? Eu apenas uso o console e tento copiar ou cortar um arquivo e depois cdpara outro diretório e colá-lo lá.
Preto
Você quer dizer bash, em um terminal? Como no ubuntu, procurando e executando o "Terminal" ? Bash pode não cortar e arrancar na linha de comando, com ctrl-K ou W & outros, e ctrl-Y, mas isso é um pouco diferente
Xen2050

Respostas:

3

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 é?

Fonte do askubuntu

manjesh23
fonte
Obrigado. É muito mais complicado do que eu esperava.
preto
11
Tente isso deve funcionar. Ajude-me com o feedback também após o teste.
precisa saber é o seguinte
Eu tentei e funciona. Mas eu precisava colocar o cbscript não no diretório inicial ~/bin, tive que colocá-lo na /binpasta que está no diretório raiz. Parece que sua solução é apenas para copiar o conteúdo de um arquivo, mas tento copiar / cortar o próprio arquivo para que possa copiá-lo para outro local. Assim como eu usaria ctrl+cou ctrl+xcole-o em outro local, mas todos no console. Desculpe meu Inglês.
preto
Entendi, deixe-me verificar isso e mantê-lo informado.
precisa saber é o seguinte
0

Caso decida colocar o caminho do arquivo na área de transferência do sistema, você poderá usá-lo em ~/.bashrc:

yankpath() {
  filepath=$(realpath "$1")
  # We use the pipe to put the file name on the clipboard.
  # If we did "xclip -selection clipboard $filepath", the
  # contents of the file would be on the clipboard.
  # -rmlastnl removes the ending newline from the file path.
  echo $filepath | xclip -rmlastnl -selection clipboard
}

Em seguida, você pode yankpath ./a_filee todo o caminho do arquivo a_fileestará na área de transferência do sistema X.

Matthias Braun
fonte
Para evitar eco de anexando caracteres EOL para o uso de conteúdo ecoou "echo -n 'blá'"
oᴉɹǝɥɔ
-1

Isso funciona no terminal mac e linux no Digital Ocean.

pbcopy <~ / .ssh / id_rsa.pub

Flavio
fonte