Fundamentos de Linux: Comandos Esenciales y Gestión del Sistema Operativo

Clasificado en Informática

Escrito el en español con un tamaño de 20,62 KB

1. Introducción a Linux

Linux surgió en la década de 1990 como una versión de Unix, desarrollado por Linus Torvalds.

Es un software libre con licencia GPL (General Public License).

Existen muchas distribuciones, entre las que destacan:

  • Debian
  • Ubuntu
  • Fedora
  • Y muchas otras.

2. Uso del Sistema Operativo Linux

El acceso al sistema se realiza mediante usuario y contraseña, a menos que se configure el inicio automático.

Entornos de Escritorio

El entorno de escritorio por defecto en Ubuntu es GNOME. Otros entornos populares incluyen:

  • KDE
  • Xfce
  • LXDE

Instalación de Interfaces de Escritorio

Para instalar una interfaz de escritorio, puedes usar los siguientes comandos:

  • sudo apt-get install mate-core (solo la interfaz básica)
  • sudo apt-get install mate-desktop-environment (entorno completo)

3. Interfaz Gráfica

Los elementos principales de la interfaz gráfica son:

  • Escritorio
  • Menú de aplicaciones
  • Dock (barra de tareas)
  • Selector de ventanas

Es posible configurar diversos ajustes del sistema desde el menú correspondiente.

4. Terminal y Línea de Comandos

La terminal se puede abrir rápidamente con la combinación de teclas Ctrl + Alt + T o desde el menú de aplicaciones.

Es posible cambiar entre terminales virtuales (TTYs) usando las combinaciones Ctrl + Alt + F1 a Ctrl + Alt + F7.

El Prompt

El prompt indica el tipo de usuario:

  • $: Usuario estándar
  • #: Usuario root (administrador)

5. Sintaxis General de los Comandos

La sintaxis general de los comandos en Linux sigue la estructura:

comando [opciones] [argumentos]
  • Una opción se utiliza para modificar el comportamiento del comando o la información que muestra (ej. -l para listar en formato largo).
  • Un argumento especifica el objeto o los datos sobre los que se ejecutará el comando (ej. un nombre de archivo o directorio).

El uso del tabulador es fundamental para autocompletar comandos y rutas, lo que agiliza el trabajo en la terminal.

6. Comandos Iniciales

A continuación, se presentan algunos comandos fundamentales para empezar a interactuar con el sistema:

  • history: Muestra los últimos comandos utilizados.
    • history -c: Borra el historial de comandos.
    • history!N: Ejecuta el comando número N del historial (ej. history!5).
    • Puedes navegar por el historial usando las flechas de cursor (arriba/abajo).
  • clear: Borra la pantalla de la terminal.
  • date: Muestra la fecha y hora actual del sistema.
    • Para obtener ayuda sobre el formato y opciones: info date, man date, date --help.
    • Nota: Si man no está instalado, puedes usar sudo apt install man-db o similar.
  • whoami: Muestra el nombre del usuario actual.
  • who: Muestra quién está conectado al sistema.
    • who -a o who --all: Proporciona información detallada, incluyendo la fecha de arranque del sistema, usuarios conectados, terminal y nivel de arranque.
  • sudo (super user do): Permite ejecutar otros comandos con privilegios de administrador. Requiere la contraseña del usuario. No todos los usuarios tienen permiso para usar sudo.
  • uname: Muestra información sobre el sistema operativo y el equipo (ej. nombre del kernel, versión).
  • lsb_release: Muestra información sobre la distribución de Linux, incluyendo la versión LSB (Linux Standard Base), un estándar para la compatibilidad entre distribuciones. La información se encuentra en /etc/lsb-release.
  • lshw: Muestra una lista completa del hardware del sistema (CPU, memoria, tarjetas gráficas, red, almacenamiento, periféricos, controladores).
    • Uso: sudo lshw [opciones]...
    • Nota: Si aparece "No superuser binary detected" o similar, asegúrate de tener privilegios de root o de usar sudo correctamente.
  • passwd: Permite cambiar la contraseña de un usuario.
    • passwd [opciones] [usuario]: Sin especificar usuario, cambia la contraseña del usuario actual. Con sudo, se puede cambiar la contraseña de otro usuario.
  • exit: Termina la sesión actual o cierra la terminal.
  • logout: Sale de la sesión en una terminal virtual o terminal de entrada (no en modo gráfico).
  • reboot: Reinicia el sistema.
  • shutdown: Apaga, pausa o reinicia el sistema.
    • Uso: shutdown [opciones]... [tiempo]

