Puedo ver el último comando en la terminal presionando up arrow
como en el siguiente ejemplo:
Escribí cd /
:
Makss-Mac:~ maks$ cd /
... presionado enter
, comando cd /
ejecutado y ahora puedo presionar up arrow
y ver el comando cd /
nuevamente:
Makss-Mac:/ maks$ cd /
No solo quiero ver el último comando, sino copiarlo en el portapapeles.
Tal vez exista un acceso directo que no solo muestre el último comando en la terminal (como lo up arrow
hace) sino que al mismo tiempo lo copie en el portapapeles.
O tal vez hay un atajo para seleccionar todo de la línea de terminal actual. Y así podré copiar el último comando (después de presionar up arrow
) presionando super+c
. Por supuesto que puedo seleccionarlo con el mouse. Pero cuando los comandos son 10 veces más largos de cd /
lo que puede llevar demasiado tiempo, especialmente si lo haces cada 30 segundos.
O tal vez hay forma de escribir un complemento para Terminal
fuente
Respuestas:
Pon esto en tu
~/.bashrc
~/.bash_profile
o donde quieras:Después de abrir una nueva ventana (o ejecutar
source ~/.bash_profile
), debería poder ejecutarcopyLastCmd
y tener el comando en el portapapeles.Para explicar lo que está sucediendo: básicamente está utilizando el "comando de reparación" (
fc
) para obtener el último comando, elimine los espacios en blanco iniciales y finales para un mejor formatoawk
y luego cópielo en el tablero de su Mac conpbcopy
.EDITAR:
Ahora que sabemos que desea copiar para pegar en otra pestaña de terminal, hay otra opción: agregue estas líneas a su lugar
~/.bashrc
~/.bash_profile
o donde quiera:Luego, una vez que tenga algunas pestañas nuevas abiertas (llamémoslas "pestaña A" y "pestaña B"):
EDITAR 2: he reemplazado el uso de
sed
conawk
en la respuesta original anterior, para ocuparme de los espacios en blanco iniciales y finales.fuente
awk
:alias copyLastCmd='fc -ln -1 | sed '1s/^[[:space:]]*//' | awk 1 ORS="" | pbcopy '
fc -ln -1 | awk '{$1=$1}1'
eliminará los espacios en blanco iniciales y finales.alias copyLastCmd="fc -ln -1 | awk '{\$1=\$1}1' | pbcopy"
. todavía recibe mi voto a favorAquí hay otra toma basada en la respuesta de @Asmus. Para que su alias funcione en mi script bash, tuve que usar un poco de comillas, ya que las comillas simples no funcionan en un alias entre comillas simples sin algunas comillas adicionales:
El
'\''
básicamente cerrará la cotización actual, a continuación, añadir una cita escapado, y abra la cita real de nuevo.La versión anterior copiará el último comando en su portapapeles, y una vez que lo pegue, se ejecutará inmediatamente, ya que tendrá una nueva línea al final.
Para deshacerse de la nueva línea al final, de modo que pueda editar el comando antes de ejecutarlo, puede hacer lo siguiente:
El
ORS=''
(sin las comillas) eliminará el carácter de nueva línea final, para que pueda editar el texto pegado antes de ejecutarlo.fuente
Esto usará la expansión del historial para tomar el último comando y repetirlo. Puede canalizar a
pbcopy
para guardar el último comando en su portapapeles.Si desea un comando de su historial que no sea el último , puede ejecutar:
Y haga referencia al número de comando deseado como:
fuente
Vine aquí cuando se me ocurrió exactamente la misma respuesta de Sam Berry, pero no me funciona (OSX 10.14.6).
Se las arregló para hacerlo con citas alrededor de
!!
:echo "!!" | pbcopy
fuente
Puede configurar su historial para ignorar los comandos que comienzan con un espacio:
Y luego ejecute el siguiente comando para colocar el último comando en el portapapeles (asegúrese de tener un espacio al principio):
Probablemente quiera guardar el comando como un alias para que sea más fácil de recordar.
fuente