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

44

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.

Eu quero copiá-los para a área de transferência para que eu possa colá-lo no bloco de notas do meu windows.

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

    
por Web Nash 24.06.2015 / 14:35

2 respostas

52

X11

Se 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 CLIENDE do X11 sem exibindo , você pode usar o xclip ou xsel utility.

xclip -sel c < file

Ou:

xsel -b < file

Para armazenar o conteúdo de file como a seleção CLIPBOARD X11.

Observe que ele deve ser armazenado usando uma codificação UTF-8 ou, caso contrário, a colagem não funcionará corretamente. Se o file é codificado usando um outro conjunto de caracteres, você deve converter para UTF-8 primeiro, como:

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

Para um arquivo codificado em latin1 / iso8859-1 .

Para armazená-lo como um CUT_BUFFER (aqueles ainda são consultados por alguns aplicativos como xterm quando nada reclama as seleções CLIPBOARD ou PRIMARY X e não precisam ter um processo em execução para servir como para seleções), embora você provavelmente não vai querer ou precisar 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 screen tem o comando readbuf para introduzir o conteúdo de um arquivo em seu próprio buffer de copiar e colar (que você cola com ^A] ). Então:

screen -X readbuf file

Apple OS / X

Embora o Apple OS / X possa usar o X11. Não é por padrão, a menos que você execute um aplicativo X11. Você seria capaz de usar xclip ou xsel lá como OS / X deve sincronizar a seleção X11 CLIPBOARD com buffers de pasteboard OS / X, mas isso seria um desperdício para iniciar o servidor X11 apenas para isso. / p>

No OS / X, você pode usar o pbcopy comando para armazenar conteúdo arbitrário em buffers pasteboard :

pbcopy < file

(espera-se que a codificação de caracteres do arquivo seja a do local).

Shells

A maioria dos shells tem 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 que você puxa / cola com Ctrl-Y e percorre com Alt + Y

zsh CUTBUFFER / killring

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

Como eles só estão disponíveis através do ZLE, fazê-lo com comandos é um pouco confuso:

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 widget especial zle-line-init é executado uma vez no início de cada novo prompt de comando. O que isso significa é que o arquivo só será copiado no próximo prompt. Por exemplo, se você fizer:

file-copy file; sleep 2

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

    
por 24.06.2015 / 15:07
1

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

    
por 24.06.2015 / 14:43

Tags