7. Gestión de Archivos y Directorios

Linux organiza su sistema de archivos de forma jerárquica, similar a un árbol, donde todos los directorios y archivos cuelgan de un directorio raíz.

Sistemas de Archivos en Linux

Los sistemas de archivos son la forma en que el sistema operativo organiza y almacena los datos. Algunos de los más comunes en Linux son:

  • Ext4 (fourth extended file system): Es el sistema de archivos predeterminado en la mayoría de las distribuciones de Linux. Es una mejora de sus predecesores (ext2 y ext3) y mantiene compatibilidad con ellos. Ext4 ofrece ventajas como soporte para mayores volúmenes, mejor uso de recursos del sistema, mayor seguridad y utiliza journaling (introducido en ext3), que consiste en un registro de cambios para restaurar datos en caso de fallo.
  • Swap: Es un tipo especial de partición o fichero que se utiliza como memoria de intercambio. Su función es evitar el colapso de la memoria RAM al descargar datos de procesos que consumen mucha memoria, actuando como memoria virtual y mejorando el rendimiento del sistema. En versiones recientes de Linux, la partición swap ha sido a menudo sustituida por un swap file, que cumple la misma función sin requerir un espacio de partición reservado previamente. Sin embargo, si hay múltiples sistemas Linux instalados, cada uno tendrá su propio swap file, lo que impide compartir el espacio. Es posible configurar el sistema para usar una partición o un fichero swap.

Otros sistemas de archivos utilizados en Linux incluyen: Btrfs, ZFS, ReiserFS, XFS, JFS, UFS y NFS (Network File System).

Estructura de Directorios Clave

Algunos de los directorios más importantes en la estructura de Linux son:

  • /: El directorio raíz, del cual descienden todos los demás.
  • /home: Contiene los directorios personales de los usuarios.
  • /etc: Almacena archivos de configuración del sistema.
  • /var: Contiene archivos de datos variables, como registros (logs) y colas de impresión.

Comandos para Gestionar Archivos y Directorios

  • ls: Lista archivos y directorios.
  • pwd: Muestra la ruta del directorio actual de trabajo.
  • mkdir: Crea nuevos directorios.
  • cd: Cambia de directorio.
  • rm: Borra archivos y directorios (con opciones para recursividad y fuerza).
  • cp: Copia archivos y directorios.
  • mv: Mueve o renombra archivos y directorios.
  • touch: Crea archivos vacíos o actualiza la marca de tiempo de archivos existentes.

8. Permisos y Propietarios

Cada archivo y directorio en Linux tiene permisos asignados a tres categorías de usuarios: el usuario propietario, el grupo al que pertenece el archivo, y otros (cualquier otro usuario del sistema).

Tipos de Permisos

  • r (read): Permiso de lectura.
  • w (write): Permiso de escritura.
  • x (execute): Permiso de ejecución (para archivos ejecutables o para acceder a directorios).

Comandos de Gestión de Permisos y Propietarios

  • ls -l: Permite ver los permisos detallados de archivos y directorios.
  • chmod: Cambia los permisos de archivos y directorios (ej. chmod 755 archivo).
  • chown: Cambia el propietario de un archivo o directorio (ej. chown usuario:grupo archivo).

9. Usuarios y Grupos

Linux gestiona el acceso y los privilegios a través de usuarios y grupos.

