Es cierto que las distribuciones Linux han cambiado muchísimo en los últimos años. A día de hoy, prácticamente cualquiera se puede usar desde una interfaz basada en ventanas muy similar a la de Windows. Ningún debe tener miedo ni pensar que Linux es un sistema operativo complicado. Sin embargo, sí es cierto que, si queremos sacarle todo el partido posible y exprimirlo al máximo, debemos usar la Terminal. Y aquí es donde nace el miedo de muchos s.
La Terminal de Linux es una consola, similar a CMD o PowerShell (pero mucho más avanzada que ambas), utilizada para permitir a los s más avanzados y técnicos controlar hasta el más mínimo detalle del sistema operativo.
Desde esta consola podemos ejecutar todo tipo de binarios, aunque lo suyo es ejecutar aquellos que no tienen interfaz gráfica y que deben usarse mediante comandos. Igual que en otros sistemas operativos, podemos ejecutar cualquier binario o script directamente desde su directorio. Además, Linux tiene también un PATH donde podemos guardar binarios y ejecutarlos sin tener que desplazarnos hasta su directorio. Por defecto, el PATH de Linux está formado por los siguientes directorios (donde se busca el comando en orden):
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
La terminal de Linux se basa en un lenguaje de scripting conocido como Bash, heredada de sh, la consola de Unix. Podemos ejecutar scripts desde la consola, ejecutar binarios y realizar todo tipo de tareas. A diferencia de Windows, Linux cuenta en su terminal una gran cantidad de herramientas muy avanzadas para istrar y controlar el sistema operativo y muchas de las funciones disponibles a través de la línea de comandos, no están disponibles a través de la interfaz gráfica, al igual que sucede tanto en Windows como en Linux.
Todo lo que hacemos desde una interfaz, podríamos hacerlo perfectamente desde la terminal. Aunque de forma más complicada, larga y menos intuitiva.
¿Es obligatorio usar Linux con comandos?
Linux, desde siempre, se ha caracterizado por ser un sistema operativo más complicado de usar que cualquier otra alternativa, como Windows o macOS. Y eso se debe a que, en sus inicios, mientras que sus rivales apostaban por simples interfaces gráficas, Linux apostaba por el uso por comandos. Este ha sido uno de los principales motivos por los que Linux no ha evolucionado tanto en cuota de mercado a diferencia de Windows y macOS que prácticamente se distribuyen el mercado de sistemas operativos domésticos. El mercado empresarial, en especial el de servidores, está prácticamente dominado por Linux.
Afortunadamente, hoy en día esto ha cambiado, y dentro de este sistema operativo podemos encontrar excelentes escritorios e interfaces gráficas tan sencillas de usar (e incluso más) que las de Microsoft o Apple. Pero, a pesar de ello, el pasado sigue persiguiendo al pingüino. De hecho, el uso de Linux es ideal para equipos antiguos de bajos recursos, equipos que con Windows habían comenzado a dar síntomas de agotamiento, pero que, con una distribución de Linux ligera, han vuelto a ver la luz al final del túnel y se pueden utilizar como servidores web, servidores de almacenamiento en la nube, como servidor de películas entre otras muchas opciones.
Es verdad que muchas de las tareas avanzadas requieren del uso de terminal. Sin embargo, este no es, ni de lejos, obligatorio. Gracias a los escritorios como GNOME o KDE, cualquier va a poder hacer de todo usando el ratón, como en cualquier otro sistema operativo. Y, si los escritorios no nos ofrecen estas posibilidades, siempre habrá programas con los que poder hacer lo que queramos sin complicarnos. El mismo caso se aplica a Windows y macOS, donde, a través de la interfaz gráfica no es posible realizar determinadas tareas sin recurrir a aplicaciones de terceros o a la línea de comandos, ya sea a través de CMD o PowerShell en Windows o Terminal en macOS.
Eso sí, aunque no es obligatorio, si no queremos tener problemas, al menos sí debemos conocer cómo funciona la terminal de Linux, y cuáles son sus comandos esenciales. De esta forma, en caso de necesitar recurrir a cualquiera de ellos (por ejemplo, a apt para instalar un programa), sabremos cómo hacerlo. Además, si tenemos algún problema con el GRUB de arranque, vamos a poder arreglarlo sin necesidad de volver a instalar ni la partición Linux ni la de Windows, al menos, en la mayoría de los casos en los que la solución sea relativamente sencilla.
Cómo abrir un Terminal en Ubuntu
Cada distro Linux tiene sus propias peculiaridades, por lo que puede que esto cambie. Nosotros vamos a usar para los ejemplos Ubuntu, la distro equilibrada entre rendimiento, usabilidad, seguridad y estabilidad más usada en todo el mundo.
Hay dos formas de llegar al terminal de Ubuntu. La primera de ellas es lanzando un TTY, o espacio de trabajo sin entorno gráfico. Podemos ejecutar 7 terminales al mismo tiempo de esta forma. De la 1 a la 6, ninguna tiene interfaz gráfica. La única con GUI es la TTY7.
Para cambiar de TTY en Linux, debemos usar el atajo de teclado Control + Alt más la tecla, del F1 al F7, del TTY que queramos ejecutar.
Esto es lo más sencillo y básico de la Terminal. Pero hay también muchos otros comandos esenciales que debemos conocer y que nos ayudarán a controlar mucho mejor esta consola.
Movernos por los directorios
Algo esencial para poder empezar a defendernos con la terminal de Linux es saber cómo movernos por los distintos directorios. Lo primero que nos llamará la atención es el símbolo ~ que aparece a la izquierda de los comandos. Este indica el directorio inicial (/home/) donde hemos empezado.
cd
Usando el comando «cd» podemos cambiar de directorio y movernos por todo el árbol de nuestro disco duro. Podemos ir a la carpeta «Descargas» que hay dentro de «/home//» ejecutando el comando:
cd Descargas
También podemos usar rutas completas, como:
cd /home//Descargas
ls
Una vez que estamos en el directorio que queremos, podemos usar el comando «ls» para ver una lista con todos los archivos que hay en ese directorio.
mkdir
Este comando nos permite crear una nueva carpeta en el directorio en el que estamos ubicados. Debemos ejecutar este comando seguido del nombre de la nueva carpeta que queremos crear, por ejemplo:
mkdir software
Con este comando podemos copiar un archivo de un directorio a otro. Podemos usarlo para copiar un archivo del directorio actual a otro directorio, o introduciendo dos rutas absolutas:
- archivo /home//Documentos
- /home//Descargas /home//Documentos
Podemos usar este comando para copiar un directorio y todos sus archivos de un lugar a otro. Para ello debemos usar el parámetro -R de la siguiente manera:
-R /home//Descargas/ /home//Descargas-Copia/
mv
Este comando funciona igual que el comando que acabamos de ver, con la diferencia de que, en vez de copiar el archivo, lo mueve (es decir, desaparece del origen). Este comando también se puede usar para cambiar el nombre a un archivo. Simplemente debemos moverlo al mismo directorio con un nombre diferente. Por ejemplo:
mv archivo1 archivonuevo
Por supuesto, también podemos usarlo para mover directorios:
mv /directorio-origen/ /directorio-destino/
cat
Cabe mencionar que a la hora de utilizar Linux desde su terminal, este igualmente es uno de sus comandos más utilizados desde hace años. Y es que para que nos hagamos una idea, el mismo no será de mucha a ayuda a la hora de listar el contenido de un archivo en la salida estándar que tengamos configurada en el sistema.
Pero eso no es todo, sino que además nos propone otros usos básicos pero no por ello menos útiles en Linux. Por tanto, con el fin de poder ejecutar este comando, no tenemos más que teclear el comando cat seguido del nombre del archivo y su extensión correspondiente. Estos son algunos de los ejemplos que podemos usar y que nos ayudarán para hacernos una idea de su nomenclatura y modo de uso:
- cat archivo.txt.
- cat > nombre_archivo: para crear un nuevo archivo desde cero.
- cat nombre_archivo1 nombre_archivo2 > nombre_archivo3: aúna los archivos 1 y 2 y por otro lado almacena su salida en el archivo 3.
rm
Por último, vamos a hablar del comando rm. Este nos permite eliminar cualquier archivo usando rutas relativas (es decir, un archivo dentro de nuestra ruta actual, que veamos con ls), o rutas absolutas, moviéndonos hasta el directorio donde se guarda el archivo.
- rm archivonuevo
- rm /home//Descargas/archivonuevo
También podemos usarlo para eliminar directorios completos:
rm -rf /home//directorio
pwd
Este sencillo comando tiene una única (y útil) finalidad: mostrarnos el directorio en el que estamos trabajando. Muy útil cuando nos hemos desplazado (recordamos, con CD) por varios subdirectorios y no nos acordamos exactamente en cuál estamos trabajando.
Comandos del sistema
Linux también cuenta con una gran variedad de comandos que nos permiten controlar la mayoría de los aspectos del sistema operativo. Algunos de los más sencillos y que nos merece la pena conocer son:
- date: muestra la fecha y la hora.
- cal: nos muestra un calendario.
- uptime: muestra el tiempo que lleva encendido el ordenador.
- uname –a: nos muestra la versión del kernel.
- whoami: nos indica cuál es nuestro actual.
- chmod: nos permite cambiar los permisos de cualquier archivo o directorio.
- chown: nos permite cambiar la autoría de cualquier archivo o directorio.
- mount: nos permite montar unidades (discos duros, USB, tarjetas de memoria, etc) en un directorio.
- clear: nos permite limpiar la Terminal para trabajar con ella de manera más ordenada.
Para la gestión de s:
- su: permite iniciar sesión como root desde la sesión actual.
- exit: cierra la sesión de root abierta.
- add: nos permite añadir un nuevo a nuestro Linux.
- wd: nos permite cambiar la contraseña del que le especifiquemos.
Podemos controlar los procesos que se ejecutan en nuestra distro con:
- top: un visor de procesos sencillo con el que ver todo lo que se está ejecutando en el sistema.
- kill ID: nos permite matar cualquier proceso desde su identificador.
- killall nombreaplicacion. Con este comando, que debemos acompañar del nombre de la aplicación, cerraremos todos los procesos relacionados con la aplicación desde la línea de comandos de una forma muy cómoda y rápida. No confundir con el proceso kill que se utiliza para cerrar procesos únicamente no aplicaciones.
- ps: muestra todos los procesos en ejecución.
- free: nos muestra información sobre la RAM usada y libre.
Por último, también tenemos algunos comandos para controlar el inicio y apagado del PC:
- halt: detiene todos los procesos del sistema y lo apaga. Es recomendable haber guardado todos los archivos en los que estemos trabajando en segundo plano si no queremos perder los cambios.
- shutdown: nos permite apagar el PC en un minuto. Podemos usar el parámetro -R para especificar el tiempo, en minutos, para apagar el PC. Y con -H now podemos saltarnos el minuto de espera y apagar el equipo directamente.
- reboot: reinicia el ordenador.
Muchos de estos comandos ofrecen las mismas funcionalidades tanto en Windows a través de Command Prompt como en macOS haciendo uso de Terminal.
Instalar y desinstalar programas
Desde la terminal de Linux también se suelen instalar y desinstalar todo tipo de programas. Aquí sí es donde cada distro cambia, ya que el gestor de paquetes que viene incluido por defecto en Ubuntu no es el mismo que podemos encontrar, por ejemplo, en Arch Linux.
En Ubuntu, el gestor de paquetes que encontramos es APT. Con él, desde Terminal, podemos descargar, instalar, actualizar y eliminar cualquier paquete de software. Las distros vienen con unos repositorios de software bastante completos, por lo que si conocemos el nombre del paquete podemos instalarlo fácilmente de la siguiente manera:
apt install firefox
Para eliminar un programa instalado, podemos cambiar «install» por «remove» (para eliminar solo los paquetes) o «purge» (para eliminar el paquete y todas las configuraciones y demás archivos residuales):
apt purge firefox
También debemos saber cómo añadir nuevos repositorios a Ubuntu y cómo actualizarlos para tener siempre las últimas versiones del software.
Por último, desde la consola también podemos descargar e instalar las últimas actualizaciones para nuestra distro Linux. Siguiendo el ejemplo de Ubuntu, podemos descargar las últimas actualizaciones para nuestra versión de Ubuntu (tanto del sistema como de las aplicaciones instaladas) con:
- apt update
- apt upgrade
Y si hay una nueva versión de Ubuntu (de las que salen cada 6 meses), podemos descargarla e instalarla con los siguientes comandos:
- apt update
- apt do-release-upgrade
Algunas distros pueden usar otros gestores de paquetes, como pacman, o hacernos recurrir directamente a los instaladores como «dpkg», «yum» y «rpm».
Comandos de red
También podemos usar la Terminal de Linux para realizar consultas y peticiones a través de Internet. Los comandos más conocidos, utilizados y útiles que podemos encontrar dentro de esta categoría son:
- ifconfig: nos permite ver una lista con todas las direcciones IP de nuestro PC.
- ping [servidor o IP]: envía un ping a un servidor (Google, en nuestro ejemplo), comprueba si hay respuesta y mide la latencia.
- traceroute: traza la ruta completa desde nuestro PC hasta el servidor.
- whois [servidor]: obtiene información acerca de un dominio (en nuestro caso, Google).
- wget [url]: nos permite descargar el archivo que le especifiquemos en la URL.
- ftp [servidor o IP]: nos permite conectarnos a un servidor FTP.
- iptables: nos permite abrir el del firewall nativo de Linux.
Comandos de seguridad
Estos comandos están relacionados con los permisos y la seguridad y nos podrá ser muy útiles en la Terminal de Linux.
- Journalctl: muestra los registros del sistema en sistemas que usan systemd.
- tail -f /var/log/syslog: para seguir en tiempo real los eventos del sistema.
- Chmod: cambia permisos de archivos y directorios.
- Chown: para cambiar el propietario o grupo de un archivo.
Trucos y atajos de la Terminal
También vamos a dejaros con algunos comandos que os harán la vida más fácil durante el manejo de la Terminal.
- Ctrl + A / Ctrl + E: Permite mover el cursor al inicio/fin de la línea.
- Ctrl + L: Limpiar la pantalla lo que es equivalente a escribir «clear»
- Tab: Sirve para autocompletar comandos y archivos.
- Ctrl + R: buscar en el historial de comandos.
Comando para los procesos
Al igual que sucede en Windows, en las diferentes distribuciones de Linux que podemos instalar en nuestro equipo son extremadamente importantes los procesos en funcionamiento en ese instante. Su correcta gestión nos permitirá ahorrar recursos del equipo o solventar problemas relacionados con el bloqueo del sistema operativo en su totalidad. Aquí hay un comando muy importante llamado Htop.
En realidad, nos encontramos con un potente visualizador de procesos interactivo que nos permite gestionar los recursos del de manera directa desde el propio Terminal del que os hablamos en estas líneas. Tan solo lo encontramos integrado en algunas distribuciones, pero siempre podemos añadirlo nosotros a mano.
Programas de terminal
Todas las distros suelen traer, al menos, un programa para poder usar la terminal de Linux desde el entorno gráfico. Además, todas ellas tienen una, o varias, TTY que nos permite usar nuestra distro sin el servidor gráfico X, exclusivamente en terminal.
Pero en la red existen una gran cantidad de programas de terminal, cada uno con unas características únicas, de manera que cada pueda elegir la consola que más le guste o mejor se adapte a sus necesidades o forma de trabajar, pero, al final, independientemente de cuál utilicemos, vamos a poder realizar las mismas funciones a través de la línea de comandos, ya que lo único que cambia es la estética, no la funcionalidad que nos pueda ofrecer una u otra versión de Linux.
GNOME Terminal
Otro huevo de pascua que podemos encontrar en este sistema es «fortune -s«. Al ejecutar este comando, lo que haremos será leer (en inglés) nuestra fortuna.
Si somos s avanzados, seguro que conoceremos la herramienta Vim, un editor de texto para terminal. Pues este editor tiene uno de los huevos de pascua más geeks que podemos encontrar. Una vez instalado, lo lanzamos y escribiremos dentro de él el siguiente comando para acceder a la ayuda: «:help 42«. Veremos cómo nos aparece un conocido huevo de pascua sobre la guía del autoestopista galáctico.
¿Conocemos el comando «sudo»? Seguro que sí. Pues hay un huevo de pascua dentro de Linux por el cual podemos hacer que, cuando un introduzca mal la contraseña de «sudo», este reciba un insulto por parte de Linux. Simplemente ejecutaremos el comando sudo visudo, escribiremos arriba del todo «Defaults insults», sin comillas, guardamos y salimos. Estamos listos para ofender.
Aprender más de la Terminal de Linux
El aprendizaje del entorno de Linux es constante. Es casi imposible llegar a saberlo todo y manejar la Terminal con un conocimiento absoluto. No obstante, en nuestra mano estará seguir aprendiendo y lo mejor para ello es estar al día con todas las novedades, trucos y consejos que ofrece su enorme comunidad.
Documentación oficial de Ubuntu
Nada como echar un vistazo a la documentación oficial de Ubuntu. Dentro podrás encontrar instrucciones de instalación o manuales de , peor también documentación sobre los comandos más utilizados con ejemplos y explicaciones de uso. También encontrarás al foro de la comunidad y guías de tremendamente útiles.
Stack Overflow
Estamos ante una activa comunidad de preguntas y respuestas dedicada a la programación. El “tag” Linux tiene miles de preguntas y muchos de ellos son específicos del la Terminal. Se incluyen comandos comunes, errores de comandos y mucho más. Al ser un plataforma activa, siempre hay nuevas preguntas y respuestas actualizadas, lo que es útil para problemas contemporáneos. Puedes acceder desde este enlace.
Ebook Gestionando Ubuntu
Rematamos con este libro que estudia la gestión del sistema operativo Ubuntu desde un punto de vista funcional y práctico utilizando la línea de comandos bash. El libro está formado por 14 capítulos y al final de cada capítulo se incluyen ejercicios, con el objetivo de poner en práctica todos los conceptos teóricos. La buena noticia es que puedes leerlo totalmente gratis con la prueba de Amazon Kindle Unlimited.