Rust para Linuxeros

Vistas: 3415
Rust para Linuxeros

Llevas años escribiendo scripts en Bash. Te sacan del paso, pero cuando crecen, se vuelven una pesadilla de mantener. Has mirado Python, pero no te termina de convencer para según qué cosas — dependencias, rendimiento, ejecutables que funcionen en cualquier máquina sin instalar nada. Bienvenido a Rust.

Este tutorial no va de ownership, lifetimes ni teoría de tipos. Esto va de construir herramientas que funcionan, que son rápidas como el rayo, que se compilan en un solo binario y que puedes distribuir sin dependencias. Si eres sysadmin, self-hoster o simplemente un linuxero al que le gusta tener control sobre sus herramientas, estás en el sitio correcto.

Al terminar este tutorial, serás capaz de:

  • Escribir scripts en Rust que reemplacen a Bash cuando este se queda corto
  • Construir CLI tools profesionales con colores, argumentos y autocompletado
  • Crear servicios HTTP ligeros para tu infraestructura self-hosted
  • Automatizar tareas con la fiabilidad de un lenguaje compilado
  • Distribuir tus herramientas como un solo binario estático

Y todo ello, programando en español, en Linux, y sin rodeos.

Por qué Rust para un linuxero

Antes de instalar nada, entiende por qué merece la pena.

SituaciónBashPythonRust
Script de 10 líneas❌ (excesivo)
Script de 200 líneas con lógica compleja
CLI tool con argumentos, colores, subcomandos✅✅
Servicio HTTP que corre 24/7✅✅
Procesar 1GB de logs🟡✅✅
Ejecutable único, sin dependencias✅✅
Rendimiento máximo🟡✅✅
Seguridad de memoria garantizada

Rust no es para todo, pero donde brilla, arrasa. Y este tutorial se centra exactamente en ese punto: las tareas donde Bash se queda corto, Python va justo, y Rust encaja como un guante.

Instalación de la toolchain

La forma oficial y recomendada es con rustup. Nada de repositorios de la distribución — Rust se mueve demasiado rápido para eso.

# Descarga e instala rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

El script te preguntará:

  1. 1) Proceed with installation (default) — pulsa Enter
  2. Se instalará el toolchain estable (stable)
  3. Añadirá ~/.cargo/bin a tu PATH (modifica ~/.bashrc o ~/.zshrc)

Si prefieres no usar curl | sh, puedes descargar el script, revisarlo y ejecutarlo:

curl -O https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
less rustup-init  # revísalo si eres paranoico
chmod +x rustup-init
./rustup-init

Verificación

rustc --version
# rustc 1.85.0 (o similar)

cargo --version
# cargo 1.85.0 (o similar)

rustup show
# Muestra el toolchain activo y sus componentes

Componentes útiles

Además del compilador, instala estos componentes desde ya:

rustup component add rust-analyzer  # LSP para tu editor
rustup component add clippy         # Linter bestia
rustup component add rustfmt        # Formateador oficial

Si usas Neovim (tutorial en atareao.es), VS Code o cualquier editor con LSP, rust-analyzer te dará autocompletado, diagnósticos en tiempo real y navegación de código.

Tu primer proyecto: «crustaceo-cli»

Vamos a crear el proyecto que usaremos como base para los siguientes capítulos:

cargo new crustaceo-cli
cd crustaceo-cli

Esto crea:

  • Cargo.toml — el archivo de configuración del proyecto (como package.json en Node o pyproject.toml en Python)
  • src/main.rs — el punto de entrada

Echa un vistazo a Cargo.toml:

[package]
name = "crustaceo-cli"
version = "0.1.0"
edition = "2024"

La edition indica qué versión del lenguaje usas. Desde Rust 1.85, la edición por defecto es 2024.

Ahora src/main.rs:

fn main() {
    println!("🦀 Hola, soy el crustáceo!");
}

Compila y ejecuta:

cargo run
#   Compiling crustaceo-cli v0.1.0
#    Finished `dev` profile [unoptimized + debuginfo]
#     Running `target/debug/crustaceo-cli`
# 🦀 Hola, soy el crustáceo!

Felicidades. Acabas de compilar tu primer programa en Rust. 💪

El flujo de trabajo en Rust

ComandoQué hace
cargo new <nombre>Crea un nuevo proyecto
cargo buildCompila en modo debug (rápido)
cargo build --releaseCompila en modo release (optimizado, lento)
cargo runCompila y ejecuta
cargo checkSolo comprueba que compila (sin generar binario)
cargo testEjecuta los tests
cargo clippyEjecuta el linter
cargo fmtFormatea el código

