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, entercopiarlo en ese búfer, pegarlo vim, escribirlo en un archivo y luego cateso pbcopy. Tiene que haber una mejor manera.
¿Hay un comando que se puede ejecutar el cual será teeel 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

pbcopyy sería la misma pregunta.pbcopyyaC-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 -xEs 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
scriptutilidad 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 usarsedpara 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 --norcpara obtener una fiesta con el mensaje que desee. Alternativamente, puede editar su~/.bashrcpara verificar el usoscripty 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
printfy la sustitución de comandos para evitar incluir la nueva línea final desdehistoryel portapapeles.fuente
Si ya lo usa
GNU screen, puede copiar una selección directamente con una herramienta externa. Por ejemplo, agregué esto a~/.screenrcLinux: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 enpbcopylugar de hacerlo, porxsello que puede funcionar para usted sin ningún problema.fuente