Comandos Linux más Usados (Básicos y Avanzados)

Por Felipe

Publicado en:

Tal vez hayas oído de Ubuntu, Fedora, Debian, o incluso te encuentres en la terminal de un servidor remoto. En todas esas situaciones, dominar los comandos esenciales de Linux te abrirá la puerta a acciones sumamente útiles. Luego, al sentirte más confiado, podrás adentrarte en funciones más avanzadas que te harán ver como un verdadero experto en el manejo de tu sisitema.

Hoy veremos la forma de navegar por tu directorio, consultar archivos y carpetas, crear documentos o instalarlos, y muchas otras cositas que constituyen el básico de Linux. Luego, caminaremos hacia comandos avanzados que involucran ejecución de procesos, redirecciones de entrada y salida, permisos, y exploraremos también algunas utilidades que pueden ahorrarte muchísimo tiempo en tareas que exigen precisión y velocidad.

 

La Terminal en Linux


 

Generalmente se lo asocia con tareas para personas que les gusta programar, pero en realidad es un componente indispensable de la mayoría de las distribuciones. Con tan solo un par de caracteres, puedes realizar cosas que en interfaces gráficas llevarían varios clics y menús. Por eso, en entornos profesionales, la terminal linux se convierte en un recurso fundamental.

Por si fuera poco, si algún día piensas crecer y convertirte en un auténtico experto, necesitarás un dominio sólido de los comandos Linux. Las interfaces gráficas son muy cómodas, pero la terminal te da la posibilidad de automatizar con scripts o de controlar tareas múltiples. Y ese es una habilidad que no querrás dejar pasar.

 

Navegación y Administración de Archivos

Comencemos con  la navegación de directorios y la administración de archivos. Esto se asemeja a abrir carpetas y mover objetos en un entorno visual, pero aquí se realiza con línea de comándo. Conocerás  cd, ls, cp y otros códigos que te servirán en el día a día.

 

Moverte por Directorios y Ver Contenido

La base de la navegación por la terminal radica en cd. Con este comando, puedes saltar de un directorio a otro. Por ejemplo, si te encuentras en tu carpeta personal y quieres ir a Documentos, teclearías:

cd Documentos

Y con eso ya estarás adentro. Si deseas retroceder un directorio, lo harías de la siguiente manera:

cd ..

El doble punto (..) hace referencia al directorio padre, es decir, aquel un nivel más arriba. Para saber en qué lugar del sisitema te encuentras, puedes usar:

pwd

Ese comando te mostrará la ruta completa en la cual estás ubicado. De esa forma, nunca te perderás en las carpetas.

Para ver el contenido de un directorio, usa el comando ls. Puedes escribir simplemente:

ls

Y obtendrás una lista de archivos y subdirectorios. Existe la posibilidad de agregarle -l para ver más detalles, como permisos y fechas de modificación:

ls -l

Si prefieres una vista de archivos ocultos, agrégale -a:

ls -a

Con estas combinaciones, tendrás toda la información que necesitas sobre los archivos alojados en tu carpeta.

 

Creación y Borrado de Directorios


 

En Linux, los directorios se crean con mkdir. De modo que, si necesitas una carpeta llamada “proyectos,” basta con:

mkdir proyectos

Si más adelante notas que creaste una carpeta adicional por error, o simplemente deseas organizar tu sistema, el comando para borrar una carpeta es rmdir, siempre y cuando esta carpeta esté vacía:

rmdir proyectos

Ahora, si pretendes eliminar un directorio que ya tiene archivos en su interior, tocará usar rm con la opción -r, que indica una eliminación recursiva:

rm -r proyectos

Ten muchísimo cuidado con ese comando porque eliminará todo su contenido sin mandarlo a la papelera. Cuando tecleas rm -r, básicamente no hay marcha atrás.

 

Copiado y Movido de Archivos

Para copiar archivos, se emplea cp. Por ejemplo, si tienes un archivo llamado “informe.txt” en tu directorio actual y quieres duplicarlo en otra ubicación, harías algo como:

cp informe.txt /ruta/del/destino

De esta manera, mantienes el original donde está y generas una copia adicional. Si quieres trasladar archivos en lugar de copiarlos, usa el comando mv.

