Una de las funciones de un sistema operativo es servir de interfaz entre un usuario y un ordenador de forma que se pueda producir una comunicación bidireccional entre ambos. A día de hoy estamos acostumbrados a ver interfaces de usuario de forma gráfica con ventanas, iconos, imágenes, etc.
Estoy es muy bonito pero habéis de saber que esto no siempre ha sido así. En los orígenes de la informática moderna, los sistemas operativos proporcionaban herramientas muy toscas para la comunicación hombre-maquina. En este artículo vamos a hablar de una de esas herramientas denominadas terminal de Linux y por qué a día de hoy es tan importante conocer su uso.
El terminal de Linux (también denominado shell) es el término usado para referirse a un intérprete de comandos que no es ni más ni menos que un programa informático que aporta una serie de instrucciones claramente definidas (llamadas comandos) que permiten al usuario comunicarse con el núcleo del sistema operativo. Existen varias shells, siendo las más comunes:
- Shell Bourne (
sh
). Creada por Stephen Bourne cuyo símbolo del sistema (prompt) es$
. - Bourne Again Shell (
bash
). Es la shell por defecto que asigna Ubuntu a todos los usuarios. Es compatible con el shellsh
e incorpora algunas características como el tamaño ilimitado del histórico de comandos. - C-Shell (
csh
). Shell que procedente del Sistema Operativo BSD siendo su símbolo del sistema el%
.
El aspecto típico que presenta un terminal de Linux es el que se muestra en la siguiente imagen
Como podréis comprobar, visualmente dista mucho de la amigabilidad que tiene vuestro escritorio de Windows o Mac OS y seguro que ahora mismo os estáis haciendo esta pregunta:
Si tan dificil y «feo» es ¿Por qué es tan importante aprender cómo se usa?
Pues bien, la respuesta es bastante sencilla:
En modo gráfico podemos hacer tareas que también podemos hacer con comandos, pero con comandos podemos hacer tareas qué no podemos hacer en modo gráfico.
Si queremos ser unos buenos administradores del sistema y queremos verdaderamente sacar el rendimiento al mismo, no nos queda otra que usar el terminal de Linux. Hoy en día casi todos los servidores se administran de forma remota mediante terminal. Existen dispositivos como NAS y Raspberry Pi que piden a gritos que el usuario que los administre tenga conocimientos de comandos en el terminal de Linux.
El prompt
Antes de pasar a a ver los comandos básicos, tenemos que tener muy claro qué es el prompt y que partes lo componen. Pues bien, si os fijáis en el terminal anterior vemos una linea con varias palabras y al final del todo un «cuadrado» parpadeante (en ocasiones un guión bajo) que indica que la ventana del terminal de Linux está preparada para que el usuario empiece a ejecutar sus comandos escribiéndolos directamente con el teclado. Pues a esta línea es a lo que denominamos prompt y siempre tiene la siguiente estructura:
nombre_usuario @ maquina_conectada : directorio_activo $ _
Veamos entonces qué significan cada uno de los elementos del prompt:
- nombre_usuario es la cuenta de usuario con la que hemos iniciado sesión en la máquina identificada con el nombre maquina_conectada.
- @ La arroba indica la máquina a la que hemos accedido. Separa el nombre de usuario de la máquina a la que nos hemos conectado
- maquina_conectada es el nombre de la máquina (también denominado host) a la que hemos accedido con nuestra cuenta de usuario.
- : los dos puntos separan el nombre de la máquina conectada del directorio activo o directorio sobre el que estamos trabajando en este momento.
- directorio_activo es el directorio de trabajo. Será el directorio por defecto sobre el que se ejecutarán todo los comandos siempre que no lo cambiemos o que en el comando a ejecutar pongamos otro distinto.
- $ este símbolo indica dos cosas: el fin del prompt y el tipo de usuario conectado al terminal de Linux. Si es un dollar $, se trata de un usuario sin permisos de administración mientras que si es una almohadilla # el usuario conectado es un usuario administrador.
Estructura de un comando
Cualquiera de los comandos que ejecutemos en un terminal de Linux también va a tener una estructura (sintaxis) determinada. En este apartado no pretendo que conozcáis la sintaxis de todos los comandos de Linux con detalle ya que eso daría para cientos de artículos. Lo que si quiero es que sepáis que todos tienen una estructura en común como la que se muestra a continuación:
$ nombre_comando [- modificadores] [argumentos]
Veamos cada una de las partes comunes de todos los comandos:
- nombre_comando es el comando en si. Lo único a tener en cuenta es que se ha de escribir tal y como es y en ningún caso usar mayusculas para hacerlo.
- – modificadores normalmente son letras, mayusculas o minúsculas, precedidas del símbolo guión. Por ejemplo, modificadores son -t -n -J -Z. Cada comando lleva los suyos, por lo que habrá que leerse bien la ayuda del mismo para no cometer errores. Estos modificadores cambian el comportamiento por defecto del comando, en ocasiones hasta hacerlo parecer un comando distinto. Los corchetes indicarán en la ayuda del comando que son opcionales pero en ningún caso hay que ponerlos cuando lo vayamos a ejecutar.
- argumentos en este caso lo normal es que sean la ruta de uno o varios archivos o directorios, en función del comando que vayamos a ejecutar. Al igual que en el caso anterior, la presencia de los corchetes en la ayuda también indicarán opcionalidad mientras que la ausencia de los mismos indicará obligatoriedad en su uso.
Para que veáis el caso real de un comando que mezcla todo esto, os pongo el siguiente ejemplo de uso del comando tar que sirve para empaquetar varios archivos contenidos en un directorio en un único archivo:
$ tar -cvf nombre_archivo.tar nombre_directorio/
Con el ejemplo anterior, lo único que quiero es que observéis la sintaxis sin entrar en detalle en por qué es así ya que esta pregunta la contestaremos en futuros artículos.
Comandos básicos del terminal de Linux
En este apartado vamos a ver los comandos básicos que todo usuario de Linux ha de saber manejar. De momento, no esperéis comandos complejos y sofisticados ya que la idea es empezar por lo sencillo e irlo complicando cada vez más hasta que os deis cuenta de la potencia del terminal de Linux.
- $ clear Comando para limpiar el terminal de Linux. Es muy útil sobre todo después de haber ejecutado una gran cantidad de comandos ya que dejará la ventana como se mostraba en la imagen anterior.
- $ sudo [usuario] Este comando permite cambiar la identidad de usuario. Normalmente el usuario con el que acedemos al terminal no tiene suficientes privilegios para ejecutar ciertos comandos, entonces con este comando podemos cambiar, por ejemplo, al usuario administrador de la siguiente manera: $ sudo su
- $ cd [ruta_directorio] Cambiar al directorio especificado por el argumento [ruta_directorio]. Si lo usamos sin argumentos, establece como directorio activo el propio del usuario.
- $ ls [ruta_directorio] Tal vez sea de los comandos más usados ya que muestra la lista de ficheros/directorios que contiene en directorio activo.
- uname -a Este comando nos va a servir para ver la versión del Kernel de Linux que estamos usando.
- lsb_release -a Por ejemplo, en Linux Ubuntu nos va a permitir conocer el nombre en código que la gente de Canonical ha dado a la versión que estamos usando.
- date Nos muestra la fecha y hora del sistema.
- cal Nos muestra un calendario en pantalla (por defecto el del mes actual). Se propone como ejercicio, investigar como mostrar la fecha de un mes distinto
- who Va a mostrar por pantalla todos los usuarios conectados al equipo en el momento en el que es ejecutado. Esto es así ya que Linux es un sistema operativo multiusuario, es decir, posibilita que varias personas inicien sesión a la misma vez en la misma máquina.
- man nombre_comando Este comando sirve para usar la ayuda de Linux y poder ver así la sintaxis de un comando en concreto. También podréis ver ejemplos de uso de dicho comando, cosa que en ocasiones nos va a venir muy bien.
Hasta aquí en repaso de los comandos básicos de un sistema operativo Linux. Os animo a que los practiquéis para que os deis cuenta que tampoco es tan difícil esto del terminal de Linux. Mas adelante iremos viendo otros comandos más complejos y podremos ejemplos de uso para que os sea más facil su aprendizaje. Espero que os haya gustado y ya sabéis que nos leemos en el próximo.
Adiós, os!