Tipos de Usuarios

  • Root (UID 0): El superusuario con todos los privilegios del sistema.
  • Usuarios del sistema (UID < 1000): Cuentas utilizadas por servicios y aplicaciones del sistema.
  • Usuarios normales (UID ≥ 1000): Cuentas de usuario para personas.

Comandos para la Gestión de Usuarios y Grupos

  • adduser: Añade un nuevo usuario al sistema.
  • deluser: Elimina un usuario.
  • usermod: Modifica las propiedades de un usuario existente.
  • groupadd: Crea un nuevo grupo.
  • groupdel: Elimina un grupo.
  • groups: Muestra los grupos a los que pertenece un usuario.

10. Redirección y Pipes

Estas herramientas permiten controlar el flujo de entrada y salida de los comandos.

  • >: Redirige la salida de un comando a un archivo, sobrescribiéndolo si ya existe (ej. ls > lista.txt).
  • >>: Añade la salida de un comando al final de un archivo existente (ej. echo "hola" >> archivo.txt).
  • <: Toma la entrada de un comando desde un archivo (ej. wc -l < archivo.txt).
  • | (pipe): Pasa la salida de un comando como entrada a otro comando (ej. ls | grep .txt).

11. Expresiones Regulares y Búsqueda de Archivos

La búsqueda de archivos y patrones es una tarea común en Linux.

Comandos de Búsqueda de Archivos

  • find: Busca archivos en el sistema de archivos basándose en diversos criterios (ej. find /home -name archivo.txt).
  • locate: Busca archivos rápidamente utilizando una base de datos preindexada (ej. locate archivo.txt).
  • grep: Busca patrones de texto dentro de archivos (ej. grep "error" log.txt).

12. Gestión de Procesos

Los procesos son programas en ejecución. Linux ofrece varias herramientas para gestionarlos.

Comandos de Gestión de Procesos

  • ps: Muestra los procesos en ejecución en el momento de la consulta.
  • top: Muestra los procesos activos y el consumo de recursos en tiempo real, de forma interactiva.
  • kill: Termina un proceso específico utilizando su ID de proceso (PID) (ej. kill PID).
  • htop: Un monitor de procesos interactivo y más avanzado que top.

13. Referencia Rápida de Comandos Adicionales

Esta sección proporciona una lista consolidada de comandos útiles, incluyendo algunos ya mencionados y otros nuevos, para una referencia rápida.

  • <: Usa un archivo como entrada de un comando.
  • >: Redirige la salida de un comando a un archivo (sobrescribe).
  • >>: Agrega la salida de un comando a un archivo (añade).
  • (comando1; comando2) > archivo: Redirige la salida de múltiples comandos a un archivo.
  • alias [nombre]='comando': Crea un alias para un comando.
  • apropos [comando]: Busca en el manual comandos relacionados.
  • apt install [paquete]: Instala un paquete (en sistemas basados en Debian/Ubuntu).
  • apt remove [paquete]: Elimina un paquete.
  • apt update: Actualiza la lista de paquetes disponibles.
  • apt upgrade: Actualiza los paquetes instalados.
  • asciiquarium: Muestra un acuario en ASCII en la terminal (requiere instalación).
  • banner [texto]: Muestra un texto decorativo en la terminal (requiere instalación).
  • cat: Muestra el contenido de un archivo.
  • cd [directorio]: Cambia de directorio.
  • chgrp: Cambia el grupo de un archivo.
  • chmod: Modifica permisos de archivos.
  • chown: Cambia el propietario de un archivo.
  • clear: Borra la pantalla de la terminal.
  • cmatrix: Simula la pantalla de Matrix en la terminal (requiere instalación).
  • comando1 && comando2: Ejecuta el segundo comando solo si el primero tiene éxito.
  • comando1 || comando2: Ejecuta el segundo comando solo si el primero falla.
  • comando1 | comando2: Pasa la salida del primer comando como entrada del segundo (pipe).
  • comando1; comando2: Ejecuta comandos en secuencia.
  • cp [origen] [destino]: Copia archivos o directorios.
  • cut: Extrae partes de líneas de un archivo.
  • date: Muestra la fecha y hora actual.
  • delgroup: Borra un grupo.
  • deluser: Borra un usuario.
  • df: Muestra el espacio disponible en almacenamiento.
  • dpkg -i [paquete.deb]: Instala un paquete .deb (en sistemas basados en Debian/Ubuntu).
  • du: Indica el espacio usado por archivos y directorios.
  • echo [texto]: Muestra texto en la terminal.
  • exec [comando]: Ejecuta un programa sin generar un nuevo proceso.
  • exit/logout: Cierra la sesión o la terminal.
  • export [variable]=[valor]: Define una variable de entorno.
  • find: Busca archivos en el sistema.
  • grep: Busca patrones dentro de archivos.
  • groupmod: Modifica un grupo existente.
  • groups: Muestra los grupos a los que pertenece un usuario.
  • head: Muestra las primeras líneas de un archivo.
  • help [comando]: Proporciona ayuda sobre el comando (para comandos internos de shell).
  • history: Muestra el historial de comandos.
  • htop: Monitoriza procesos de forma interactiva.
  • id: Muestra información sobre un usuario (UID, GID, grupos).
  • info [comando]: Muestra información detallada sobre el comando (sistema info).
  • kill [PID]: Finaliza un proceso específico por su ID.
  • killall [nombre]: Finaliza todos los procesos con un nombre específico.
  • ln: Crea enlaces simbólicos o duros.
  • locate: Encuentra archivos rápidamente usando una base de datos.
  • ls: Lista archivos y directorios.
  • man [comando]: Muestra el manual del comando especificado.
  • mkdir [nombre]: Crea un nuevo directorio.
  • more / less: Paginadores para ver el contenido de archivos grandes.
  • mv [origen] [destino]: Mueve o renombra archivos y directorios.
  • oneko: Un programa que muestra un gato siguiendo el cursor (requiere instalación).
  • passwd: Cambia la contraseña de un usuario.
  • ps: Muestra procesos en ejecución.
  • pwd: Muestra la ruta del directorio actual.
  • rm [archivo]: Borra archivos.
  • rmdir [nombre]: Elimina un directorio vacío.
  • set: Muestra las variables de entorno y de shell definidas.
  • sl: Simula un tren de vapor en la terminal (requiere instalación).
  • sort: Ordena el contenido de un archivo de texto.
  • stat: Muestra información detallada sobre un archivo o sistema de archivos.
  • su: Cambia al usuario root o a otro usuario.
  • sudo: Ejecuta comandos con privilegios de administrador.
  • sudo apt install kubuntu-desktop: Instala el entorno de escritorio KDE Plasma.
  • sudo apt install lubuntu-desktop: Instala el entorno de escritorio LXQt.
  • sudo apt install tasksel: Instala la herramienta tasksel.
  • sudo apt install ubuntu-mate-desktop: Instala el entorno de escritorio MATE.
  • sudo apt install xubuntu-desktop: Instala el entorno de escritorio Xfce.
  • sudo tasksel: Permite seleccionar e instalar entornos gráficos y otros paquetes.
  • tail: Muestra las últimas líneas de un archivo.
  • top: Muestra procesos activos y consumo de recursos en tiempo real.
  • touch [archivo]: Crea un archivo vacío o actualiza su marca de tiempo.
  • unset [variable]: Elimina una variable de entorno.
  • usermod: Modifica información de un usuario.
  • visudo: Edita el archivo de sudoers de forma segura.
  • wc: Cuenta líneas, palabras y bytes en un archivo.
  • whereis: Localiza la ruta de un comando, su fuente y páginas de manual.
  • who: Muestra los usuarios conectados.
  • whoami: Indica el usuario actual.
  • wsl --install: Instala WSL (Windows Subsystem for Linux) en Windows.
  • wsl --set-version Ubuntu 2: Establece la versión de WSL para Ubuntu a la versión 2.
  • wsl -l -v: Lista las distribuciones de WSL instaladas con su estado.

Entradas relacionadas: