consola-de-comandos-raspberry-pi

Aprender a usar la consola de comandos de Raspberry Pi

  • 9 min

La consola de comandos es una interfaz de texto que permite controlar un sistema ejecutando órdenes.

En Raspberry Pi y Linux la consola es una herramienta fundamental. Puede intimidar un poco al principio, porque parece una pantalla para gente que lleva veinte años viviendo dentro de una cueva de comandos. Pero en cuanto la usas un rato, veréis que es más práctica de lo que parece.

El motivo por el que se sigue usando la consola de comandos es sencillo. Es un método muy rápido y flexible de ejecutar acciones en un ordenador. Podemos combinar comandos, automatizar tareas y trabajar cómodamente incluso cuando no tenemos entorno gráfico.

Por supuesto no consiste en saberse de memoria cientos de comandos. Para nada. Es más, da igual cuantos años lleves usando Linux, seguramente siempre vas a poder encontrar uno nuevo. Además, hay mucha documentación al respecto, la propia consola de comandos tiene herramientas para darte ayudas, y es incluso normal tener “chuletas” o recopilatorios e comandos útiles.

Por tanto, hay que perderle el miedo a la consola de comandos. Además, de verdad no es tan difícil como parece. Es cuestión de empezar a usarla y poco a poco, casi sin darte cuenta, te sorprenderás de lo cómodo que encuentras con ella.

Así que para empezar a perderle el miedo, vamos a ver qué es eso de la consola de comandos o CLI.

¿Qué es la consola de comandos?

El interfaz de línea de comandos (CLI, command-line interface), o simplemente consola de comandos, es un sistema para controlar un ordenador o programa a través de instrucciones introducidas como una línea de texto simple.

La consola de comandos es una herramienta habitual en los sistemas operativos basados en Unix, como Linux. En general, aparece como una interface sencilla, en la que el usuario escribe órdenes y recibe información del sistema a través de mensajes de texto.

Con el paso de los años, en una época dominada por los interfaces gráficos (GUI, graphical user interface), la consola de comandos puede parecer arcaica. Sin embargo, sigue siendo una herramienta potente, rápida, y muy habitual en los sistemas Unix.

Los CLI no son exclusivos de Unix. Windows tradicionalmente ha usado cmd.exe como consola de comandos. En las últimas versiones, Microsoft ha potenciado su CLI introduciendo PowerShell, mucho más potente.

La mayoría de CLI no sólo permiten introducir órdenes de forma manual, si no que permiten ejecutar comandos de forma automatizada desde un archivo de texto que se denomina script (equivalente a los batch en Windows).

Adicionalmente, otro de los motivos por los que los CLI siguen estando en pleno uso es el control remoto de un ordenador. Emplear un CLI remoto (como ssh, que veremos en su momento) permite ejecutar acciones con mucha rapidez y rendimiento, dado que sólo enviamos texto y no tenemos que enviar/recibir la señal de video que requiere un GUI.

¿Consola de comandos, terminal o shell?

Es frecuente denominar al CLI como consola de comandos, emulador de terminal, o shell. Aunque son conceptos distintos, en la práctica es frecuente que se usen (incorrectamente) como sinónimos ya que están muy relacionados.

Por clarificar los términos, un shell es cualquier interface que permite controlar un sistema operativo. Por tanto, el CLI es un shell, pero también hay shell gráficos.

El término terminal proviene de los primeros ordenadores, en los que controlabas al ordenador desde un “dispositivo” que básicamente era una pantalla y un teclado. El emulador de terminal es el programa que nos permite ejecutar un CLI en un sistema gráfico y, como su propio nombre indica, “emula” estos primeros terminales.

Por último, el CLI en sí es el propio intérprete de instrucciones, el programa que recibe los comandos y ejecuta las acciones pertinentes en el SO.

Por resumir. En un ordenador con un entorno de ventanas, el sistema de ventanas con la captura de ratón y teclado, es un shell. Cuando abrimos una consola de comandos, eso también es un shell.

El programa que abrimos, es el emulador de terminal. Y lo que hay dentro de este, es el intérprete de comandos o CLI.

Por ilustrarlo, a modo de ejemplo, cuando escribimos un comando y pulsamos Enter, es el CLI el que procesa los datos. Pero, por ejemplo, la función de copiar y pegar un comando, o mostrar la salida del CLI, son propias del emulador de terminal.

¿Qué es eso de Bash?

En Linux existe más de un intérprete de líneas de comandos. De hecho, hay muchas. Algunos ejemplos son Bash, Dash, KornShell (ksh), Tcsh, Fish o Z Shell (zsh), entre otros, cada uno con sus ventajas y desventajas (y fans y detractores).

GNU Bash es el CLI implementado de forma mayoritaria en las distribuciones de Linux. Ejemplos de distribuciones que emplean Bash como CLI por defecto son Debian, openSUSE, Ubuntu, Fedora, Slackware, Mandriva.

Raspberry Pi OS está basado en Debian. Por eso Bash ha sido tradicionalmente el CLI incluido por defecto en Raspberry Pi.

Bash, Bourne-Again SHell, fue lanzado en 1989. Es el predecesor de SH, The Bourne Shell, que es uno de los CLI originales de Unix. Los scripts de Bash con compatibles con SH, pero Bash añadió funciones adicionales como autocompletado o histórico de comandos.

Por si alguno le pica la curiosidad, para comprobar que CLI estamos usando actualmente podemos usar este comando

echo $0

Y para listar todos los CLI disponibles en un sistema

cat /etc/shells

raspberry-pi-terminal-list-cli

¿Qué es eso de LXTerminal?

En un sistema Linux, igual que existe más de un CLI disponible, existe más de un emulador de terminal. Algunos ejemplos de terminales son LXTerminal, Gnome Terminal, xterm, UXTerm, Lonsolem, entre otros muchos.

LXTerminal fue durante mucho tiempo el emulador de terminal incluido por defecto en Raspberry Pi OS, asociado al escritorio LXDE/LXQt usado tradicionalmente en Raspberry Pi.

Si por curiosidad, alguno quiere comprobar que emuladores de terminal tiene disponibles en su sistema puede escribir,

sudo update-alternatives —config x-terminal-emulator

raspberry-pi-terminal-list-terminals

Que como vemos, en aquella instalación sólo aparece LXTerminal.

Como lanzar la consola de comandos en Raspberry Pi

Lanzar Bash, la consola de comandos por defecto en Raspberry, es muy sencillo. Tenemos un botón disponible en la barra superior que lanza Bash directamente.

rasperry-pi-terminal-lanzar

En otras distribuciones, como Ubuntu, el CLI está asociado al atajo de teclas Control+Alt+T. Si vuestra instalación de Raspberry Pi OS no lo trae configurado, podéis añadirlo vosotros mismos.

Al inicio de cada línea en la que el usuario puede introducir un comando, veremos una cabecera con información proporcionada al usuario.

rasperry-pi-terminal

pi@raspberrypi:~$

El significado de estos datos es:

  • pi: indica el usuario conectado a la terminal
  • @raspberrypi: indica el nombre de la máquina a la cual estamos conectados
  • ~: indica la ruta en la cual nos encontramos, en este caso ruta de inicio predeterminada
  • $: indicador para comenzar a escribir comandos (será # si estamos loggeados como usuario root)

Ejecutar comandos en la consola de comandos

Ejecutar una instrucción es tan sencillo como escribir el comando y pulsar la tecla enter. Si el comando es correcto, el CLI realizará las acciones oportunas y el emulador de terminal mostrará el resultado en la pantalla.

Por ejemplo, para lanzar Chromium, si lo tenemos instalado, simplemente escribimos el siguiente comando

chromium

raspberry-pi-terminal-launch-commands

Muchos de los comandos aceptan parámetros adicionales que modifican el comportamiento del comando. Así, chromium admite pasar una URL como parámetro, y al abrirse cargará directamente la URL indicada. Por ejemplo, para cargar directamente la página de Google escribimos.

chromium www.google.com

Si algún comando ejecuta un proceso, y queremos cancelarlo, podemos pulsar el atajo de teclado

control + C

Si queremos limpiar la pantalla, quitando todos los comandos escritos con anterioridad, ejecutamos el comando

clear

Autocompletado con tabulación

Uno de los grandes “trucos” a la hora de emplear Bash y que nos ahorrará una enorme cantidad de tiempo es la función de autocompletado con la tecla tabulación.

Si en cualquier momento mientras escribimos un comando, un nombre de archivo, o algunos argumentos, pulsamos la tecla tabulación Bash sugiere la opción que empieza por lo que hemos escrito. En caso de haber más de una ocurrencia, se recorren cíclicamente las opciones disponibles.

Si existen muchas ocurrencias, al pulsar tabulación no aparecerá nada. Al pulsarla una segunda vez nos mostrará un listado con los comandos disponibles. Podemos añadir algunas letras más y pulsar tabulación para terminar el comando.

Así, siguiendo con el ejemplo de chromium, si pulsamos escribimos ‘ch’ y pulsamos dos veces tabulación nos mostrará un listado con múltiples opciones disponibles.

raspberry-pi-consola-autocompletado

Si completamos hasta ‘chrom’ y pulsamos tabulación, Bash autocompleta a chromium

La función de autocompletar es especialmente útil al tratar con rutas o nombres de ficheros.

Historial de comandos

Otra función que nos ahorrará mucho tiempo y que es una de las mejoras que introdujo Bash respecto a su antecesor SH, es el histórico de comandos.

En cualquier momento podemos recuperar un comando escrito con anterioridad pulsando la tecla “arriba” del teclado de flechas. Pulsarlo sucesivamente nos ira trayendo el comando anterior, hasta el inicio de la sesión del terminal. Si nos hemos pasado, podemos pulsar la tecla “abajo” para pasar al comando posterior.

Un poquito de ayuda

Bash dispone de ciertos comandos que nos permiten obtener ayuda sobre los comandos disponibles.

raspberry-pi-terminal-whatis

Algunos de estos comandos son

Mostrar un resumen de la funcion del comando xxxxx

whatis xxxxx

Mostrar la localización más probable para el programa xxxxxx

whereis xxxxx

Listar las páginas de manual que tratan acerca del comando xxxxx

apropos xxxxx

Mostrar el manual de uso o configuración del programa xxxxx

man xxxxx

Mostrar las páginas de manual que contengan la palabra xxxxx

man –k xxxxx

Hasta aquí es suficiente para empezar a perderle el miedo al emulador de terminal de Raspberry Pi. A partir de aquí, la consola va a aparecer constantemente en el curso, así que conviene tener a mano una “chuleta” con algunos de los comandos más útiles de Bash.