Linux es uno de los sistemas operativos de código abierto más utilizados que admite tanto GUI como CLI. Ha sido ampliamente utilizado en todo el mundo desde su primera distribución lanzada el 17 de septiembre de 1991 por Linus Torvalds. Es ampliamente conocido por sus operaciones de línea de comandos. Hemos estado usando varios comandos en Linux como el comando date , el comando mkdir y muchos más. Puede leer más en Comandos de Linux .
Hay más de miles de comandos que usamos en Linux, pero nunca pensamos en crear nuestros comandos. Construir tus comandos puede ser una forma muy divertida e interesante de aprender y experimentar con tus conocimientos. Mientras construye cosas nuevas, se encontrará con muchos conceptos nuevos y aprenderá muchas cosas nuevas.
Aquí, vamos a crear un nuevo comando para las distribuciones de Linux que no está presente en ninguna de las distribuciones de Linux. Vamos a construir un comando en tiempo real para mostrar el tiempo en la terminal continuamente sin molestar a nuestra terminal para realizar otras tareas. Echémosle un vistazo.
Para construir algo como esto, necesitamos tener un buen conocimiento de los comandos de Linux con sus atributos y cómo integrar el conocimiento de Linux con las secuencias de comandos. Para conocer todos los atributos de command que podemos usar, man command
Avanzando más, hay un comando llamado echo que se usa para mostrar la salida en la pantalla. Para usos básicos del comando echo con ejemplos , haga clic aquí. Además de los conceptos básicos, este comando también se puede usar para mostrar los resultados de otros comandos. Por ejemplo,
Aquí, en este ejemplo, puede observar que cuando ejecutamos el comando de fecha entre comillas dobles («fecha»), echo lo tomó como una string y lo imprimió, pero cuando lo ejecutamos entre comillas inversas («fecha»), dio el salida del comando de fecha. Entonces también podemos usar echo para mostrar la salida de otros comandos.
Ya estamos familiarizados con los atributos del comando echo como -n, -e, etc. De lo contrario, haga clic en el enlace de arriba y lea el artículo para conocer el uso detallado del comando echo. Ahora, si solo queremos mostrar la hora usando el comando de fecha, podemos usar «fecha +% T» . Para más detalles, puede usar el comando man .
Ahora sabemos que en el comando echo para imprimir en la siguiente línea usamos \n , para retroceder \b , etc. Para trabajar con estos atributos usamos -e y para imprimir la salida en la misma línea usamos -n . Supongamos que necesitamos imprimir la hora en la misma línea pero no queremos mostrar los segundos, podemos usar echo -n -e “`date +%T` \b\b\b” .
Como en este ejemplo, podemos ver que cuando usamos solo el atributo -n, la salida se imprimió en la misma línea, y también cuando usamos \b con -n, simplemente lo imprimió como una string. Cuando usamos solo -e, la salida estaba en la siguiente línea. Pero cuando usamos -n y -e junto con \b, los segundos no eran visibles. En términos simples, los últimos tres dígitos, es decir, “:12” no se imprimieron.
Ahora tenemos que pensar, cómo podemos usar estas habilidades de tal manera que cada fecha de tiempo también se imprima con segundos. Si de alguna manera hacemos que se ejecute continuamente, cada segundo obtendremos una nueva hora y, al mismo tiempo, se eliminará debido al retroceso (\b) que usamos. Para hacer que ejecute este comando continuamente, necesitamos usar secuencias de comandos y ahora vamos a integrar nuestro conocimiento de Linux con secuencias de comandos.
Para que cualquier comando se ejecute mediante secuencias de comandos, se sigue una sintaxis muy básica. Solo necesitamos escribir los comandos en un archivo y guardarlo. Para ejecutar todos los comandos presentes en ese archivo, solo necesitamos escribir «bash file_name» en el que están presentes los comandos. Por ejemplo,
En este ejemplo, podemos ver que en el lado izquierdo creamos un archivo llamado script en el que hemos dado algunos de los comandos. En la terminal, cuando ejecutamos “bash script” podemos observar que se ejecutan todos aquellos comandos que estaban escritos en el archivo. Tenga en cuenta que en este ejemplo he dado el nombre de archivo como «script», pero puede darle lo que quiera.
Ahora, si queremos que la fecha se imprima cada segundo, debemos ejecutarla en un bucle. La sintaxis de bucle en secuencias de comandos es muy simple. por ejemplo,
En el ejemplo anterior, puede ver lo simple que es usar while loop en bash scripting. Solo necesita agregar do antes del comando y, cuando el comando finaliza, se escribe la palabra clave. Como no hemos dado ningún límite, se ejecutará infinitamente hasta que se agoten todos sus recursos. Puede ver en la imagen a continuación, después de ejecutar el script, está imprimiendo continuamente la declaración que está escrita en el archivo f1.txt. Para detenerlo usamos CTRL + C.
Ahora veamos qué sucede si usamos este concepto para construir nuestro nuevo comando para el tiempo. Si ponemos nuestro comando que creamos en el ciclo while, veamos qué sucede,
Aquí podemos observar que podemos ver el tiempo en tiempo de ejecución con segundos cambiando cada segundo, pero el problema principal es que no podemos usar nuestra terminal para otras tareas. Solo muestra la hora y si queremos ejecutar otros comandos, debemos detener este script.
Para resolver este problema, tenemos que poner el comando en segundo plano para que el script se ejecute en segundo plano y podamos usar la terminal para otros comandos. Para poner cualquier tarea en segundo plano usamos “&” al final de los comandos. Por ejemplo,
En la imagen de arriba, cuando ejecutamos «gedit abhi» , puede observar que está usando nuestro terminal y no podemos ejecutar ningún otro comando en nuestro terminal hasta que lo terminemos. A medida que usamos & después del comando, puede observar en la imagen a continuación que gedit se ejecuta en segundo plano y nuestra terminal es gratuita. Somos libres de usar nuestro terminal para otros comandos también y al mismo tiempo gedit también se está ejecutando.
Ahora, este era el concepto de «&» para ejecutar cualquier cosa en segundo plano. Ahora necesitamos implementarlo en nuestro nuevo comando para que podamos hacerlo más eficiente. Somos conscientes del uso de bucles en las secuencias de comandos como he comentado anteriormente. Ahora solo necesitamos agregar «&» después de la palabra clave «hecho» para que se ejecute en segundo plano. Ahora si lo agregamos, veamos como funciona,
Ahora puedes ver, está funcionando perfectamente y podemos usar nuestra terminal también. En la imagen a continuación, puede ver que nuestro tiempo en vivo también se está ejecutando y también podemos ejecutar otros comandos. Aquí he usado el comando «bash livedate», pero puede guardar su archivo con cualquier nombre como live-time, o cualquier otro que desee. Estoy usando livedate porque he usado el comando de fecha para construir este comando en vivo en tiempo real.