Acabo de hacer una pregunta relacionada, ya que no puedo hacer que xclip funcione al iniciar sesión en Ubuntu desde Git Bash en Windows: stackoverflow.com/q/60117294/470749
Ryan
1
Guarde el contenido del archivo en el portapapeles. apt install xclipycat file | xclip -sel clip
EsmaeelE
Respuestas:
598
Siempre quise hacer esto y encontré una manera agradable y fácil de hacerlo. Escribí el procedimiento completo en caso de que alguien más lo necesite.
Primero instale un programa de 16 kB llamado xclip:
sudo apt-get install xclip
Luego puede canalizar la salida xclippara copiarla en el portapapeles:
cat file | xclip
Para pegar el texto que acaba de copiar, deberá usar:
xclip -o
Para simplificar la vida, puede configurar un alias en su archivo .bashrc como lo hice yo:
alias "c=xclip"
alias "v=xclip -o"
Para ver qué tan útil es esto, imagine que quiero abrir mi ruta actual en una nueva ventana de terminal (puede haber otras formas de hacerlo como Ctrl+ Ten algunos sistemas, pero esto es solo para fines ilustrativos):
Terminal1:
pwd | c
Terminal2:
cd `v`
Observe el ` ` alrededor v. Esto se ejecuta vprimero como un comando y luego lo sustituye en el lugar para cdsu uso.
Solo copie el contenido al Xportapapeles
cat file | xclip
Si desea pegar en otro lugar que no sea una Xaplicación, pruebe esta:
"cat file | xclip" solo copia el contenido en el portapapeles 'X', si quieres pegarlo en otro lugar que no sea una aplicación 'X', prueba con este: "cat file | xclip -selection portapapeles"
khotyn
55
¡Su elección de manija es apropiada!
Matt Joiner
44
Si desea eliminar el carácter de nueva línea para poder pegar y editar directamente el resultado de "pwd | c", puede hacer "pwd | tr -d '\ n' | xclip -selection c"
Anake
12
también definir alias "cs=xclip -selection clipboard"y alias "vs=xclip -o -selection clipboard"facilitar la copia / pegado desde el portapapeles del sistema
Yibo Yang
1
¿Qué pasa con una solución donde no tengo acceso a sudo y xclip no está instalado?
DanGordon el
179
En OS X, use pbcopy; pbpasteva en la dirección opuesta.
también puede usar cat, si ya trabaja con él: cat file.txt | pbcopy
rtrigoso
3
Sé que el comentario tiene 5 años, pero en caso de que alguien se tope con esto en el futuro, para usarlo con la salida del comando, hazlogit merge-base master some-branch | pbcopy
Sam
62
He creado una herramienta para Linux / OSX / Cygwin que es similar a algunas de estas otras pero ligeramente única. Lo llamo cby se puede encontrar en este github gist .
En esa esencia, demuestro cómo copiar y pegar a través de la línea de comandos usando Linux, macOS y Cygwin.
Nota: Originalmente solo pretendía mencionar esto en mi comentario a la respuesta de Bob Enohp . Pero luego me di cuenta de que debería agregar un LÉAME a mi esencia. Dado que el editor de Gist no ofrece una vista previa de Markdown, utilicé el cuadro de respuesta aquí y después de copiarlo / pegarlo en mi idea principal, "también podría enviar la respuesta".
Esto funcionó perfecto para mí para copiar una salida de comando al portapapeles en la terminal en macOS, ¡gracias!
Joshua Dyck
46
Escribí este pequeño script que elimina las conjeturas de los comandos copiar / pegar.
La versión de Linux del script se basa en que xclip ya está instalado en su sistema. El guión se llama portapapeles.
#!/bin/bash# Linux version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if command -v xclip 1>/dev/null;thenif[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
xclip -i -selection clipboard
else# stdin is not a pipe# clipboard -> stdout
xclip -o -selection clipboard
fielse
echo "Remember to install xclip"fi
La versión de OS X de la secuencia de comandos se basa en pbcopy y pbpaste, que están preinstalados en todos los Mac.
#!/bin/bash# OS X version# Use this script to pipe in/out of the clipboard## Usage: someapp | clipboard # Pipe someapp's output into clipboard# clipboard | someapp # Pipe clipboard's content into someapp#if[[-p /dev/stdin ]];then# stdin is a pipe# stdin -> clipboard
pbcopy
else# stdin is not a pipe# clipboard -> stdout
pbpaste
fi
Usar el script es muy simple, ya que simplemente entra o sale clipboardcomo se muestra en estos dos ejemplos.
Uso los nombres pbcopyy pbpasteen Linux para que funcione tanto para Linux como para OS X.
StackedCrooked
Para hacer que el script funcione globalmente en ubuntu: * Guárdelo en ~/.scripts/clipboard * Haga que sea ejecutable chmod +x ~/.scripts/clipboard para bash: * agregue export PATH=$PATH:~/.scriptsal final de ~/.bashrc for fish: * add set PATH ~/.scripts $PATHto ~/.config/fish/fish.config Si alguno de los archivos o carpetas no existe, simplemente créelos.
Hockey
2
También puede envolver este script como una función clipboard(){ ... }y pegarlo en .bashrc
Sebastian Nowak
Esto es muy similar al que hice, pero permito encadenar date | cb | tee -a updates.log. Eso enviaría el dateresultado del comando al portapapeles y lo pasaría al tee -acomando que lo agrega a un archivo y lo pasa a él stdout. Pero es como una " camiseta a prueba de fugas en el portapapeles" porque si lo hace, date | cbno obtendrá salida. Y finalmente también lo hace cb > file.txtgist.github.com/RichardBronosky/…
Bruno Bronosky
Una sugerencia: elimine el carácter de nueva línea final para evitar ejecutar el comando al pegar (por ejemplo, si copia una ruta). Lo hago modificando el comando xclip -i -selection clipboardaxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev
23
Agregue esto a su ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Ahora recorte las pastas p y las copias c , pero también puede hacer cosas más elegantes:
clipp | sed 's/^/ /'| cclip
↑ sangra tu portapapeles; bueno para sitios sin { }botón de desbordamiento de pila
Puede agregarlo ejecutando esto:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
Estoy usando Parcellite y xselpara copiar el último mensaje de confirmación de gitmi administrador del portapapeles (por alguna razón xclipno funciona):
@AfshinMoazami, el título y la pregunta en sí son genéricos, solo las etiquetas insinúan para el sistema Unix, y mi respuesta cubre el caso cuando intenta obtener la fecha DESDE un servidor Unix a una máquina Windows, lo que puede ser útil para futuros lectores.
d.raev
1
Votado porque sí, útil para los administradores de Windows que solo tienen Powershell para jugar localmente (aunque ahora con LSW realmente funcional, puedo pasar a bash directamente desde Powershell y hacer mis cosas * nixy desde allí).
flith
Está funcionando en el indicador de DOS, así como en git bash en Windows 10, es decirecho Hello World | clip
5
Para mac, esta es una forma de ejemplo para copiar (en el portapapeles) pegar (desde el portapapeles) usando la línea de comandos
Copie el resultado del pwdcomando al portapapeles como
Hice una pequeña herramienta que proporciona una funcionalidad similar, sin usar xclip o xsel. stdoutse copia en un portapapeles y se puede pegar nuevamente en el terminal. Ver:
Tenga en cuenta que esta herramienta no necesita una sesión X. El portapapeles solo se puede usar dentro del terminal y no se debe pegar Ctrl+Vni hacer clic con el botón central del mouse en otras ventanas X.
Nota: Esto debe ser bash ya que TCSH no admite argumentos de varias líneas.
Seguido de un alias TCSH en el .cshrc.
alias clipboard xargs -0/path/to/foo
Explicación:
xargs -0canaliza stdin en un solo argumento. Este argumento se pasa al ejecutable bash que envía una solicitud de "copia al portapapeles" para klipperusar qdbus. La canalización hacia /dev/nulles no imprimir el carácter de nueva línea devuelto por qdbusa la consola.
Ejemplo de uso:
ls | clipboard
Esto copia el contenido de la carpeta actual en el portapapeles.
Nota: Solo funciona como una tubería. Use el ejecutable bash directamente si necesita copiar un argumento.
Tenga en cuenta que si un servidor x (como vcxsvr o xming) está instalado en Windows, hay una pantalla activa y xclipboard se está ejecutando, en realidad puede usar xclip aparentemente.
bitbyte
0
Solo para cubrir un caso límite :) y porque el título de la pregunta pregunta (al menos ahora) cómo copiar la salida de un comando directamente al portapapeles.
Muchas veces encuentro útil copiar la salida del comando después de que ya se ejecutó y no quiero o no puedo ejecutar el comando nuevamente.
Para este escenario, podemos usar gdm o una utilidad de mouse similar y seleccionar usar el mouse. apt-get install gdmy luego el clic derecho o las combinaciones Cntrl + Shift + c y Cntrl + Shift + v para copiar y pegar en el terminal
O, cuál es el método preferido para mí (ya que el mouse no puede seleccionar correctamente dentro de un panel cuando tiene varios paneles uno al lado del otro y necesita seleccionar más de una línea), usando tmux podemos copiar en el búfer tmux usando el estándar [, espacio, mover para seleccionar, ingresar o puede seleccionar un bloque de código. Además, esto es particularmente útil cuando está dentro de uno de los carriles del multiplexor cli como tmux Y necesita seleccionar un montón de texto, pero no los números de línea (mi configuración de vim representa los números de línea)
Después de esto, puede usar el comando:
tmux save-buffer - | xclip -i
Por supuesto, puede asignarle un alias a algo que le guste o vincular directamente en el archivo de configuración de tmux
Esto es solo para darle una respuesta conceptual para cubrir este caso límite cuando no es posible ejecutar el comando nuevamente. Si necesita ejemplos de código más específicos, avíseme
apt install xclip
ycat file | xclip -sel clip
Respuestas:
Siempre quise hacer esto y encontré una manera agradable y fácil de hacerlo. Escribí el procedimiento completo en caso de que alguien más lo necesite.
Primero instale un programa de 16 kB llamado
xclip
:Luego puede canalizar la salida
xclip
para copiarla en el portapapeles:Para pegar el texto que acaba de copiar, deberá usar:
Para simplificar la vida, puede configurar un alias en su archivo .bashrc como lo hice yo:
Para ver qué tan útil es esto, imagine que quiero abrir mi ruta actual en una nueva ventana de terminal (puede haber otras formas de hacerlo como Ctrl+ Ten algunos sistemas, pero esto es solo para fines ilustrativos):
Observe el
` `
alrededorv
. Esto se ejecutav
primero como un comando y luego lo sustituye en el lugar paracd
su uso.Solo copie el contenido al
X
portapapelesSi desea pegar en otro lugar que no sea una
X
aplicación, pruebe esta:fuente
alias "cs=xclip -selection clipboard"
yalias "vs=xclip -o -selection clipboard"
facilitar la copia / pegado desde el portapapeles del sistemaEn OS X, use
pbcopy
;pbpaste
va en la dirección opuesta.fuente
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
He creado una herramienta para Linux / OSX / Cygwin que es similar a algunas de estas otras pero ligeramente única. Lo llamo
cb
y se puede encontrar en este github gist .En esa esencia, demuestro cómo copiar y pegar a través de la línea de comandos usando Linux, macOS y Cygwin.
Linux
Mac OS
Cygwin
Nota: Originalmente solo pretendía mencionar esto en mi comentario a la respuesta de Bob Enohp . Pero luego me di cuenta de que debería agregar un LÉAME a mi esencia. Dado que el editor de Gist no ofrece una vista previa de Markdown, utilicé el cuadro de respuesta aquí y después de copiarlo / pegarlo en mi idea principal, "también podría enviar la respuesta".
cb
Una camiseta a prueba de fugas en el portapapeles
Este script está modelado después
tee
(verman tee
).Es como sus comandos normales de copiar y pegar, pero unificado y capaz de detectar cuándo desea que se pueda encadenar
Ejemplos
Copiar
Pegar
Encadenamiento
Copiar a través de la redirección de archivos
(cronológicamente tenía sentido demostrar esto al final)
fuente
Escribí este pequeño script que elimina las conjeturas de los comandos copiar / pegar.
La versión de Linux del script se basa en que xclip ya está instalado en su sistema. El guión se llama portapapeles.
La versión de OS X de la secuencia de comandos se basa en pbcopy y pbpaste, que están preinstalados en todos los Mac.
Usar el script es muy simple, ya que simplemente entra o sale
clipboard
como se muestra en estos dos ejemplos.fuente
pbcopy
ypbpaste
en Linux para que funcione tanto para Linux como para OS X.~/.scripts/clipboard
* Haga que sea ejecutablechmod +x ~/.scripts/clipboard
para bash: * agregueexport PATH=$PATH:~/.scripts
al final de~/.bashrc
for fish: * addset PATH ~/.scripts $PATH
to~/.config/fish/fish.config
Si alguno de los archivos o carpetas no existe, simplemente créelos.clipboard(){ ... }
y pegarlo en .bashrcdate | cb | tee -a updates.log
. Eso enviaría eldate
resultado del comando al portapapeles y lo pasaría altee -a
comando que lo agrega a un archivo y lo pasa a élstdout
. Pero es como una " camiseta a prueba de fugas en el portapapeles" porque si lo hace,date | cb
no obtendrá salida. Y finalmente también lo hacecb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
axargs echo -n | xclip -i -selection clipboard
Agregue esto a su
~/.bashrc
:Puede agregarlo ejecutando esto:
fuente
Estoy usando Parcellite y
xsel
para copiar el último mensaje de confirmación degit
mi administrador del portapapeles (por alguna razónxclip
no funciona):fuente
Sin usar herramientas externas, si se está conectando a la vista de servidor SSH, este es un comando relativamente fácil:
Desde un símbolo del sistema de Windows 7+:
Esto colocará el contenido del archivo remoto en su portapapeles local.
(El comando requiere ejecutar el concurso para la clave, o le pedirá una contraseña).
fuente
echo Hello World | clip
Para mac, esta es una forma de ejemplo para copiar (en el portapapeles) pegar (desde el portapapeles) usando la línea de comandos
Copie el resultado del
pwd
comando al portapapeles comoUsa el contenido en el portapapeles como
fuente
Hice una pequeña herramienta que proporciona una funcionalidad similar, sin usar xclip o xsel.
stdout
se copia en un portapapeles y se puede pegar nuevamente en el terminal. Ver:https://sourceforge.net/projects/commandlinecopypaste/
Tenga en cuenta que esta herramienta no necesita una sesión X. El portapapeles solo se puede usar dentro del terminal y no se debe pegar Ctrl+Vni hacer clic con el botón central del mouse en otras ventanas X.
fuente
En Linux con xclip instalado:
fuente
Basado en publicaciones anteriores, terminé con la siguiente solución de alias de peso ligero que se puede agregar a
.bashrc
:Ejemplos:
fuente
Vengo de un fondo despojado de KDE y no tienen acceso a
xclip
,xsel
o la otra materia de lujo. Tengo un TCSH Konsole para empeorar las cosas.Requisitos:
qdbus
klipper
xargs
bash
Crea un bash ejecutable
foo.sh
.Nota: Esto debe ser bash ya que TCSH no admite argumentos de varias líneas.
Seguido de un alias TCSH en el
.cshrc
.Explicación:
xargs -0
canaliza stdin en un solo argumento. Este argumento se pasa al ejecutable bash que envía una solicitud de "copia al portapapeles" paraklipper
usarqdbus
. La canalización hacia/dev/null
es no imprimir el carácter de nueva línea devuelto porqdbus
a la consola.Ejemplo de uso:
Esto copia el contenido de la carpeta actual en el portapapeles.
Nota: Solo funciona como una tubería. Use el ejecutable bash directamente si necesita copiar un argumento.
fuente
Normalmente ejecuto este comando cuando tengo que copiar mi
ssh-key
:ctrl+v
en cualquier otro lugar.fuente
en Wayland xcopy no parece funcionar, use wl-clipboard en su lugar. por ejemplo, en fedora
fuente
Para aquellos que usan bash instalado en su sistema de Windows (conocido como Windows Subsystem for Linux (WSL)), intentar xclip dará un error:
En cambio, recuerde que el subsistema de Linux tiene acceso a los ejecutables de Windows. Es posible usar clip.exe como
que le permite usar el comando pegar (ctrl-v).
fuente
Solo para cubrir un caso límite :) y porque el título de la pregunta pregunta (al menos ahora) cómo copiar la salida de un comando directamente al portapapeles.
Muchas veces encuentro útil copiar la salida del comando después de que ya se ejecutó y no quiero o no puedo ejecutar el comando nuevamente.
Para este escenario, podemos usar gdm o una utilidad de mouse similar y seleccionar usar el mouse.
apt-get install gdm
y luego el clic derecho o las combinaciones Cntrl + Shift + c y Cntrl + Shift + v para copiar y pegar en el terminalO, cuál es el método preferido para mí (ya que el mouse no puede seleccionar correctamente dentro de un panel cuando tiene varios paneles uno al lado del otro y necesita seleccionar más de una línea), usando tmux podemos copiar en el búfer tmux usando el estándar [, espacio, mover para seleccionar, ingresar o puede seleccionar un bloque de código. Además, esto es particularmente útil cuando está dentro de uno de los carriles del multiplexor cli como tmux Y necesita seleccionar un montón de texto, pero no los números de línea (mi configuración de vim representa los números de línea)
Después de esto, puede usar el comando:
tmux save-buffer - | xclip -i
Por supuesto, puede asignarle un alias a algo que le guste o vincular directamente en el archivo de configuración de tmux
Esto es solo para darle una respuesta conceptual para cubrir este caso límite cuando no es posible ejecutar el comando nuevamente. Si necesita ejemplos de código más específicos, avíseme
Salud
fuente