A menudo quiero publicar algo en un error de github como
$ ping google.com
PING google.com (216.58.195.238): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 216.58.195.238: icmp_seq=0 ttl=53 time=1064.747 ms
En este momento ejecuto el comando, uso screen
's C-a C-[
para resaltar el área, enter
copiarlo en ese búfer, pegarlo vim
, escribirlo en un archivo y luego cat
eso pbcopy
. Tiene que haber una mejor manera.
¿Hay un comando que se puede ejecutar el cual será tee
el tipo de comando que con el prefijo $
y la salida entera pbcopy
? ¿O algo cercano? Me imagino
$ demo ping google.com
PING google.com (216.58.195.238): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 216.58.195.238: icmp_seq=0 ttl=53 time=1064.747 ms
^C
$
y ahora lo original que pegué está en mi portapapeles mac.
command-line
clipboard
Paul Tarjan
fuente
fuente
pbcopy
y sería la misma pregunta.pbcopy
yaC-a C-]
su stdin.Respuestas:
Una opción es habilitar el rastreo (con
-x
) en una subshell que ejecuta el comando. Esto escribe el comando en STDERR y la salida estándar en STDOUT. Recoge ambos y canaliza apbcopy
:fuente
set -x
Es un enfoque interesante. ¡Bien descrito!+
estar$
PS4='\\$ ${BASH_SOURCE[0]:-inherited}:line ${LINENO}:${FUNCNAME[0]:+${FUNCNAME[0]}(): } '
. El "\\ $" convierte a "$" en el primer carácter, y ese carácter se repite para mostrar el nivel de la llamada. ($ para el primer nivel, $$ para el segundo nivel, etc.)Puede usar la
script
utilidad para capturar toda la interacción, incluido su indicador, comando y su salida:Luego puede revisar el archivo y su contenido ya estará en su portapapeles.
Tú también puedes:
fuente
$
y me permite hacer muchos comandos donde solo quiero uno, y agrega un encabezado y pie de página que no quiero.-q
. Puede usarsed
para quitar los códigos ANSI:sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
script temp.log env PS1='$ ' bash --norc
para obtener una fiesta con el mensaje que desee. Alternativamente, puede editar su~/.bashrc
para verificar el usoscript
y modificar la solicitud:[ $(ps -o command= -p $PPID) = 'script' ] && PS1='$ '
iterm2 tiene integración de shell que le permite seleccionar (y copiar automáticamente) la salida del último comando con cmd-shift-A.
fuente
De su comentario en otra respuesta , no desea que se copie toda su solicitud, sino solo
$
.Cómo resuelvo esto es simplemente:
Fácil. Luego uso el mouse para copiar y pegar la solicitud, el comando y la salida que quiero.
Para un caso de uso diferente donde solo quiero que el comando, no su salida y no la solicitud, pueda dar instrucciones a alguien, he configurado un alias
zv
(cerca de "Comando V" en el teclado) para copiar el último comando a mi portapapeles :Tenga en cuenta el uso
printf
y la sustitución de comandos para evitar incluir la nueva línea final desdehistory
el portapapeles.fuente
Si ya lo usa
GNU screen
, puede copiar una selección directamente con una herramienta externa. Por ejemplo, agregué esto a~/.screenrc
Linux:Ahora puedo marcar una selección con Control- a [, presionar Spacey ahora presionar Control- a bpara ejecutar
xsel
. No es mi idea, en realidad es bastante común . Tenga en cuenta que algunas personas lo usan enpbcopy
lugar de hacerlo, porxsel
lo que puede funcionar para usted sin ningún problema.fuente