Ejecutar comando automáticamente después de introducir otro

Spanish Forum

Moderator: JCSenar

Post Reply
sergiolocuelo
Level 1
Level 1
Posts: 28
Joined: Mon May 14, 2018 11:15 am

Ejecutar comando automáticamente después de introducir otro

Post by sergiolocuelo » Mon Jul 30, 2018 2:18 pm

Hola, me gustaría saber si es posible que cuando pongo un comando en específico en la terminal y termina de ejecutarse, atumáticamente se ejecute otro que yo quiera. Por ejemplo introduzco un cd carpeta, entonces después de ese cd se ejecute automáticamente un ls o un clear. E pensado que se podría hacer con el comando history, en .bashrc se hace un script poniendo que si la última línea es igual a por ejemplo un clear se ejecute tal comando. Sé que bash_history también almacena los comandos, pero tarda un rato en actualizarse (en mi caso, en los demás no lo se). ¿Se podría hacer de esta forma o hay alguna otra más sencilla?
¿Hay alguna variable del sistema que guarde el último comando que pusiste?
Además, si quiero que en un script se lea una línea específica de un archivo de texto ¿Qué comando usaría? Porque por ejemplo con un tail o un head se podría leer la última línea, pero si quiero la antepenúltima, con el tail -3 se verían las 3 últimas líneas... Y una vez leida la línea que se quería leer, la guardo en una variable, y la quiero comparar con un texto que introduje en el script, por ejemplo la palabra clear, ¿sería así?: if $líneatexto eq clear ; then ...

User avatar
JCSenar
Level 9
Level 9
Posts: 2781
Joined: Sat Sep 06, 2014 6:26 pm
Location: Irun, España
Contact:

Re: Ejecutar comando automáticamente después de introducir otro

Post by JCSenar » Mon Jul 30, 2018 2:22 pm

sergiolocuelo wrote:
Mon Jul 30, 2018 2:18 pm
Hola, me gustaría saber si es posible que cuando pongo un comando en específico en la terminal y termina de ejecutarse, atumáticamente se ejecute otro que yo quiera. Por ejemplo introduzco un cd carpeta, entonces después de ese cd se ejecute automáticamente un ls o un clear.
Pon && entre los comandos que vayas a utilizar:

cd Descargas && ls

Funciona.
Image
Si tu consulta ha sido resuelta, por favor, edita tu primer mensaje y añade [SOLUCIONADO] al título. Gracias.

sergiolocuelo
Level 1
Level 1
Posts: 28
Joined: Mon May 14, 2018 11:15 am

Re: Ejecutar comando automáticamente después de introducir otro

Post by sergiolocuelo » Mon Jul 30, 2018 6:06 pm

Muchas gracias por responder, pero espero que tu o alguien más me resuelva el post entero :)

User avatar
hatteras
Level 9
Level 9
Posts: 2860
Joined: Fri Sep 24, 2010 6:43 pm
Location: En el paraiso en la tierra
Contact:

Re: Ejecutar comando automáticamente después de introducir otro

Post by hatteras » Thu Aug 02, 2018 5:49 pm

Se puede crear un script con varios comandos ( http://hatteras-blog.blogspot.com/2008/ ... asico.html ) que se ejecuten, como te han indicado, uno detrás de otro, y ejecutar dicho script con un "alias"
http://hatteras-blog.blogspot.com/2009/ ... andos.html
Todos somos muy ignorantes. Pero no todos ignoramos las mismas cosas.
Es un placer ayudar, y ver que a alguien le es útil.
Es un placer pedir ayuda y ver que alguien te la da desinteresadamente.

Image

User avatar
JOPETA
Level 13
Level 13
Posts: 4804
Joined: Thu Nov 20, 2014 6:10 am
Location: En un lugar de cuyo nombre no quiero acordarme

Re: Ejecutar comando automáticamente después de introducir otro

Post by JOPETA » Fri Aug 03, 2018 2:36 pm

sergiolocuelo wrote:
Mon Jul 30, 2018 2:18 pm
¿Hay alguna variable del sistema que guarde el último comando que pusiste?
Creo que se guardan en el ~/.bash_history. por orden de ejecución (al final están los útimos códigos ejecutados siempre que hayas cerrado la terminal que lo ejecutó). Sobre lo de extraer líneas de archivos hay varias posibilidades. Mira por ejemplo la ayuda de sed o awk (man sed o sed --help en la terminal) Por ejemplo sacar el último comando introducido en el archivo anterior sería sed -n '$p' .bash_history mientras que sed -n 22p .bash_history te mostrará el comando de la línea 22. De la misma manera lo hará awk 'NR==22' .bash_history

Puedes usar head/tail /cat/grep si creas un archivo ordenado o no con lo códigos que quieres ejecutar... en el script que crees tienes mas libertad por ejemplo usando un bucle "for" ...en fin... el mar.
Last edited by JOPETA on Mon Aug 06, 2018 6:54 pm, edited 1 time in total.
Ni cola de león ni cabeza de ratón, prefiero ser diente de ajo.( J. Krahe)

alfema
Level 3
Level 3
Posts: 151
Joined: Tue Mar 24, 2015 2:26 pm

Re: Ejecutar comando automáticamente después de introducir otro

Post by alfema » Mon Aug 06, 2018 6:12 pm

Con respecto a lo primero puedes usar el punto y coma para separar comandos:
cd Descargas; ls ; cd ..; ls
Con respecto al resto lo miro en otro momento, ahora son las 00:12 y me voy a la cama.
--
Saludos / Greetings
Mi sistema desde agosto 2016 / My system since august 2016
Linux Mint 19 - Cinnamon 3.8 (64 bit)
Intel I7-6700K + 16 MB RAM + 512 GB SSD + AMD RX 580

sergiolocuelo
Level 1
Level 1
Posts: 28
Joined: Mon May 14, 2018 11:15 am

Re: Ejecutar comando automáticamente después de introducir otro

Post by sergiolocuelo » Tue Aug 07, 2018 10:00 am

El caso es que es para un script en bashrc, de todas formas no sé si funcionará:

histo=`history | tail -2 | sed -n '1 p' | awk '{print $2}'`

if [ "$histo" -eq clear ]; then
ls -a
fi

Este script lo tengo en .bashrc, el problema es que antes no me funcionaba porque me ponía:
bash: [: -eq: se esperaba un operador unario

Después le muse unas comillas a la variable $histo del IF, y al abrir la terminal me ponía esto:
bash: [: : se esperaba una expresión entera

No se lo que pasa con ese script y tampoco sé si al final funcionará. También me gustaría saber si es importante poner comillas a las variables o no. Solo quiero que cuando el último comando que sea un clear por ejemplo, se ejecute otro comando automáticamente, como representa el script

Post Reply

Return to “Español (Spanish)”