mv informe.txt /ruta/del/destino

Si no especificas un destino, por ejemplo:

mv informe.txt informe_viejo.txt

Renombrarás el archivo al nuevo nombre que indiqués. Es una forma práctica de evitar el uso de combinaciones innecesarias.

 

Visualización de Archivos

En la terminal, puedes ver el contenido de archivos de texto con cat. Por ejemplo:

cat informe.txt

Te mostrará directamente el texto en la terminal. Si deseas explorar un archivo muy extenso y no quieres que te aparezca todo de una, podrías usar less, que te deja navegar con las flechas y cerrar con la tecla “q”:

 
 
less informe.txt

Permisos y Propietarios

Otro tema fundamental en Linux es la gestión de permisos y la asignación de propietarios, ya que define quién puede leer, escribir o ejecutar determinados archivos o directorios. Este aspecto puede parecer enredado al comienzo, pero con algo de práctica se te hará sencillo.

 

Comprender la Estructura de Permisos

Los archivos en Linux cuentan con permisos básicos para el propietario, el grupo y los demás usuarios. Estas categorías se representan normalmente con letras como r (lectura), w (escritura), y x (ejecución). Por ejemplo, si ves algo como rwxr-xr--, significa que el propietario puede leer, escribir y ejecutar, el grupo solo puede leer y ejecutar, y todos los demás solo pueden leer.

Para verificar los permisos de un archivo, puedes usar:

ls -l archivo

Cambiar Permisos con chmod

Cuando quieras modificar los permisos, chmod te permite hacerlo. Una forma clásica es la que usa números, como 755, 644, etc. Por ejemplo:

chmod 755 script.sh

Esto dará permiso de lectura, escritura y ejecución al propietario, y permiso de lectura y ejecución al grupo y a los demás. Para personalizarlo, podrías emplear algo como:

chmod u+x archivo

Con ello, le agregas permiso de ejecución al propietario (u = user).


 

 

Cambiar Propietario y Grupo

Hay ocasiones en que necesitas transferir la propiedad de un archivo a otro usuario. Para ello, existe chown. Por ejemplo, para asignar el archivo “documento.txt” al usuario “pedro,” teclearías:

sudo chown pedro documento.txt

sudo se utiliza porque solo un usuario con privilegios elevados puede cambiar propietarios. De igual modo, si precisas cambiar tanto el propietario como el grupo, lo haces así:

sudo chown pedro:ventas reporte.pdf

Estas herramientas se vuelven esenciales cuando gestionas un servidor o cuando compartes recursos con más personas.

 

Explorando Comandos de Búsqueda y Gestión de Procesos

En la terminal de Linux, a veces necesitas encontrar un archivo que no recuerdas en qué carpeta dejaste, o identificar qué proceso está consumiendo más recursos de tu CPU. Para esas tareas, existen find, grep, ps, top y kill. Dominarlos será un paso firme hacia tu desarrollo como usuario experimentado.

 

Buscar Archivos con find

El comando find te deja localizar archivos en tu disco o en un directorio específico. Un ejemplo sencillo sería:

find /home -name informe.txt

En ese caso, estarías buscando en la carpeta /home un archivo llamado “informe.txt.” Con -iname es posible realizar una búsqueda sin distinguir mayúsculas o minúsculas:

find /home -iname "informe.txt"

Y si necesitas filtrar por otros criterios, como fecha de modificación o tamaño, find te ofrece opciones como -mtime, -size y más.

 

Filtrado de Texto con grep

A veces tienes que buscar una palabra o frase en un archivo. Para eso se usa grep. Por ejemplo, para localizar la palabra “error” dentro de un archivo “log.txt,” puedes hacerlo con:

grep "error" log.txt

Si deseas que se ignoren las mayúsculas y minúsculas, agrégale -i:

grep -i "error" log.txt

Con -r, puedes buscar recursivamente en todos los archivos dentro de una carpeta. De esa manera, no tendrás que revisar manualmente lineaa a linea cada documento.

 

Observando Procesos con ps y top

Para obtener información sobre los procesos que corren en tu sisitema, ps es el comando básico:

 
ps aux

