GNU/Linux >> Tutoriales Linux >  >> Linux

¿Copiar el contenido de un archivo en el portapapeles sin mostrar su contenido?

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

Quiero copiarlos en el portapapeles para poder volver a pegarlos en mi bloc de notas de Windows.

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

Respuesta aceptada:

X11

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

xclip -sel c < file

O:

xsel -b < file

para almacenar el contenido del file como la selección de 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, el pegado no funcionará correctamente. Si el file está codificado con otro conjunto de caracteres, primero debe convertir 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 lo hace.

Para almacenarlo como CUT_BUFFER (aún son consultados por algunas aplicaciones como xterm cuando nada reclama las selecciones CLIPBOARD o PRIMARY X y no necesita tener un proceso ejecutándose para servirlo como para las selecciones), aunque probablemente no quiera o necesite usar eso hoy en día:

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

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

Pantalla GNU

GNU screen tiene el readbuf comando para absorber 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 utiliza X11. No lo hace de forma predeterminada a menos que ejecute una aplicación X11. Podrías usar xclip o xsel allí, como OS/X, debería sincronizar la selección de X11 CLIPBOARD con los búferes de la mesa de trabajo de OS/X, pero sería un desperdicio iniciar el servidor X11 solo para eso.

En OS/X, puede usar pbcopy comando para almacenar contenido arbitrario en pasteboard tampones:

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 se tira/pega con Ctrl-Y y recorrer con Alt+Y

Relacionado:¿Tomar la primera columna de 2 archivos y escribirla en un tercer archivo?

zsh BUFFER DE CORTE/anillo de muerte

En zsh , la pila se almacena en el $killring matriz y la parte superior de la pila en el $CUTBUFFER aunque esas variables solo están disponibles desde 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
}
mycommand | pbcopy
mycommand | pbcopy
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

El zle-line-init El widget especial 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.


Linux
  1. Un poco de magia de copia de archivos SSH en la línea de comando

  2. Todo está en el archivo de puntos - YADM y Homeshick

  3. ¿Cómo almacenar la salida de SHOW PROCESSLIST en un archivo en MySQL?

  4. lsinitramfs:enumera el contenido del sistema de archivos initrd.

  5. ¿Cómo copiar el búfer de copia de pantalla GNU al portapapeles?

Copiar archivos en la terminal de Linux

Cómo editar un archivo sin cambiar sus marcas de tiempo en Linux

Copie el contenido del archivo en el portapapeles sin mostrarlo

Cómo ver el contenido de un archivo o archivo comprimido en Linux

Ver el contenido de un archivo en la línea de comandos de Linux

¿Cómo mostrar el contenido del archivo de forma recursiva?