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 ...
Ejecutar comando automáticamente después de introducir otro
Moderator: Wibol
Forum rules
Topics in this forum are automatically closed 6 months after creation.
Topics in this forum are automatically closed 6 months after creation.
Ejecutar comando automáticamente después de introducir otro
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.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
Re: Ejecutar comando automáticamente después de introducir otro
Ponsergiolocuelo 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.
&&
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.
Re: Ejecutar comando automáticamente después de introducir otro
Muchas gracias por responder, pero espero que tu o alguien más me resuelva el post entero
- hatteras
- 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
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
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.
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.
- JOPETA
- 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
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íasergiolocuelo wrote: ⤴Mon Jul 30, 2018 2:18 pm ¿Hay alguna variable del sistema que guarde el último comando que pusiste?
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)
Re: Ejecutar comando automáticamente después de introducir otro
Con respecto a lo primero puedes usar el punto y coma para separar comandos:
Con respecto al resto lo miro en otro momento, ahora son las 00:12 y me voy a la cama.cd Descargas; ls ; cd ..; ls
--
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
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
Re: Ejecutar comando automáticamente después de introducir otro
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
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