Copie el contenido de un archivo en el portapapeles sin mostrar su contenido

67

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.

Web Nash
fuente
No puede acceder al contenido de un archivo sin abrirlo ...
123
OK, si es así, ¿hay una manera fácil de copiar un archivo muy grande? Tengo como 1000 líneas.
Web Nash
Si su archivo es enorme, el portapapeles fallará de todos modos. Cuando las restricciones de acceso dicen que no puede leer el archivo, se pierde, por supuesto. Si no puede copiar el archivo porque no puede escribir el archivo, debe preguntarse, si hay otro destino al que pueda escribir.
ikrabbe
Muy grande. 1000 líneas Elegir uno.
123
2
¿Qué es un bloc de notas de Windows, por cierto?
Stéphane Chazelas

Respuestas:

77

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 de X11 CLIPBOARD sin mostrarlo , puede usar la utilidad xclipo xsel.

xclip -sel c < file

O:

xsel -b < file

Para almacenar el contenido de filecomo la selección CLIPBOARD X11.

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

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

Para un archivo codificado en latin1 / iso8859-1 .

Para almacenarlo como un CUT_BUFFER (algunas aplicaciones todavía lo consultan, como xtermcuando nada reclama las selecciones CLIPBOARD o PRIMARY X y no necesita tener un proceso en ejecución para servirlo para las selecciones), aunque probablemente no quiera 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 de file).

Pantalla GNU

GNU screentiene el readbufcomando de sorber el contenido de un archivo en su propio búfer de copiar y pegar (con el que pega ^A]). Entonces:

screen -X readbuf file

Apple OS / X

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

En OS / X, puede usar el pbcopycomando para almacenar contenido arbitrario en buffers de cartón :

pbcopy < file

(se espera que la codificación de caracteres del archivo sea la del entorno local).

Conchas

La mayoría de los depósitos 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 con la que se tira / pega Ctrl-Y, y se desplaza conAlt+Y

zsh CUTBUFFER / killring

En zsh, la pila se almacena en la $killringmatriz y la parte superior de la pila en la $CUTBUFFERvariable, 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 zle-line-initwidget 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 la próxima solicitud. Por ejemplo, si haces:

file-copy file; sleep 2

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

Stéphane Chazelas
fuente
3
Me enfrento a este error:Error: Can't open display: (null)
Marcelo Filho
Mismo problema aquí en fedora 7
Michael Pacheco
@MarceloFilho, xclipy xselson utilidades X11, manipulan las selecciones X11, por lo que solo se pueden usar en un entorno X11 donde $DISPLAYestá configurado.
Stéphane Chazelas
2

Quizás quisiste preguntar esto . Pero cualquier archivo que desee leer debe abrirse mediante alguna llamada al sistema. Si no tiene acceso a un archivo, no puede leerlo. Esa es la idea del acceso restringido.

ikrabbe
fuente
¿Cuál es tu problema real? Si puede leer pero no puede copiar, es posible que no pueda escribir. Pero cuando desea copiar necesita escribir los datos en algún lugar.
ikrabbe
¡¡¡gracias!!! me salvaste la vida)
Alena Kastsiukavets
0

Usando X11:

xclip -o > file

Si puede leer el archivo, el problema de acceso es sobre el servidor de destino.

tjombka
fuente