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.

Web Nash
fonte
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.

Stéphane Chazelas
fonte
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.

ikrabbe
fonte
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.

tjombka
fonte