Introduccion a Comandos Basicos de Linux

Principiante | 60 min de lectura | 2025.12.02

Lo que Aprenderas en este Tutorial

  • Navegacion y verificacion de directorios
  • Operacion de archivos y directorios
  • Visualizacion de contenido de archivos
  • Busqueda basica de archivos

Historia de Linux y UNIX

Por que Aprender Linux

Linux funciona en aproximadamente el 96% de los servidores del mundo, y se usa en todas partes, desde smartphones (Android) hasta supercomputadoras y dispositivos IoT. Para los ingenieros, la operacion de la linea de comandos de Linux es una habilidad esencial.

El Nacimiento de UNIX

Las raices de los comandos actuales de Linux se remontan a 1969. UNIX fue desarrollado por Ken Thompson y Dennis Ritchie en los Laboratorios Bell.

“UNIX es un sistema operativo creado por programadores para programadores” — Brian Kernighan

El Nacimiento de Linux

En 1991, el estudiante universitario finlandes Linus Torvalds desarrollo un kernel de sistema operativo gratuito compatible con UNIX. Su famosa publicacion:

“Hola a todos los que usan minix. Estoy haciendo un sistema operativo (gratuito) para maquinas AT compatibles 386(486)” — Linus Torvalds, 1991

Filosofia UNIX

La filosofia de diseno de UNIX ha tenido una gran influencia en el desarrollo de software moderno:

  1. Combinar pequenos programas: Crear programas que hagan una cosa bien y combinarlos
  2. Flujos de texto: Usar texto para la comunicacion entre programas
  3. Prototipado temprano: Primero crear algo que funcione, luego mejorar

“Esta es la filosofia de UNIX. Escribe programas que hagan una cosa bien” — Doug McIlroy

Terminal y Shell

Que es un Terminal

Un terminal (emulador de terminal) es una aplicacion que proporciona una interfaz de linea de comandos.

  • macOS: Terminal.app, iTerm2
  • Windows: Windows Terminal, PowerShell
  • Linux: GNOME Terminal, Konsole

Que es un Shell

Un shell es un programa que interpreta los comandos del usuario y los comunica al sistema operativo.

ShellDescripcion
bashEl mas comun. Por defecto en Linux/macOS (antiguo macOS)
zshPor defecto desde macOS Catalina. Compatible con bash
fishRico en funciones amigables para el usuario
shShell estandar POSIX. Alta portabilidad
# Verificar el shell que estas usando
echo $SHELL

Operaciones Basicas de Directorios

pwd - Verificar tu Ubicacion Actual

pwd (Print Working Directory) te permite verificar el directorio donde te encuentras.

$ pwd
/home/username

Dato Curioso: En UNIX, los directorios tambien se tratan como “archivos”. Un directorio es “un archivo especial que contiene enlaces a otros archivos”.

ls - Listar Archivos

ls muestra una lista de archivos en el directorio.

# Lista basica
$ ls

# Mostrar detalles (permisos, tamano, etc.)
$ ls -l

# Mostrar archivos ocultos tambien
$ ls -a

# Detalles + archivos ocultos
$ ls -la

# Mostrar tamanos legibles por humanos
$ ls -lh

Leer la Salida de ls -l

-rw-r--r--  1 user group  4096 Jan  1 12:00 file.txt
ParteSignificado
-Tipo de archivo (-:normal, d:directorio, l:enlace)
rw-r--r--Permisos (owner/group/others)
1Numero de enlaces duros
userPropietario
groupGrupo propietario
4096Tamano del archivo
Jan 1 12:00Fecha de modificacion

Documentacion Oficial: GNU Coreutils - ls

cd - Navegar Directorios

# Mover a un directorio especifico
$ cd /var/log

# Volver al directorio home
$ cd ~
$ cd

# Mover al directorio padre
$ cd ..

# Volver al directorio anterior
$ cd -

Tipos de Rutas

TipoDescripcionEjemplo
Ruta absolutaRuta completa desde la raiz (/)/home/user/docs
Ruta relativaRuta relativa desde la ubicacion actual./docs o ../other