Te mostrará una lista de procesos con detalles como usuario, PID (identificador de proceso), uso de CPU y memoria, etc. Pero si prefieres una vista actualizada en tiempo real, top es la herramienta que necesitas. Al escribir:

top

Vas a ver, actualizándose al segundo, qué procesos están acaparando tu CPU, cuánta memoria se está usando, y otras estadísticas importantes. Para salir de top, presiona “q.”

 

Finalizar Procesos con kill

Cuando un proceso se queda congelado o te genera problemas, el comando kill permite finalizarlo. Primero, revisa el PID con ps o top. Por ejemplo, si detectas que el PID es 1234, ejecutas:

kill 1234

En la mayoría de situaciones, eso basta. Pero si necesitas forzar la terminación del proceso, puedes utilizar la señal -9:

kill -9 1234

Úsala con cuidado, porque mata el proceso de inmediato, sin darle tiempo de cerrar adecuadamente.

 

Privilegios de Superusuario y sudo

En Linux, muchas tareas administrativas exigen permisos especiales que solo un super usario, o root, puede realizar. Sin embargo, entrar siempre como root no es recomendable por cuestiones de seguridad. Ahí es donde entra el comando sudo, que otorga privilegios temporales al usuario actual para ejecutar acciones específicas.

Si deseas instalar un programa, por ejemplo, utilizarías algo como:

sudo apt-get install nombre-de-paquete

En distribuciones basadas en Debian, apt-get es un método muy popular para instalar software. Si estás en otras distros, como Fedora, se usa dnf. El punto es que sudo te pedirá la contraseña para asegurarse de que efectivamente tengas permiso de realizar la acción. Una vez autentificado, se ejecuta la orden con privilegios elevados.

 

Redirecciones y Pipes


 

Uno de los aspectos más llamativos de la terminal en Linux es la redirección de la salida de un comando a un archivo o a otro comando. Esto te permite encadenar acciones y crear flujos de trabajo muy potentes.

 

Redirección de Salida y Entrada

Si quieres almacenar la salida de un comando en un archivo, usarás el operador >:

ls -l > contenido_directorio.txt

Todo el resultado de ls -l quedará guardado en “contenido_directorio.txt.” Para agregar sin sobrescribir, usarías >>:

ls -a >> contenido_directorio.txt

En cuanto a la entrada, el operador < se encarga de suministrar contenido a un comando desde un archivo. Este recurso no se usa tanto como la redirección de salida, pero puede serte útil en contextos concretos.

 

Encadenar Comandos con Pipes

Los pipes (|) permiten tomar la salida de un comando y usarla como entrada de otro. Esto te brinda la oportunidad de filtrar o procesar datos de manera muy flexible. Por ejemplo:

ls -l | grep "txt"

Te mostrará solo las líneas de la salida de ls -l que contengan la palabra “txt.” Y si quisieras contar cuántas líneas resultan, podrías:

ls -l | grep "txt" | wc -l

De esa forma vas concatenando procesos hasta conseguir el resultado que deseas. Esta característica es una de las más destacadas del entorno de la terminal en Linux, pues te permite crear soluciones muy creativas con sencillos comandos enlazados.

 

Edición de Archivos en la Terminal: nano, vim y Otros

No siempre tendrás acceso a un editor gráfico. Y aunque lo tuvieras, es útil saber editar archivos de configuración directamente en la terminal. Para ello, existen editores como nano y vim.

 

nano: El Editor Amigable

nano es un editor simple, fácil de manejar. Al escribir:

nano archivo.txt

Podrás editar el texto, moverte con las flechas, y ver en la parte inferior algunos atajos básicos. Para guardar cambios, Ctrl + O, y para salir, Ctrl + X. Es ideal para principiantes o para aquellos que no quieran lidiar con la curva de aprendizaje de vim.

 

vim: Potencia y Velocidad

vim es un editor veterano, muy usado en la línea de comándo, con una filosofía basada en modos de inserción, comandos y navegación. Para abrir un archivo con vim:

 
vim archivo.txt

Al principio, puede intimidar con sus diferentes modos (normal, inserción, visual), pero, una vez aprendes, te permite moverte con rapidez, editar y manipular texto con gran eficiencia. Sin embargo, si estás empezando, no te sientas mal en optar por nano mientras te familiarizas con la terminal.

 

Gestión de Paquetes: Instalando y Actualizando Software

Para mantener tu sisitema al día, necesitarás instalar software y aplicar actualizaciones. Dependiendo de la distribución, el método varía, pero siempre gira en torno a un gestor de paquetes. En distribuciones basadas en Debian, encontrarás apt-get o apt. En Red Hat y Fedora, verás yum o dnf. En Arch Linux, pacman. Pero las nociones centrales son similares.

 

Instalación de Paquetes

En Debian/Ubuntu, para instalar un paquete, se usa:

sudo apt-get install paquete

Si tu distribución es un poco más moderna, puedes usar:

 
sudo apt install paquete

Con eso, el gestor localiza el paquete en los repositorios y lo descarga e instala, resolviendo dependencias automáticamente.

 

Actualización del Sistema

Para actualizar, primero sincronizas la lista de paquetes:

sudo apt-get update

Luego actualizas todo:

sudo apt-get upgrade

También puedes combinar estos pasos, pero hacerlo en dos partes permite asegurarte de que todo vaya bien y de que tengas un control más fino sobre lo que se está instalando o actualizando.

 

Redes y Conexiones Remotas

Si gestionas un servidor o quieres acceder a equipos en la misma red, conocer algunos comandos de redes te será indispensable. Con ping, ssh, scp y otros, puedes verificar conexiones, acceder a máquinas remotas y transferir archivos con sencillez.

 

Verificando la Conectividad con ping

ping te ayuda a comprobar si un host está accesible. Por ejemplo:

 
ping google.com

Envía paquetes ICMP a la dirección especificada y te indica cuánto tardan en regresar. Para detenerlo, presiona Ctrl + C. De ese modo, sabes si hay buena conexión y cuál es la latencia.

 

Acceso Remoto con ssh

El protocolo SSH (Secure Shell) es fundamental para acceder a otros equipos de manera cifrada. Para conectarte a un servidor remoto:

ssh usuario@direccion_ip

Te pedirá la contraseña de “usuario,” y tras autenticarte, podrás manejar el servidor remoto como si estuvieras sentado frente a él. Suele ser la forma preferida de administrar servidores en la nube, ya que evita la necesidad de interfaces gráficas.

 

Transferencia de Archivos con scp

scp (secure copy) es parte de la suite de SSH y te permite transferir archivos entre tu máquina local y un servidor remoto. Por ejemplo, para enviar un archivo local “informe.txt” a tu carpeta personal en un servidor:

scp informe.txt usuario@direccion_ip:~

De igual modo, puedes traer archivos del servidor a tu equipo local:

scp usuario@direccion_ip:~/informe_remoto.txt .

Respaldos y Compresión

Realizar copias de seguridad es una parte crucial en cualquier sisitema. En la terminal de Linux, tienes herramientas para comprimir y empaquetar archivos que facilitan tu vida. Además, eso reduce el tamaño de tus respaldos y te permite gestionar los archivos de manera más sencilla.

 

tar: Empaquetador Clásico

tar es un empaquetador que combina archivos y carpetas en un único archivo tarball, el cual luego puede comprimirse con gzip. Por ejemplo, para empaquetar y comprimir una carpeta “mis_fotos” en un archivo “fotos.tar.gz,” ejecuta:

 
tar -czvf fotos.tar.gz mis_fotos

Las letras significan: -c crea un archivo, -z usa gzip para comprimir, -v muestra el progreso, y -f indica el nombre del archivo resultante. Para extraerlo:

 
tar -xzvf fotos.tar.gz

Así descomprimes y obtienes la carpeta original.

 

rsync: Copia Eficiente

rsync es un comando muy poderoso para realizar copias de seguridad y sincronizaciones entre carpetas. Por ejemplo, para copiar la carpeta “proyectos” a otra ubicación:

rsync -av proyectos /ruta/destino

La opción -a preserva permisos y enlaces simbólicos, mientras que -v muestra la actividad en pantalla. Si vuelves a ejecutar el mismo comando, solo actualizará los cambios, sin volver a copiar todo desde cero. Es genial para mantener respaldos incrementales.

 

Trabajando con Scripts y Automatización

Una ventaja enorme de Linux es la posibilidad de automatizar tareas con scripts, usualmente escritos en bash o algún otro shell. Al crear un archivo con extensión .sh, por ejemplo “respaldo.sh,” y darle permisos de ejecución, puedes agrupar varios comandos que se ejecuten en secuencia o según tus indicaciones.

Dentro del script, podrías tener algo como:

#!/bin/bash

# Script sencillo de respaldo
tar -czvf respaldo_$(date +%Y%m%d).tar.gz /ruta/importante

Con chmod +x respaldo.sh, lo conviertes en un ejecutable. Luego, cada vez que quieras generar un nuevo respaldo, tecleas:

./respaldo.sh

Así, en pocos pasos, has creado tu propia herramienta. Con un conocimiento más profundo de bash, podrás añadir condicionales, bucles, variables y todo lo que necesites para automatizar verdaderas maravillas.

 

Sed y awk

Para quienes van más allá de lo básico, los comandos sed y awk son muy apreciados al momento de editar o procesar textos en bulk.

 

sed: Editor de Texto en Línea

sed te permite buscar y reemplazar texto dentro de un flujo sin necesidad de abrir un editor. Por ejemplo, si quieres reemplazar la palabra “hola” por “buenas” en un archivo “saludos.txt”:

sed 's/hola/buenas/g' saludos.txt

La “g” al final indica que la sustitución se aplique a todas las apariciones de la palabra en cada línea. Puedes redirigir la salida a un nuevo archivo, o utilizar la opción -i para modificarlo directamente (pero asegúrate de hacer copia de seguridad si es algo sensible).

 

awk: Procesamiento de Datos

awk resulta muy útil para examinar archivos de texto con datos organizados por columnas. Imagina que tienes un archivo CSV con nombres y edades. Podrías extraer la segunda columna (edades) así:

awk -F, '{ print $2 }' datos.csv

La opción -F, indica que el separador de campos es una coma. Este comando imprimirá todas las edades, lo que facilita la extracción de datos sin necesidad de abrir una hoja de cálculo.

 

Programación de Tareas con cron

Si te gustaría que un script o un conjunto de comandos se ejecute automáticamente a una hora específica, cron es tu amigo. cron es el planificador de tareas en Linux y permite acciones periódicas sin tu intervención.

Para editar la tabla de cron, usas:

 
crontab -e

Ahí agregas una línea con la especificación de la fecha y hora, seguida del comando a ejecutar. Por ejemplo, para que un script se ejecute todos los días a las 3 de la mañana:

0 3 * * * /ruta/al/script.sh

Los cinco campos representan minuto, hora, día del mes, mes y día de la semana, respectivamente. Con cron, puedes programar respaldos, limpiezas, envíos de correos y más.

 

Monitoreo de Recursos y Herramientas Extra

Conforme avanzas en tu periplo por la terminal, quizás quieras ahondar en el monitoreo de recursos. Más allá de top, existen otras utilidades como htop (muy parecida a top pero con interfaz más atractiva) y iotop (centrada en el uso de disco). Estas herramientas te proporcionan datos relevantes en tiempo real. Incluso, algunos scripts personalizados basados en bash pueden presentarte informes sobre el estado de tu CPU, memoria, disco y red, para que sepas si un servicio está saturando la máquina o si requieres optimizar algo.

De la misma manera, si te interesan aspectos como la temperatura de tu CPU o la carga que soportan tus discos, la terminal te ofrece comandos como sensors (necesitas instalar el paquete correspondiente) o df -h para ver el espacio libre en tus sistemas de archivos. Con cada herramienta que sumas a tu arsenal, te sientes menos intimidado por la terminal y más fascinado con las posibilidades que te brinda.

 

Contenedores y Virtualización en la Terminal

En la actualidad, muchos profesionales utilizan contenedores y entornos de virtualización para gestionar aplicaciones y servicios. Aunque estas prácticas son un poco más avanzadas, no podemos obviar que, en su mayoría, se administran desde la terminal. Si en algún momento decides dar el salto hacia el uso de contenedores con Docker o a la orquestación con Kubernetes, verás que un conocimiento sólido de los comandos Linux te facilitará enormemente el camino.

