Los 10 mejores trucos para el terminal

1. Ejecutar el รบltimo comando con !!

El tรญtulo lo dice todo, basta con ingresar lo siguiente en un terminalโ€ฆ

!!

โ€ฆpara volver a ejecutar el รบltimo comando ingresado. Este truco es muy รบtil cuando nos olvidamos de ingresar sudo al comienzo. En ese caso, habrรญa que ingresar:

sudo !!

Para descubrir formas mรกs complejas de sacarle todo el jugo a este truco, recomiendo leer este antiguo post.

2. Ejecutar el รบltimo comando pero corrigiendo un error de tipeo

Este truco es realmente รบtil cuando ingresamos un comando con un error de tipeo simple. Por ejemplo, si ejecutamos:

echo "desdelinuxz"

Es posible corregirlo ingresando lo siguiente:

^z

3. Invocar un editor de texto para ingresar un comando extenso

A veces es necesario ingresar comandos interminables en el terminal. En ese caso, puede resultar รบtil la ayuda de un editor de texto simple, como nano o emacs.

Para abrir el editor sรณlo basta presionar Ctrl+x+e en un terminal. El texto que hayas ingresado hasta el momento se copiarรก en el editor de texto una vez abierto รฉste.

Por su parte, el editor utilizado serรก aquรฉl que se encuentre especificado en la variable $EDITOR. Para cambiar esta configuraciรณn, es posible ejecutarโ€ฆ

export EDITOR=nano

โ€ฆreemplazando nano por tu editor preferido.

4.ย  Ejecutar un comando sin que se guarde en el historial

Un verdadero hacker no puede desconocer este truco. Como todos saben, bash guarda el historial de comandos ejecutados, al cual es muy fรกcil de acceder mediante las flechas del teclado o Ctrl+R (para realizar una bรบsqueda inversa en el historial).

En este caso, lo que hay que hacer para que el comando ingresado no se guarde en el historial es poner un espacio adelante:

<espacio> comando

5. Colocar automรกticamente el รบltimo parรกmetro de un comando

Supongamos que el comando ejecutado anteriormente fue

cp archivo.txt /var/www/wp-content/uploads/2009/03/

Para acceder al directorio en cuestiรณn es posible ingresar el comando cd seguido de Alt+. o Esc+. :

cd 'ALT+.'

Esto no es mรกs que una forma abreviada de ingresar:

cd /var/www/wp-content/uploads/2009/03/
Al continuar apretando el atajo de teclado mencionado es posible ir navegando en el historial de รบltimos comandos ejecutados.

6. Ejecutar un comando a una hora determinada

Sรญ, sรญ, para eso existe cron. Sin embargo, a veces queremos ejecutar un comando se ejecute a una determinada hora pero por รบnica vez.

Supongamos que queremos ejecutar el comando ls -l a la medianoche. En ese caso, debemos ejecutarlo de la siguiente forma:

echo "ls -l" | at midnight

7. Obtener tu IP externa

Gracias al servicio provisto por http://ifconfig.me/ es posible conocer varios datos de tu conexiรณn a Internet, directo desde el terminal:

curl ifconfig.me/ip   // Direcciรณn IP
curl ifconfig.me/host // Servidor Remoto
curl ifconfig.me/ua   // User Agent
curl ifconfig.me/port // Puerto

8. Aprender cรณmo usar Ctrl+u y Ctrl+y

ยฟCuรกntas veces te pasรณ que empezabas a escribir un comando y recordaste que antes era necesario hacer otra cosa? Bueno, es posible hacer una suerte de cortar-pegar para que luego sea mรกs fรกcil volver a ingresar el comando que quedรณ a medias.

Supongamos que empezaste a escribirโ€ฆ

cd /home/usuario

y recordaste que antes tenรญas que verificar algo en el directorio actual. En ese caso presionรก Ctrl+u (serรญa algo asรญ como un ยซcortarยป).

Ingresรก el comando que hacรญa falta ejecutar primero. Supongamosโ€ฆ

ls -l

โ€ฆy luego presionรก Ctrl+y (funciona como un ยซpegarยป).

9. Limpiar el terminal fรกcilmente

Con Ctrl+l es posible limpiar el terminal en un santiamรฉn.

10. Ir a un directorio, ejecutar un comando y volver al directorio actual

Este truco es una delicia. Para ejecutar una serie de comandos sin salirse del directorio actual sรณlo hay que agruparlos entre parรฉntesis. Como casi todos saben, para ejecutar una serie de comandos, hay que concatenarlos usando &&. Usando estos conceptos, podemos ejecutar algo como lo siguiente:

(cd /tmp && ls)

El resultado de este comando (noten los parรฉntesis) serรก un listado de los archivos y directorios dentro de la carpeta /tmp. Todo sin salirnos de nuestro directorio actual. ยกUna joya!

Yapa. Listar los comandos mรกs utilizados

Para ver los comandos mรกs utilizados basta ejecutar lo siguiente:

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

En mi caso, los ganadores fueron:

450 yaourt
415 sudo
132 git
99 cd
70 leafpad
70 killall
68 ls
52 pacman
50 xrandr
45 top

A los fanรกticos del terminal, como este servidor, les recomiendo visitar commandlinefu. Tambiรฉn, por quรฉ no, no dejen de buscar en el archivo de nuestro blog.

ยฟFalta algรบn truco? No te olvides de compartirlo y comentar mรกs abajo. ๐Ÿ™‚

Deja tu comentario

Tu direcciรณn de correo electrรณnico no serรก publicada. Los campos obligatorios estรกn marcados con *

*

*

  1. Responsable de los datos: Miguel รngel Gatรณn
  2. Finalidad de los datos: Controlar el SPAM, gestiรณn de comentarios.
  3. Legitimaciรณn: Tu consentimiento
  4. Comunicaciรณn de los datos: No se comunicarรกn los datos a terceros salvo por obligaciรณn legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu informaciรณn.

      fox dijo

    habรญa uno que usaba yo que en mi inputrc que omitรญa las mayรบsculas, porque sinceramente se me colaban muchos ficheros que comenzaban asรญ.

      Jesus Perales dijo

    Creo que uno de los mas importantes es el comando history en el cual te regresa una lista numerada
    de los comandos que haz usado y si quieres usar alguno de ellos solo usas la siguiente linea
    !22

    eso ejecutara el comando que se encuentra en tu historial en el numero 22 ๐Ÿ˜€

    Para buscar algun comando con auto-completado es
    Ctrl + r

         Xurxo dijo

      Yo tambiรฉn utilizo siempre Ctrl+r para repetir la รบltima orden; una vez que aparece la รบltima, se puede ir recorriendo el historial hacia atrรกs pulsando Re Pag (flecha de direcciรณn hacia arriba).

      Saludos.

      Rodrigo Bravo dijo

    Buen articulo. Gracias por compartir esos Tips.
    Yo quiero compartir uno que uso diariamente que es ‘fg’, el cual te permite abrir las aplicaciones que detuviste antes con ‘Ctrl+z’.

         Giskard dijo

      Y con ‘bg’ las envรญas a background ๐Ÿ™‚

         usemoslinux dijo

      Mirรก vos… buen truco! Gracias x compartirlo.
      Abrazo! Pablo.

      Gabriel dijo

    Excelente el post, siempre te hacen recordar cosas que uno sabรญa y con el tiempo olvidรณ, pero que son realmente รบtiles.

      Qvic dijo

    Los trucos de Terminal siempre son bienvenidos.
    Increรญblemente no sabia que el agregar un espacio al comando se omitรญa del Historial.
    Muchas Gracias, Saludos!!

      ezequiel dijo

    para usar autompletado filtrando el historial agregar en el alrchivo $HOME/.inputrc
    ยซ\e[5~ยป: history-search-backward
    ยซ\e[6~ยป: history-search-forward

    y por ejemplo en algรบn momento habรญas usado:
    $ cd /una/ruta/mas/larga/que/la/mierda

    y ahora querรฉs usarla nuevamente, tenรฉs que hacer:
    $ cd
    y luego presionar las teclas ยซRePagยป o ยซAvPagยป para navegar por todos los comandos en el historial que hayan empezado con ยซcdยป.

         Giskard dijo

      O…. sin editar nada, pulsas Ctrl+R y luego cd (si quieres buscar algo con ‘cd’) y pulsando Ctrl+R repetidas veces verรกs todos los comandos que lo contienen hasta que llegues al que quieres. Obvio que si es el inmediato anterior te va a salir de una.

         usemoslinux dijo

      Muy bueno!

      Antc dijo

    En realidad ls /tmp deberia bastar para listar el directorio sin salir del actual.

      slayerkorn dijo

    Tambien se puede concadenar el comando utilizando ยซ;ยป como en el ejemplo nยฐ 10 seria asi:

    (cd /tmp; ls)

    Saludos

         RudaMacho dijo

      El ยซ;ยป funciona distinto que el ยซ&&ยป (and), cuando hacemos comando-1 && comando-2 el segundo comando solo se ejecuta si la salida del primero es ยซ0ยป, o sea, sin error. En el caso del punto y coma el segundo comando se ejecuta sin importar la salida del primero. Para ampliar, existe el operador ยซ||ยป (or), en este caso el segundo comando se ejecuta solo si el primero arroja error en la salida. Saludos.

      anonimo dijo

    Para que cada lรญnea que recuerda history tenga fecha y hora, hay que una variable de ambiente en el ~.bashrc del usuario normal o del root.

    # nano .bashrc
    export HISTTIMEFORMAT=ยป%F %T ยป

    # history
    492 2014-09-02 14:25:57 revdep-rebuild -i -v
    493 2014-09-02 14:31:14 eclean-dist -d
    494 2014-09-02 14:31:23 localepurge -v
    495 2014-09-02 14:31:29 etc-update
    496 2014-09-02 14:31:54 emerge –depclean –pretend
    497 2014-09-02 14:39:08 updatedb

    Hay mas opciones, que son para la cantidad de lรญneas que guarda, las estoy probando.

      chuckT dijo

    Muy buen post. Realmente muy รบtiles. El truco nรบmero 4, el de ejecutar un comando sin que se guarde en el historial, solo me ha funcionado en ubuntu, no asรญ en debian, ni centos.

         Azureus dijo

      A mi me funcionรณ en raspbian y no en arch.

      Chaparral dijo

    Merveilleux !!

      erjuak dijo

    Hola,
    lo de poner un espacio antes de ejecutar un comando para que no se registre en el history, como que no funciona…
    [user@host /]$ ls -l
    total 104
    dr-xr-xr-x. 2 root root 4096 Aug 21 03:55 bin
    dr-xr-xr-x. 5 root root 3072 Aug 20 17:26 boot
    drwxr-xr-x. 2 root root 4096 Dec 9 2013 cgroup

    [user@host /]$ history
    1024 ls
    1025 ls
    1026 history
    1027 ls -l
    1028 history

    interesante articulo..

    Un saludo

      erjuak dijo

    Perdon, por no leer todos los post,
    La prueba tambien esta hecha en centos.

      eliotime3000 dijo

    Buena con lo de Ctrl + U y Ctrl + Y.

      NauTiluS dijo

    En mi sistema, la lista de comandos mas usados me funciono cambiando la variable a $5.

    Ejemplo de salida:

    1122 sudo
    362 ls
    279 clear
    214 cd
    142 dig
    141 yaourt
    130 vnstat
    122 mv
    112 vim
    112 history

    Esto se debe a que en mi archivo .bashrc tengo la siguiente linea:
    # Muestra la fecha al comando history
    export HISTTIMEFORMAT=’%F %T : ‘

    Estoy casi seguro, que muchos por aquรญ han hecho uso de varias terminales al mismo tiempo.
    Ahora, esto no se si decirle que sea un truco de la terminal, pero como suelo tener muchas ventanas o haciendo uso de screen para tener varias terminales abiertas, esto habilita que cualquier comando introducido en una de esas terminales, pues se vera reflejada en todas.

    Esto va en el archivo .bashrc:

    HISTSIZE=90000
    HISTFILESIZE=$HISTSIZE
    HISTCONTROL=ignorespace:ignoredups

    history() {
    _bash_history_sync
    builtin history ยซ$@ยป
    }

    _bash_history_sync() {
    builtin history -a #1
    HISTFILESIZE=$HISTSIZE #2
    builtin history -c #3
    builtin history -r #4
    }

    PROMPT_COMMAND=_bash_history_sync

         usemoslinux dijo

      Muy buen aporte! Gracias x pasar.
      Abrazo! Pablo.

      Roy dijo

    Enhorabuena por el articulo.
    Muy practico y he aprendido unos cuantos comandos.

      linuXgirl dijo

    Aunque soy ya algo ยซexperimentadaยป en estos menesteres, estos trucos siempre se agradecen, asรญ que… ยกยกยกpara el baรบl de los trucos!!!

      nonamed dijo

    genial, gracias por los trucos, son realmente utiles ๐Ÿ˜€

      vinsuk dijo

    Los caminos de la consola son inescrutables ๐Ÿ˜‰

      desikoder dijo

    El truco de pulsar control + u y control + y no depende de la shell, sino de la configuraciรณn que tienen los tty. A dia de hoy bajo linux los tty son entidades muy complejas, yo de hecho he estado indagando en su funcionamiento y puedo asegurar que tienen muchos mรกs entresijos de los que parece. Los tty tienen algunos caracteres de control que cambian su estatus, por ejemplo a mi me ha pasado a veces que hago cat a un fichero binario, y despues de salir toda la ยซbasuraยป por pantalla, el prompt se me queda raro o con otra codificaciรณn. Esto se debe a que en un archivo aleatorio hay una alta probabilidad de encontrar con caracteres de control del tty.

    Por ejemplo, ejecutad esto en una shell :

    print ’33c’

    Eso os limpiarรก la pantalla ( como si ejecutais clear ).

    Otras combinaciones, como control + L para limpiar la pantalla provienen del propio shell que se estรฉ usando, los shells clasicos /bin/sh no suelen traer esta caracterรญstica.

    Ademรกs, a dia de hoy existen un monton de complejas opciones de manejo de ficheros y sockets bajo linux. Por ejemplo, si abres un dispositivo tty usando open(), en modo AIO ( Asynchronous Input / Output ), el proceso recibira un SIGIO cada vez que haya datos disponibles en el buffer de entrada.

    Si por ejemplo bash funcionase sencillamente leyendo las lineas y ejecutando comandos ( tal y como lo hace cuando ejecuta un script ), al pulsar control + L sencillamente esta secuencia de caracteres se incluiria como parte de los comandos, pero como bash tiene control del buffer de entrada puede detectarlo.

    Por ejemplo, yo a veces programando he llegado a usar fcntl para conseguir un buffer no bloqueante de entrada, lo cual he usado incluso con las librerias ncurses ( manipular el tty de control antes de iniciar ncurses en el programa ).

    Saludos !

      Lautaro dijo

    Para los que no les funcionรณ el espacio al principio, y quizรกs para agregarlo a la nota, hay una variable llamada HISTIGNORE donde se configura el caracter que se agrega antes de un comando para que sea ignorado en el history.
    En algunas instalaciones esta variable no viene por de
    Saludos y buen post! directo a favoritos!

    Ojo que en los comentarios tambiรฉn vรญ varias cosas interesantes..!!

      Ramon Hidalgo dijo

    Todo realmente muy รบtil. Gracias.