linux - una - guardar un archivo en ubuntu
¿Cómo puedo copiar la salida de un comando directamente en mi portapapeles? (10)
Agrega esto a tu ~/.bashrc
:
# Now `cclip'' copies and `clipp'' pastes''
alias cclip=''xclip -selection clipboard''
alias clipp=''xclip -selection clipboard -o''
Ahora recorte p pegue yc copie copias, pero también puede hacer cosas más sofisticadas:
clipp | sed ''s/^/ /'' | cclip
↑ sangra tu portapapeles; bueno para sitios sin el botón {} de desbordamiento de pila
Puedes agregarlo ejecutando esto:
printf "/nalias clipp=/'xclip -selection c -o/'/n" >> ~/.bashrc
printf "/nalias cclip=/'xclip -selection c -i/'/n" >> ~/.bashrc
¿Cómo puedo canalizar la salida de un comando en mi portapapeles y volver a pegarlo cuando uso un terminal? Por ejemplo:
cat file | clipboard
En Linux con xclip instalado:
xclip - portapapeles de selección <archivo
En OS X, use pbcopy
; pbpaste
va en la dirección opuesta.
Escribí este pequeño script que elimina el trabajo de adivinación de los comandos de copiar / pegar.
La versión de Linux del script se basa en que xclip ya está instalado en su sistema. El script 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; then
if [[ -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
fi
else
echo "Remember to install xclip"
fi
La versión OS X del script se basa en pbcopy y pbpaste que están preinstaladas 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
El uso de la secuencia de comandos es muy simple, ya que simplemente entras o sales del clipboard
como se muestra en estos dos ejemplos.
$ cat file | clipboard
$ clipboard | less
Estoy usando Parcellite y xsel
para copiar el último mensaje de confirmación de git
a mi administrador de portapapeles (por alguna razón, xclip
no funciona):
$ git log -1 --pretty=%B | xsel -i -b
He creado una herramienta para Linux / OSX / Cygwin que es similar a algunas de estas otras pero ligeramente única. Lo llamo cb
y gist.github.com/RichardBronosky/… .
En ese sentido, demuestro cómo copiar y pegar a través de la línea de comandos usando Linux, macOS y Cygwin.
Linux
_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
Mac OS
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
Cygwin
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
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 README 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 global, "también podría enviar la respuesta".
gist.github.com/RichardBronosky/…
Una camiseta a prueba de fugas al portapapeles.
Este script está modelado después de tee
(ver man tee
).
Es como sus comandos normales de copiar y pegar, pero unificados y capaces de detectar cuándo desea que sea posible.
Ejemplos
Dupdo
$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017
Pegar
# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017
Encadenamiento
$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017
Copia vía redireccionamiento de archivos
(cronológicamente tenía sentido demo esto al final)
# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
Hice una pequeña herramienta que proporciona una funcionalidad similar, sin usar xclip o xsel. stdout
se copia a un portapapeles y se puede pegar de nuevo 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 con Ctrl + V o con el botón central del mouse en otras X-ventanas.
Para aquellos que usan bash instalado en su sistema de Windows (conocido como Windows Subsystem for Linux (WSL)), el intento de xclip dará un error:
Error: Can''t open display: (null)
En su lugar, recuerde que el subsistema linux tiene acceso a los ejecutables de Windows. Es posible usar clip.exe como
echo hello | clip.exe
que le permite usar el comando de pegar (ctrl-v).
Siempre quise hacer esto y encontré una forma agradable y fácil de hacerlo. Escribí el procedimiento completo por si alguien más lo necesita.
Primero instale un programa de 16 KB llamado xclip
:
sudo apt-get install xclip
A continuación, puede canalizar la salida en xclip
para copiarla en el portapapeles:
cat file | xclip
Para pegar el texto que acaba de copiar, deberá utilizar:
xclip -o
Para simplificar la vida, puedes configurar un alias en tu archivo .bashrc como lo hice:
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 + T en algunos sistemas, pero esto es solo con fines ilustrativos):
Terminal 1:
pwd | c
Terminal 2:
cd `v`
Note el ` `
alrededor de v
. Esto ejecuta v
como un comando primero y luego lo sustituye in situ para que cd
use.
Solo copia el contenido al portapapeles X
cat file | xclip
Si desea pegar en otro lugar que no sea una aplicación X
, intente esto:
cat file | xclip -selection clipboard
Sin usar herramientas externas, si se está conectando a la vista del servidor SSH, este es un comando relativamente fácil:
Desde un símbolo del sistema de Windows 7+:
ssh user@server cat /etc/passwd | clip
Esto colocará el contenido del archivo remoto en su portapapeles local.
(El comando requiere que se ejecute Pageant para la clave, o le pedirá una contraseña).