Además, para la virtualización clásica, existen hipervisores como KVM, VirtualBox o VMware, pero la interacción con ellos se puede combinar con scripts de la terminal que permitan automatizar la creación o eliminación de máquinas virtuales, copias instantáneas y otras funciones avanzadas.

 

Configuración del Entorno de Shell

El aspecto y funcionalidad de tu terminal pueden personalizarse de muchas formas. Por ejemplo, si empleas Bash, tienes un archivo .bashrc en tu carpeta de usuario. Si usas Zsh, tendrás un .zshrc. Estos archivos contienen variables de entorno, alias y configuraciones que hacen tu vida más sencilla.

Alias para Comandos Frecuentes

Si te aburre escribir siempre lo mismo, como ls -l --color=auto, puedes crear un alias en tu archivo de configuración. Basta con editar el archivo y agregar una línea como:

alias ll="ls -l --color=auto"

Guarda y cierra. La próxima vez que abras la terminal, con solo teclear ll, obtendrás el mismo resultado.

 

Variables de Entorno

En .bashrc o .zshrc, también puedes definir variables de entorno, como PATH, que indica dónde buscar los comandos. Agregar rutas extra te permite ejecutar programas locales sin escribir la ruta completa. Y si tienes proyectos en lenguajes como Python o Node.js, quizá desees configurar variables específicas para que tu sistema sepa dónde localizar dependencias.

 

Trucos Prácticos y Consejos para la Terminal

Aunque ya has visto un enorme conjunto de comandos, siempre es bueno conocer algunos “trucos” que pueden ahorrarte tiempo y dolores de cabeza.

Para reutilizar un comando largo que acabas de tipear, presiona la flecha hacia arriba para navegar por tu historial. Además, con Ctrl + R, puedes buscar en tu historial de comandos. Empieza a escribir algo que recuerdes del comando y verás cómo aparece. Una vez que lo encuentres, pulsa Enter para lanzarlo.

Por otra parte, si necesitas detener la ejecución de un comando que está tardando demasiado, Ctrl + C es tu vía de escape rápida. Y si un comando se está ejecutando, pero en segundo plano, puedes traerlo al primer plano con fg.

 

Seguridad en la Terminal

Evita ejecutar sudo a menos que sea necesario. Si vas a manipular archivos delicados o modificar configuraciones sistémicas, asegúrate de hacer respaldos. Recuerda que Linux asume que sabes lo que haces, y no siempre hay un aviso de confirmación.

También es buena práctica cambiar tus contraseñas con regularidad y tener un firewall activo si manejas un servidor público. Podrías usar herramientas como ufw (para Ubuntu) y mantener tu sisitema siempre actualizado, porque los parches de seguridad a menudo corrigen vulnerabilidades críticas.

 

Alcanza la Excelencia con la Práctica

La mejor forma de aprender realmente los comandos Linux es practicando. No te quedes únicamente con la teoría. Crea archivos, muévelos, cámbiales los permisos, edita scripts, experimenta con sed y awk, filtra resultados con grep y redirige salidas con >.

 

Explorando más Comandos

Linux incluye otra multitud de utilidades que, combinadas con lo aprendido, dan lugar a auténticas maravillas en la línea de comándo. Hay herramientas para reproducir audio, manipular imágenes, convertir formatos de vídeo, y hasta para gestionar base de datos.

Asimismo, en tu camino, descubrirás que cada distribución cuenta con peculiaridades y que la comunidad de usuarios es muy activa. Si tienes dudas o experimentas problemas, puedes consultar foros o grupos de usuarios.

Por otra parte, si te orientas al desarrollo web, te darás cuenta de que utilizar la terminal es casi innegociable. Sea para instalar entornos de ejecución (Node.js, Python, PHP, etc.), sea para lanzar servidores locales, o para trabajar con repositorios de versiones como Git, todo se hace muy rápido por medio de comandos.

Si te animas a explorar la parte más avanzada, quizás te topes con shells alternativos como Fish, que ofrecen completados más intuitivos, o con frameworks que embellecen tu terminal con colores y plugins.