Notaciones especiales de directorio:

  • . - Directorio actual
  • .. - Directorio padre
  • ~ - Directorio home
  • / - Directorio raiz

Crear y Eliminar Archivos y Directorios

mkdir - Crear Directorio

# Crear directorio
$ mkdir myproject

# Crear jerarquia profunda de una vez (-p: parents)
$ mkdir -p myproject/src/components

# Establecer permisos al crear
$ mkdir -m 755 secure_dir

Mejor Practica: Siempre usa la opcion -p al crear multiples niveles. No da error aunque el directorio ya exista.

touch - Crear Archivo

touch es originalmente un comando para “actualizar la marca de tiempo de un archivo”, pero crea un archivo vacio si no existe.

# Crear archivo vacio
$ touch index.html

# Crear multiples archivos a la vez
$ touch style.css script.js

# Establecer marca de tiempo a fecha/hora especifica
$ touch -t 202501011200 file.txt

Documentacion Oficial: GNU Coreutils - touch

rm - Eliminar Archivos y Directorios

# Eliminar archivo
$ rm file.txt

# Eliminar directorio (incluyendo contenido)
$ rm -r mydir

# Eliminar sin confirmacion (precaucion!)
$ rm -rf mydir

# Mostrar confirmacion antes de eliminar
$ rm -i file.txt

Advertencia: rm -rf elimina inmediatamente sin confirmacion. No va a la papelera. Ten especial cuidado al usarlo cerca de / o con expansion de variables (rm -rf $DIR/).

Mejores Practicas para Eliminacion Segura

# 1. Primero verificar con ls
ls /path/to/delete

# 2. Eliminar con confirmacion usando opcion -i
rm -ri /path/to/delete

# 3. Configurar alias (agregar a ~/.bashrc)
alias rm='rm -i'

Copiar y Mover Archivos

cp - Copiar

# Copiar archivo
$ cp original.txt copy.txt

# Copiar directorio (-r: recursive)
$ cp -r mydir mydir_backup

# Copiar multiples archivos a directorio
$ cp file1.txt file2.txt destination/

# Preservar marca de tiempo y permisos
$ cp -p original.txt copy.txt

# Confirmacion de sobrescritura
$ cp -i source.txt dest.txt

Documentacion Oficial: GNU Coreutils - cp

mv - Mover y Renombrar

mv se usa tanto para mover como para renombrar archivos.

# Mover archivo
$ mv file.txt /path/to/destination/

# Renombrar archivo
$ mv oldname.txt newname.txt

# Mover directorio
$ mv mydir /path/to/destination/

# Confirmacion de sobrescritura
$ mv -i source.txt dest.txt

Ver Contenido de Archivos

ComandoDescripcionEjemplo de Uso
catMostrar archivo completocat file.txt
headMostrar primeras N lineas (por defecto 10)head -n 20 file.txt
tailMostrar ultimas N lineastail -f log.txt
lessMostrar con paginador (con scroll)less file.txt
morePaginador antiguomore file.txt

Aplicaciones de cat

# Mostrar numeros de linea
$ cat -n file.txt

# Concatenar multiples archivos
$ cat file1.txt file2.txt > combined.txt

# Comprimir lineas vacias
$ cat -s file.txt

Operaciones de less

less te permite explorar archivos interactivamente:

  • Space / f - Avanzar una pagina
  • b - Retroceder una pagina
  • /pattern - Buscar hacia adelante
  • ?pattern - Buscar hacia atras
  • n - Siguiente resultado de busqueda
  • N - Resultado de busqueda anterior
  • g - Ir al inicio del archivo
  • G - Ir al final del archivo
  • q - Salir

Dato Curioso: El nombre less viene de “less is more” (menos es mas). Es una version mejorada del comando more.

Monitorear Logs con tail -f

# Monitorear log en tiempo real
$ tail -f /var/log/syslog

# Monitorear multiples archivos simultaneamente
$ tail -f file1.log file2.log

# Iniciar monitoreando desde las ultimas 100 lineas
$ tail -n 100 -f app.log

Fundamentos de Permisos (Privilegios)

Leer Permisos

