Ejecutar comando automáticamente después de introducir otro

Foro de soporte para usuarias de habla hispana

Moderator: Wibol

Forum rules
Topics in this forum are automatically closed 6 months after creation.
Locked
sergiolocuelo

Ejecutar comando automáticamente después de introducir otro

Post by sergiolocuelo »

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 ...
Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
User avatar
JCSenar
Level 11
Level 11
Posts: 3646
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 »

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.
Si tu consulta ha sido resuelta, por favor, edita tu primer mensaje y añade [SOLUCIONADO] al título. Gracias.
sergiolocuelo

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

Post by sergiolocuelo »

Muchas gracias por responder, pero espero que tu o alguien más me resuelva el post entero :)
User avatar
hatteras
Level 11
Level 11
Posts: 3886
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 »

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.
User avatar
JOPETA
Level 17
Level 17
Posts: 7762
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 »

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.(Javier Krahe)
User avatar
alfema
Level 5
Level 5
Posts: 649
Joined: Tue Mar 24, 2015 2:26 pm
Location: Galicia

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

Post by alfema »

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 noviembre 2022 / My system since november 2022
Linux Mint 21 - Cinnamon (64 bit)
Ryzen 5 5600 + Corsair Vengeance LPX 4x8 GiB + SSD Crucial MX 550 512 MB + AMD RX 6700 XT
sergiolocuelo

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

Post by sergiolocuelo »

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
Locked

Return to “Español - Spanish”