¿Qué es un emulador, una consola virtual o una línea de comandos?
Para los usuarios poco familiarizados con la línea de comandos, algunos conceptos pueden resultar difusos. Expresiones relacionadas con la consola o los emuladores de terminal pueden confundirse y hacer que comprender el funcionamiento de esta “pantalla negra” sea un poquito más complicado.
Los emuladores de terminal
Comenzando por lo más general, es necesario indicar que cuando nos referimos a terminal, realmente estamos hablando del emulador de la misma. La terminal es un dispositivo físico mediante el que se envía y recibe información a un equipo, aunque no necesariamente es el encargado de ejecutar esas peticiones.
En este caso, al hablar de terminal no estamos haciendo referencia a ese dispositivo, sino a la interfaz que permite la gestión de la misma. Son algo así como una aplicación que permite el acceso a diferentes tipos de Shell. Por ejemplo, son emuladores de terminal, aplicaciones como PowerShell, Azure Cloud Shell, Cmder, Gnome Terminal, iTerm… además de las opciones externas a los propios sistemas operativos.
Cada uno de estos emuladores de terminal tendrá unas funcionalidades concretas, una apariencia determinada y ofrecerá diferentes tipos de personalizaciones. Para saber cuál es la más adecuada a tus necesidades o a tu forma de trabajar, es posible que durante un tiempo tengas que ir probando hasta dar con el emulador perfecto para ti.
Las consolas virtuales
Posiblemente, uno de los conceptos más complejos por las diferentes acepciones que permite el término y el uso que le damos a algunos de ellos. En ocasiones se considera que la consola es lo mismo que la terminal física, pero hay quienes solo se refieren a las consolas virtuales como una aplicación que se encuentra por debajo de estas, algo así como un emulador.
En cualquier caso, lo correcto es referirse a las consolas virtuales como una sesión del intérprete de comandos (Shell); lo que ocurre al abrir el emulador y comenzar a ejecutar comandos. Asimismo, al realizar esta acción, no solo estaríamos ejecutando la consola virtual a la que accedemos, sino que se estarían utilizando para ello dos consolas. Este número de consolas puede aumentar si, además, se utiliza un multiplexador o se usan funciones para “dividir la tabla”; a pesar de que se esté usando un mismo terminal en todo momento.
Al utilizar Linux, se emplea un número mayor de consolas por el propio funcionamiento del sistema operativo. Para acceder a ellas basta con pulsar CTRL + ALT + la tecla adecuada para la función que queremos realizar. De esta forma, aunque la mayor parte de las consolas virtuales sean gráficas, también habrá consolas de texto, donde todas ellas están funcionando a la misma vez y sin la ayuda de emuladores de terminal.
Las Shells
Los intérpretes de comandos tienen un funcionamiento similar a las consolas virtuales, en el sentido de que pueden multiplicarse con mucha facilidad. Por defecto, los sistemas Unix cuentan con Bash, aunque puede sustituirse por otra como Zsh, Fish o Ksh.
Su función es, como la propia traducción de Shell indica, interpretar a un lenguaje que la máquina pueda entender cada comando que ejecutamos. Así, la sintaxis de los scripts, las variables o algunas funciones pueden hacer que la experiencia de usuario sea totalmente diferente entre una Shell y otra.
La línea de comandos
Quizá uno de los conceptos más habituales, aunque no siempre correctamente utilizado. Ya que, si una Shell es una intérprete de la línea de comandos, no todos los intérpretes son una Shell. Estos intérpretes de comandos, también llamados CLI, son aplicaciones con las que podemos interactuar mediante fragmentos de texto. Así, algunos se ejecutan en una Shell siendo simplemente un servicio online más, mientras que otros son capaces de tener control sobre el sistema operativo de la máquina.
Son ejemplos de línea de comandos servicios tan comunes como SSH, NPM o GitHub CLI.
Como ves, es muy fácil confundir algunos conceptos básicos de la informática, pero basta con muy poquito para saber diferenciarlos correctamente.