file-copy – Copie el contenido de un archivo en el portapapeles sin mostrar su contenido

Pregunta:

Cómo copiar el contenido de un archivo en UNIX sin mostrar el contenido del archivo. No quiero cat o vi para ver el contenido.

Quiero copiarlos al portapapeles para poder pegarlos nuevamente en mi bloc de notas de Windows.

No puedo copiar el archivo de ese servidor a otro debido a restricciones de acceso.

Respuesta:

X11

Si usa X11 (la GUI más común en sistemas tradicionales basados ​​en Unix o Linux), para copiar el contenido de un archivo en la selección del xclip X11 sin mostrarlo , puede usar la utilidad xclip o xsel .

xclip -sel c < file

O:

xsel -b < file

para almacenar el contenido del file como la selección CLIPBOARD X11.

Para almacenar la salida de un comando:

mycommand | xclip -sel c
mycommand | xsel -b

Tenga en cuenta que debe almacenarse utilizando una codificación UTF-8 o, de lo contrario, pegar no funcionará correctamente. Si el file está codificado con otro juego de caracteres, primero debe convertirlo a UTF-8, como:

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

para un archivo codificado en latin1 / iso8859-1 .

xsel no funciona con datos binarios (no acepta bytes nulos), pero xclip sí.

Para almacenarlo como CUT_BUFFER (algunas aplicaciones como xterm todavía las consultan cuando nada reclama las selecciones CLIPBOARD o PRIMARY X y no es necesario que haya un proceso en ejecución para servirlo como para las selecciones), aunque probablemente no querrá o necesito usar eso hoy en día:

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

(elimina los caracteres de nueva línea finales del file ).

Pantalla GNU

La screen GNU tiene el comando readbuf para readbuf el contenido de un archivo en su propio búfer de copiar y pegar (que se pega con ^A] ). Entonces:

screen -X readbuf file

Apple OS / X

Aunque Apple OS / X puede usar X11. No lo hace de forma predeterminada a menos que ejecute una aplicación X11. Podrías usar xclip o xsel allí, ya que OS / X debería sincronizar la selección del CLIPBOARD X11 con los búferes de escritorio de OS / X, pero sería un desperdicio iniciar el servidor X11 solo por eso.

En OS / X, puede usar el comando pbcopy para almacenar contenido arbitrario en búferes de escritorio :

pbcopy < file

(Se espera que la codificación de caracteres del archivo sea la de la configuración regional). Para almacenar la salida de un comando:

mycommand | pbcopy

Conchas

La mayoría de los shells tienen sus propios búferes de copiar y pegar. En el modo emacs, las operaciones de cortar y copiar almacenan el texto copiado / cortado en una pila que tiras / pegas con Ctrl-Y , y recorres con Alt + Y

zsh CUTBUFFER / killring

En zsh , la pila se almacena en la matriz $killring y la parte superior de la pila en la variable $CUTBUFFER , aunque esas variables solo están disponibles en los widgets de Zsh Line Editor (zle) y algunos widgets especializados son la forma preferida de manipularlos.

Debido a que solo están disponibles a través de ZLE, hacerlo con comandos es un poco 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       

El widget especial zle-line-init se ejecuta una vez al comienzo de cada nuevo símbolo del sistema. Lo que eso significa es que el archivo solo se copiará en el siguiente mensaje. Por ejemplo, si lo hace:

file-copy file; sleep 2

El archivo solo se copiará después de esos 2 segundos.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım