[TIP] Como reutilizar los argumentos de tus comandos anteriores en bash.

Otro título sugerido: Linux me incita a la vagancia y no me importa.

Nada rompe mejor los huevos del command line lover que los paths larguísimos, los nombres de archivo inmemorizables y tener que tipearlos cada vez que hacen falta.

Tan desagradable es el asunto que bash está lleno de formas de ganar tiempo, de hacerle trampa a la vida, de autocompletar paths, nombres y comandos la mayoría de los cuales seguramente ya conocés.

Todo el mundo sabe como recuperar los últimos comandos tipeados en la consola pero no todos saben como recuperar el comando que te interesa a la velocidad de la luz (andá, leé y volvé, así sos uno de los que sabe) y probablemente casi nadie sabe como recuperar argumentos para reutilizarlos en un comando nuevo.

Y como siempre, no podría haber sido mas fácil, así que acá va, otro poco de command line ninjitsu en malditonerd.

Mas command Line Ninjitsu en Maldito Nerd y ya empieza a darme vergüenza usar siempre la misma imágen esta...

Mas command Line Ninjitsu en Maldito Nerd

Como recuperar y reutilizar argumentos de comandos anteriores para usar en comandos nuevos:

Si voy a una shell y ejecuto:

~# echo uno dos tres cuatro

Me devuelve:

uno dos tres cuatro

 

La que sabe todo el mundo, recuperar/reutilizar el último argumento:

:~# echo !$

Me devuelve:

echo cuatro
cuatro

La que no todo el mundo sabe:

~# echo !:1 !:3

Que devuelve:

echo uno tres
uno tres

 

Y por último, para cuando no tengas ganas de contar en que orden está el argumento que no querés tampoco volver a tipear por que estás hecho un pajero:

echo [ALT] .

Y por cada vez que presiones el punto, sin soltar la tecla ALT, vas desde el fin al principio, recuperando todos los argumentos de todos los comandos de tu archivo ~/.bash_history.

Va un pequeñísimo ejemplo para que entiendas la utilidad de estos combos de teclas:

~# ls /etc/udev/rules.d/70-persistent-net.rules -lah
-rw-r–r– 1 root root 475 may 23 23:31 /etc/udev/rules.d/70-persistent-net.rules

~# cat !:1
cat /etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10de:/sys/devices/pci0000:00/0000:00:07.0 (forcedeth)
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»00:1e:8c:be:28:7d», ATTR{dev_id}==»0x0″, ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth0″

El avezado lector podrá inferir la marca de la placa de red. Se los dejo como tarea para la casa.

3 comentarios

  1. ¡Asus!
    Che, como que me cuesta mas trabajo recordar tantos recovecos que tiene el bash que hacer tecla arriba o Ctrl-r hasta encontrar el comando.
    Gracias igual 😛
    Abrazo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *