Los intérpretes de comandos, instalar y cambiar a otro

Escrito por el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

La terminal es una herramienta muy utilizada por usuarios avanzados aún habiendo sistemas operativos en los que prácticamente todo se puede realizar desde un programa con interfaz gráfica. La linea de comandos es menos amigable ya que no ofrece apenas ayuda que guíe al usuario pero cuando un usuario conoce como realizar una tarea desde la línea de comandos es mucho más rápido que usar un programa con interfaz gráfica además de otras ventajas. El intérprete de comandos es la pieza que proporciona un entorno dese el que se introducen los comandos y con el que interacciona el usuario desde la terminal con una interfaz basada en texto.

Linux

bash

El sistema operativo es una pieza fundamental de software que hace usable el hardware y proporciona una abstracción y servicios más lógicos para los programas sin que estos se tengan que preocupar de detalles de bajo nivel relativos al hardware ni específicos de cada dispositivo hardware.

Una de las piezas fundamentales de un sistema operativo y la más conocida es el núcleo o kernel, dos núcleos con licencia de software libre son Linux y FreeBSD pero hay muchos otros menos conocidos como Minix, Genode o Haiku y distribuciones derivadas de estos. Sistemas operativos con núcleo privativos son el de Windows de los sistemas de escritorio de Microsoft y comerciales son el de macOS de los ordenadores de Apple.

Sin embargo, el núcleo sólo es una parte de lo que se considera un sistema operativo ya que aunque tiene muchas funcionalidades un usuario no interacciona directamente con el sistema operativo sino que lo hace a través de una colección de herramientas y programas de línea de comandos, entre ellas se encuentra en un intérprete de comandos. Generalmente en las distribuciones Linux la colección de herramientas son las proporcionadas por el proyecto GNU que es un proyecto distinto al núcleo de Linux, y por eso muchas veces nos referimos a Linux por el término GNU/Linux cuando se desea dar crédito a ambos proyectos.

Qué hace un intérprete de comandos

Un intérprete de comandos es una interfaz basada en texto que permite introducir los comandos a ejecutar compuestos por el nombre del programa, opciones de invocación y sus argumentos. El intérprete de comandos también permite establecer variables de entorno para almacenar valores e incluirlos en el comando así como redirigir la salida a archivos y crear tuberías para redirigir la salida de un programa a la entrada de otros que permiten realizar una funcionalidad compleja a partir de comandos más simples.

Los sistemas operativos actuales tienen una interfaz gráfica pero todos proporcionan una terminal virtual en la que interactuar con el sistema operativo mediante comandos y texto, se ejecutan desde una terminal virtual, cada entorno de escritorio también proporciona su propia entre su colección de aplicaciones gráficas integradas. En GNOME es Terminal y Console y en KDE es Konsole.

Aún con las interfaces gráficas las terminales y la línea de comandos siguen siendo muy utilizadas por su posibilidad de automatización y conociendo el comando es más sencillo que utilizar una herramienta gráfica. Además, para la administración de servidores siguen siendo la interfaz de administración principal incluso antes que las interfaces gráficas.

Emulador de terminal de GNOME Terminal

Emulador de terminal de GNOME Terminal

Funcionalidades del intérprete de comandos

Las funcionalidades de introducir comandos y ejecutarlos, variables de entorno, redirecciones y tuberías son funcionalidades básicas que los intérpretes de comandos actuales poseen. Algunas funcionalidades no están presentes en todos los intérprete de comandos y otras en función del inteŕprete funciona de forma ligeramente diferente o con algún añadido adicional.

Una funcionalidad que cambia en función del intérprete es qué ocurre cuando se pulsa la tecla tabulador. Al pulsar esta tecla los intérpretes suelen proporcionar autocompletado para el nombre del directorio o nombre de comando pero algunos son capaces de hacerlo incluso de forma recursiva en múltiples directorios o aplicando correcciones de fallos de tipografía aplicando la corrección cuando se introduce una letra mal.

Otra variación en función del intérprete es el tipo de expansión comodín o wildcard expansion que se soporta. Las expansiones comodín son una versión simplificada de las expresiones regulares que permiten encontrar múltiples coincidencias, estos es muy utilizado por ejemplo para seleccionar múltiples archivos o cierto tipo de archivos como todos los archivos de música o vídeo con *.mp3 o *.mp4 respectivamente, estas expresiones con un comodín del caracter asterisco seleccionan todos los archivos con cualquier nombre y de extensión mp3 o mp4.

Otra funcionalidad es la posibilidad de personalizar el aspecto del símbolo del sistema o prompt para que muestre la información que se desee en texto y con los colores deseados. Los símbolos del sistema por defecto incluyen el directorio de trabajo actual, el nombre de usuario y el nombre del sistema en el que se está trabajando.

Intérpretes de comandos

Dado que el intérprete de comandos es simplemente un programa más hay varios disponibles con ligeras variaciones sobre las funcionalidades básicas pero suficientes para que algunos desarrolladores según sus ideales hayan creado varios.

En las distribuciones GNU/Linux generalmente el intérprete de comandos preinstalado por defecto es bash y otro popular es zsh que se ha convertido en el por defecto en el sistema operativo macOS en sustitución de bash. Otros intérprete de comandos menos conocidos son fish y dash pero no son los únicos.

Las funcionalidades principales de todo intérprete de comandos las soportan todos, casi la mayor diferencia entre ellos aparte de su popularidad es su nivel de personalización y en menor medida algunas mejoras y rendimiento pero que estas dos últimas no suelen ser determinantes para cambiar de uno a otro.

Como cambiar el intérprete de comandos del usuario

Independientemente del intérprete de comandos que preinstale la distribución GNU/Linux este se puede cambiar instalando el paquete de otro intérprete y ejecutándolo como un comando más. También es posible cambiar el intérprete por defecto al abrir una terminal.

Este comando permiten instalar el intérprete de comandos zsh.

1
2
$ sudo pacman -S zsh

pacman-install-zsh.sh

Los siguientes permiten listar los intérpretes de comandos instalados en el sistema y cambiar el por defecto del usuario a otro.

1
2
$ chsh -l
$ chsh -s [path-to-shell]
chsh.sh

El aspecto por defecto de los prompts de bash y zsh son los siguientes.

Intérprete de comandos bash Intérprete de comandos zsh

Intérprete de comandos bash y zsh

Configurar el prompt del símbolo del sistema

Uno de los motivos de cambiar de un intérprete de comandos por otro es cambiar el aspecto del símbolo del sistema. bash con la variable de entorno PS1 permite personalizar en cierta medida prompt y si se usa el sistema de control de versiones Git este ofrece una utilidad para que el símbolo del sistema indique el estado de cambios cuando el directorio de trabajo actual es un repositorio de Git. Sin embargo, estas personalizaciones son limitadas y específicas de cada shell.

En mi caso este es el aspecto que utilizo con bash, en el que he cambiado los colores y usado la utilidad para mostrar información del repositorio Git. La segunda image es la potente personalización e independiente del shell ofrecida por Starship.

Terminal de bash personalizada Terminal personalizada con Starship

Terminal de bash personalizada


Comparte el artículo: