Saltar al contenido principal

Salida estructurada en Nushell

Metadatos de la lección

Autoría:
Ignacio Slater-Muñoz
Última actualización:
27 de marzo de 2026

Cambios recientes:

  • 8880728 · 27 de marzo de 2026 · ✨ feat(notes): add abstract slots and Python structured-output lesson ( GitLab / GitHub )
  • 0b7190d · 26 de marzo de 2026 · 📚🐛 feat(scripting): add Nushell pipelines lesson and unblock checks ( GitLab / GitHub )
  • 74c4c9f · 19 de marzo de 2026 · 📚✨ feat(bibliography): add Nushell structured-output references ( GitLab / GitHub )

Encuentra el código de la lección:

Abstract

Nushell permite producir datos estructurados desde el comienzo mediante records y listas. Al igual que PowerShell, en vez de construir texto y luego reinterpretarlo, puedes trabajar directamente con valores que conservan su forma.

El objetivo de esta lección es distinguir entre un record y una lista de records, y entender por qué ambos pueden verse como tabla sin dejar de ser datos estructurados.

Records como punto de partida

En la lección de PowerShell, el recorrido iba desde [hashtable] hacia [PSCustomObject] . En Nushell, ese paso aparece antes: un record ya representa desde el inicio un valor estructurado con campos nombrados. No es lo mismo que [PSCustomObject] , pero cumple un rol similar al preservar la forma de los datos sin reducirlos a texto.

export def new-sighting [
    --location: string,
    --sighted_at: datetime
    --troll_type: string = "unknown",
] {
    {
        location: $location
        troll_type: $troll_type
        sighted_at: $sighted_at
    }
}

Detalles clave

{ k: v } crea un record un valor compuesto por campos nombrados. Luego puedes acceder a sus propiedades como: $record.key .

Uso

Ejecutar el comando y ver su salida
use ./structured-output/sighting-module.nu *

let sighting = new-sighting --location "Jøtunheimen Mountains" --sighted_at (date now) --troll_type "Mountain Troll"

$sighting
Output
╭────────────┬───────────────────────╮
│ location   │ Jøtunheimen Mountains │
│ troll_type │ Mountain Troll        │
│ sighted_at │ 20 seconds ago        │
╰────────────┴───────────────────────╯

Aunque Nushell lo muestre con una disposición tabular, el resultado sigue siendo un único valor estructurado con campos nombrados. Esa visualización no lo convierte en tabla como tipo de dato aparte.

Listas de records y visualización tabular

Un record representa una entidad. Una lista de records representa varias entidades con la misma estructura.

Cuando la consola recibe una lista de records con la misma forma, puede mostrarla como tabla. Esa tabla es una visualización de los datos, no un tipo distinto ni una transformación de su forma subyacente.

Módulo que exporta una lista homogénea de records 2
scripts-nushell/structured-output/exploration-module.nu
export def get-explorations [] {
    [
        { world: "Desert of Time", hazard: "Temporal Distortion", explorer: "Cocona" }
        { world: "School Paradise", hazard: "Memory Loop", explorer: "Papika" }
        { world: "Candy Kingdom", hazard: "Illusion Collapse", explorer: "Yayaka" }
    ]
}
La tabla emerge de la forma del dato devuelto por el comando exportado: una lista cuyos elementos comparten las mismas columnas.

Detalles clave

[ ... ]: crea una lista que puede contener múltiples valores; aquí, múltiples records.

Uso

Importar el módulo y ver la lista exportada
use ./structured-output/exploration-module.nu *

let explorations = (get-explorations)

$explorations
Output
╭───┬─────────────────┬─────────────────────┬──────────╮
│ # │      world      │       hazard        │ explorer │
├───┼─────────────────┼─────────────────────┼──────────┤
│ 0 │ Desert of Time  │ Temporal Distortion │ Cocona   │
│ 1 │ School Paradise │ Memory Loop         │ Papika   │
│ 2 │ Candy Kingdom   │ Illusion Collapse   │ Yayaka   │
╰───┴─────────────────┴─────────────────────┴──────────╯

Conclusiones

Un record y una lista de records no son lo mismo, aunque ambos puedan mostrarse de forma tabular. Lo importante es reconocer qué valor estás produciendo.

Puntos clave

  • Un record modela una entidad con campos nombrados.
  • Una lista de records modela varias entidades con la misma estructura.
  • La tabla es una forma de mostrar los datos, no un tipo distinto.

¿Qué nos llevamos?

La lección de fondo no es solo que Nushell pueda mostrar tablas, sino que permite conservar la forma de los datos desde el origen. Cuando esa forma se entiende bien, la salida deja de ser un detalle visual y pasa a ser una base real para reutilizar, inspeccionar y componer comandos.

¿Con ganas de más?

Notas

  1. Ejemplo inspirado en Trolljegeren. Volver
  2. Ejemplo inspirado en Flip Flappers. Volver