-rwxr-xr--
ParteSignificado
-Tipo de archivo
rwxowner (propietario): todos permitidos
r-xgroup (grupo): lectura+ejecucion
r--others (otros): solo lectura
SimboloValorSignificado
r4lectura (read)
w2escritura (write)
x1ejecucion (execute)
-0sin permiso

chmod - Cambiar Permisos

# Especificar con numeros (755 = rwxr-xr-x)
$ chmod 755 script.sh

# Especificar con simbolos
$ chmod u+x script.sh    # Agregar permiso de ejecucion al propietario
$ chmod g-w file.txt     # Quitar permiso de escritura al grupo
$ chmod o=r file.txt     # Establecer solo lectura para otros
$ chmod a+r file.txt     # Agregar lectura para todos

Documentacion Oficial: GNU Coreutils - chmod

Permisos Comunes

PermisoUso
755Scripts ejecutables
644Archivos normales
600Archivos confidenciales (claves SSH, etc.)
700Directorios privados

Practica: Crear Estructura de Proyecto

Creemos una estructura basica de proyecto web usando los comandos aprendidos.

# Crear directorio del proyecto
mkdir -p mywebsite/{css,js,images}

# Crear archivos basicos
touch mywebsite/index.html
touch mywebsite/css/style.css
touch mywebsite/js/main.js

# Verificar estructura
ls -R mywebsite

# Si tienes el comando tree, muestra mejor
tree mywebsite

Configuracion de Proyecto Practico

# Ejemplo de creacion de proyecto Node.js
mkdir -p my-app/{src/{components,utils,styles},tests,docs}
touch my-app/{package.json,README.md,.gitignore}
touch my-app/src/index.js

# Verificar estructura
tree my-app
# my-app
# ├── README.md
# ├── docs
# ├── package.json
# ├── src
# │   ├── components
# │   ├── index.js
# │   ├── styles
# │   └── utils
# └── tests

Errores Comunes y Solucion de Problemas

Nombres de Archivos con Espacios

# Error: el nombre se divide por el espacio
$ rm my file.txt  # Intenta eliminar "my" y "file.txt"

# Correcto: encerrar en comillas
$ rm "my file.txt"
$ rm 'my file.txt'

# O, escapar con barra invertida
$ rm my\ file.txt

Errores de Permisos

# En caso de error Permission denied
$ sudo command  # Ejecutar con privilegios de administrador

# Verificar permisos del archivo
$ ls -l file.txt

# Si falta permiso de ejecucion
$ chmod +x script.sh

Archivo No Encontrado

# Buscar archivo
$ find /path -name "filename"

# Buscar por coincidencia parcial
$ find . -name "*.txt"

# Comando locate (usa base de datos, mas rapido)
$ locate filename

Atajos y Consejos Utiles

Atajos del Terminal

AtajoDescripcion
TabAutocompletar comandos o rutas
Ctrl + CInterrumpir comando en ejecucion
Ctrl + LLimpiar pantalla (igual que clear)
Ctrl + AIr al inicio de la linea
Ctrl + EIr al final de la linea
Ctrl + UEliminar a la izquierda del cursor
Ctrl + KEliminar a la derecha del cursor
Ctrl + RBuscar en historial de comandos
Arriba / AbajoMostrar historial de comandos
!!Re-ejecutar comando anterior

Combinar Comandos

# Pipe (|): pasar salida de un comando como entrada al siguiente
$ ls -la | grep ".txt"

# Redireccion (>): guardar salida en archivo
$ ls > filelist.txt

# Append (>>): agregar al archivo
$ echo "new line" >> file.txt

# Encadenamiento de comandos
$ mkdir newdir && cd newdir  # Ejecutar siguiente solo si tiene exito
$ command1 || command2       # Ejecutar siguiente si falla
$ command1 ; command2        # Ejecutar en secuencia

Proximos Pasos

Una vez que domines los comandos basicos, aprende shell scripting para automatizar tu trabajo.

Enlaces de Referencia

Documentacion Oficial

Libros y Articulos Recomendados

Cheat Sheets y Herramientas

← Volver a la lista