Consejo: Usa cargo check constantemente mientras desarrollas. Es más rápido que cargo build y te da feedback instantáneo de si tu código compila.

El binario resultado

El ejecutable compilado está en target/debug/crustaceo-cli (o target/release/crustaceo-cli si usas --release).

Puedes copiarlo a cualquier máquina Linux sin necesidad de instalar Rust:

# Desde tu máquina de desarrollo
cp target/release/crustaceo-cli ~/bin/

# En cualquier otra máquina Linux (misma arquitectura)
scp target/release/crustaceo-cli usuario@server:~/bin/
./crustaceo-cli
# 🦀 Hola, soy el crustáceo!

Esto ya es más de lo que puedes hacer con un script de Python o Node. Un solo binario, cero dependencias.

Verificación

# 1. Rust instalado correctamente
rustc --version  # → rustc 1.85.X
cargo --version  # → cargo 1.85.X

# 2. Proyecto creado y compila
cd ~/crustaceo-cli && cargo build
./target/debug/crustaceo-cli  # → 🦀 Hola, soy el crustáceo!

# 3. Release build funciona
cargo build --release
./target/release/crustaceo-cli  # → 🦀 Hola, soy el crustáceo!

Conclusión

Escribir scripts en Bash siempre será útil para automatizar tareas sencillas del día a día, pero cuando tus necesidades escalan, tus herramientas también deben hacerlo. Rust no viene a sustituir por completo tu flujo de trabajo en la terminal, sino a convertirse en ese aliado estratégico para cuando necesitas la máxima velocidad, estabilidad a prueba de bombas y una distribución sin dolores de cabeza.

Ya tienes la toolchain configurada y funcionando en tu máquina Linux, y has comprobado lo sencillo que es compilar y dar vida a un proyecto desde cero. La base está lista.

En el capítulo 01, dejaremos atrás los mensajes de bienvenida y nos meteremos de lleno en harina: vamos a construir un script real que procese argumentos de la línea de comandos, interactúe con la entrada y salida estándar, y gestione errores de forma profesional. Prepárate, porque es aquí donde vas a empezar a ver el verdadero potencial de Rust en tu ecosistema.


Más información,

Contenido del tutorial

2 capítulos
  1. 1
    Tu primer script en Rust para Linuxeros

    Aprende a crear tu primer script en Rust para Linux: gestiona argumentos, stdin, errores y colorea la salida con el proyecto crustaceo-stats

  2. 2
    Procesar archivos de texto, tu awk/sed en Rust

    Aprende a procesar archivos línea a línea y parsear texto con regex en Rust. Crea tu propio awk/sed ultra rápido y eficiente en memoria.

7 comentarios en “Rust para Linuxeros”

  1. Hola Lorenzo.

    Buen tutorial y bien enfocado para quien viene de script Bash/python.

    Dos reflexiones constructivas:

    Primera: el argumento «binario estático sin dependencias» es real, pero no exclusivo de Rust. FPC, C y Zig llevan décadas haciendo lo mismo con binarios más pequeños y cero crates externos. El diferencial genuino de Rust es el borrow checker y memory safety en compile-time — eso sí merece protagonismo en la intro.

    Segunda: cuando llegues a CLI tools con colores/argumentos y al servidor HTTP, entrarán clap, colored y tokio — unos 80-120 crates transitivos en total. La promesa de «sin dependencias» empieza a tener asteriscos. Se puede mitigar con opt-level=»z» + lto + strip + UPX y bajar bastante el binario final, pero el surface de supply chain no desaparece.

    Nada de esto resta valor a la serie. Al contrario : una nota honesta sobre cuándo Rust es la mejor elección y cuándo C, Zig o FPC son más pragmáticos daría mucho rigor al contenido.

    Gracias por el trabajo,

    1. Mi objetivo es hacer una comparación de los lenguajes que habitualmente se utilizan para hacer scripts como Bash y Python con Rust. Cierto, es como dices que podría haber seguido con otros lenguajes, convendrás conmigo que Bash y Python son probablemente lo que mas se utilice para hacer scripts.
      Respecto de las dependencias, evidentemente me refiero al binario compilado, en ningún caso a los crates, porque en este caso entraríamos en la mismas circunstancias que nos encontramos con Python, por decir algo.
      Muchas gracias por tu comentario.

  2. Gracias!! El tutorial que estaba necesitando!! Es el lenguaje que quiero aprender.

    Gracias a ti utilizo ahora niri en arch con fish…y quiero personalizarlo a tope con Rust…así que este tutorial lo espero con mucha impaciencia.

Deja una respuesta