23 votos

copia del último comando en la terminal

Puedo ver el último comando en el terminal presionando up arrow como en el siguiente ejemplo:

Escribí cd /:

Makss-Mac:~ maks$ cd /

... presionado enter, comando cd / ejecutado y ahora puedo pulse up arrow y ver comando cd / de nuevo:

Makss-Mac:/ maks$ cd /

Quiero ver no sólo el último comando, sino que lo copia al portapapeles.

Tal vez existe acceso directo que no sólo mostrar el último comando en la terminal (como up arrow ) pero, al mismo tiempo, copiarlo al portapapeles.

O tal vez hay un acceso directo para seleccionar todos los de la actual terminal de la línea. Y por eso voy a ser capaz de copiar el último comando (después de presionar up arrow) presionando super+c. Por supuesto que se puede seleccionar con el ratón. Pero cuando los comandos tienen 10 veces más que cd / puede ser demasiado tiempo, sobre todo si se hace cada 30 segundos.

O tal vez hay manera de escribir plugin para el Terminal

18voto

James Socol Puntos 146

Poner esto en su ~/.bashrc ~/.bash_profile o donde quiera que te gusta:

alias copyLastCmd='fc -ln -1 | awk '{$1=$1}1' | pbcopy '

Después de abrir una nueva ventana (o ejecución source ~/.bash_profile) debe ser capaz de ejecutar copyLastCmd y tener el mando en el portapapeles.

Para explicar lo que está pasando: básicamente, el uso de "fix comando" (fc) para conseguir que el último comando, eliminar tanto los espacios en blanco iniciales y finales para el mejor formato con awk y, a continuación, cópielo en su Mac, mesa de trabajo con pbcopy.

EDITAR:

Ahora que sabemos que desea copiar para pegar en otra pestaña de terminal, hay otra opción: Añadir estas líneas a su ~/.bashrc ~/.bash_profile o donde quiera que te gusta:

shopt -s histappend
PROMPT_COMMAND='$PROMPT_COMMAND; history -a; history -n'

Luego, una vez que usted tiene algunas nuevas pestañas abiertas (vamos a llamarlos "ficha" y la pestaña "B"):

  1. Ejecutar cualquier comando en Una ficha
  2. Cambie a la ficha B, presione entrar en un vacío de la línea, dando una "fresca" de la nueva línea (y por lo tanto re-evaluación de la historia)
  3. utilice la flecha hacia arriba una vez y usted debe tener el comando que has entrado en la ficha de A.

EDIT 2: He reemplazado el uso de sed con awk en el original de la respuesta anterior, para cuidar de ambos iniciales y finales en los espacios en blanco .

5voto

nwinkler Puntos 3723

He aquí otro tome con base en la respuesta de @Asmus. Para hacer su alias de trabajo en mi script de bash, tuve que usar un poco de citar, ya que las comillas simples no funcionan en una sola citado alias sin adicionales de citar:

alias copyLastCmd='fc -ln -1 | awk '\''{$1=$1}1'\'' | pbcopy'

El '\'' será, básicamente, cerca de la comilla actual, a continuación, añadir una escapado a la cita y, a continuación, abra la cita real de nuevo.

La versión anterior copia el último comando en el portapapeles, y una vez que pegar, que es ejecutada inmediatamente, ya que no tendrá un salto de línea al final.

Para deshacerse de la nueva línea al final, lo que realmente puede editar el comando antes de ejecutarlo, puede hacer lo siguiente:

alias copyLastCmd='fc -ln -1 | awk '\''{$1=$1}1'\'' ORS='\'''\'' | pbcopy'

El ORS='' (eso sin citar) se tira fuera de la parte final del carácter de nueva línea, así que usted puede editar el texto pegado antes de ejecutarlo.

3voto

jwjacobs88 Puntos 41

Usted puede configurar su historia a ignorar comandos que comienzan con un espacio:

export HISTIGNORE=' *'

Y, a continuación, ejecute el siguiente comando git el último comando en el portapapeles (asegúrese de tener un espacio al principio):

history 1 | cut -d " " -f 4- | pbcopy

Usted probablemente desea guardar el comando como un alias para hacerlos más fáciles de recordar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X