Copie o conteúdo de um arquivo na área de transferência sem exibir seu conteúdo


67

Como copiar o conteúdo de um arquivo no UNIX sem exibir o conteúdo do arquivo. Eu não quero gato ou vi para ver o conteúdo.

Quero copiá-los para a área de transferência, para que eu possa colá-lo novamente no bloco de notas do Windows.

Não consigo copiar o arquivo desse servidor para outro devido a restrições de acesso.


Você não pode acessar o conteúdo de um arquivo sem abri-lo ...
— 123

OK, se houver, existe uma maneira fácil de copiar um arquivo muito grande. Eu tenho 1000 linhas.
— Web

se o seu arquivo for grande, a área de transferência falhará de qualquer maneira. Quando as restrições de acesso dizem que você não pode ler o arquivo, está perdido. Se você não pode copiar o arquivo porque não pode gravá-lo, deve se perguntar se há outro destino para o qual possa gravar.
— ikrabbe

Muito grande 1000 linhas. Escolha um.
— 123

2
O que é um bloco de notas do Windows ?
— Stéphane Chazelas

Respostas:


77

X11

Se você estiver usando o X11 (a GUI mais comum em sistemas tradicionais baseados em Unix ou Linux), para copiar o conteúdo de um arquivo para a seleção CLIPBOARD do X11 sem exibi- lo, poderá usar o utilitário xclipou xsel.

xclip -sel c < file

Ou:

xsel -b < file

Para armazenar o conteúdo filecomo a seleção CLIPBOARD X11.

Observe que ele deve ser armazenado usando uma codificação UTF-8 ou colar não funcionará corretamente. Se filefor codificado usando um outro conjunto de caracteres, você deverá converter primeiro em UTF-8, como:

iconv -f latin1 -t utf8 | xclip -sel c

Para um arquivo codificado em latin1 / iso8859-1 .

Para armazená-lo como um CUT_BUFFER (esses ainda são consultados por alguns aplicativos, como xtermquando nada reivindica as seleções CLIPBOARD ou PRIMARY X e não precisa ter um processo em execução para servi-lo como nas seleções), embora você provavelmente não queira ou precisa usar isso hoje em dia:

xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"

(remove os caracteres de nova linha à direita de file).

Tela GNU

O GNU screentem o readbufcomando de extrair o conteúdo de um arquivo em seu próprio buffer de copiar e colar (com o qual você cola ^A]). Assim:

screen -X readbuf file

Apple OS / X

Embora o Apple OS / X possa usar o X11. Por padrão, a menos que você execute um aplicativo X11. Você seria capaz de usar xclipou o xselOS / X deve sincronizar a seleção do X11 CLIPBOARD com os buffers do OS / X, mas seria um desperdício iniciar o servidor X11 apenas para isso.

No OS / X, você pode usar o pbcopycomando para armazenar conteúdo arbitrário em buffers de papelão :

pbcopy < file

(a codificação de caracteres do arquivo deve ser a do código do idioma).

Cartuchos

A maioria dos shells possui seus próprios buffers de copiar e colar. No modo emacs, as operações de recortar e copiar armazenam o texto copiado / recortado em uma pilha na qual você puxa / cola Ctrl-Ye percorre comAlt+Y

zsh CUTBUFFER / killring

Em zsh, a pilha é armazenada na $killringmatriz e a parte superior da pilha na $CUTBUFFERvariável, embora essas variáveis ​​estejam disponíveis apenas nos widgets Zsh Line Editor (zle) e alguns widgets especializados sejam a maneira preferida de manipulá-los.

Como esses estão disponíveis apenas através do ZLE, fazê-lo com comandos é um pouco complicado:

zmodload zsh/mapfile
zle-line-init() {
  if [ -n "$FILE_TO_COPY" ]; then
    zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
    unset FILE_TO_COPY
  fi
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

O zle-line-initwidget especial é executado uma vez no início de cada novo prompt de comando. O que isso significa é que o arquivo será copiado apenas no próximo prompt. Por exemplo, se você fizer:

file-copy file; sleep 2

O arquivo será copiado somente após esses 2 segundos.


3
Estou enfrentando este erro:Error: Can't open display: (null)
— Marcelo Filho

Mesmo problema aqui no fedora 7
— Michael Pacheco

@MarceloFilho xclipe xselsão utilitários X11, eles manipulam as seleções X11, portanto, só podem ser usados ​​em um ambiente X11 onde $DISPLAYestá definido.
— Stéphane Chazelas

2

Talvez você queira perguntar isso . Mas qualquer arquivo que você deseja ler deve ser aberto por alguma chamada do sistema. Se você não tem acesso a um arquivo, não pode lê-lo. Essa é a ideia de acesso restrito.


Então, qual é o seu problema real? Se você pode ler, mas não pode copiar, pode não ser capaz de escrever. Mas quando você deseja copiar, você precisa gravar os dados em algum lugar.
— ikrabbe

obrigado!!! você salvou minha vida)
— Alena Kastsiukavets

0

Usando o X11:

xclip -o > file

Se você pode ler o arquivo, o problema de acesso é sobre o servidor de destino.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.