Tutoriales

Nushell: un shell de Linux moderno para datos estructurados

Si alguna vez estuvieran atados juntos ls, awky grep Sólo para buscar un archivo o extraer un mensaje, es posible que haya notado que los comandos del shell pueden volverse confusos rápidamente. Funciona, pero también significa que estás constantemente analizando texto sin formato y esperando que el formato de salida no cambie.

Paso mucho tiempo escribiendo rápidamente awk y sed una línea sólo para sacar una columna de ella ps O filtrar archivos por tamaño. El problema es que las conchas tradicionales como Explotar Trate todo como texto. Cada comando debe leer e interpretar el resultado del anterior, lo que hace que el script sea más difícil de leer y más fácil de descifrar.

esto es lo que me gusta Nusher. En lugar de pasar texto entre comandos, maneja datos estructurados, donde los archivos, procesos y otros resultados de comandos se tratan como tablas para que pueda filtrarlos y buscarlos directamente.

La primera vez que probé un comando como este:

ls | where size > 10mb

Esto inmediatamente tuvo sentido. Devuelve exactamente el archivo que quiero sin tener que usar expresiones regulares, contar columnas o preocuparme por los nombres de los archivos que contienen espacios. El comando es fácil de leer y hace exactamente lo que dice.

En esta guía te mostraré cómo instalar Nusher En distribuciones de Linux basadas en Debian y RHEL. Luego cubriremos los comandos que más usa, incluida la navegación por resultados estructurados, la búsqueda de archivos y procesos, el uso CSV y JSON datos y escriba su primer script Nushell.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Lo que realmente hace Nushell

Conchas tradicionales como Explotar, zishy pez Trate todo como texto sin formato. Por ejemplo, cuando corres psla salida es solo texto. Si desea encontrar un proceso específico o extraer una columna, generalmente termina usando una herramienta como grep, awko cut Analiza el texto.

Nusher Funciona de manera diferente. En lugar de pasar texto sin formato entre comandos, maneja datos estructurados, donde los comandos devuelven una tabla con columnas con nombre, para que pueda filtrar y consultar los datos directamente sin preocuparse por la ubicación de las columnas o el formato del texto.

Por ejemplo, ps existir Nusher Devuelve una tabla que contiene las siguientes columnas pid, cpuy memfiltra fácilmente la información que necesitas.

Esto facilita las tareas diarias porque:

  • No es necesario escribir un comando regex o awk solo para extraer un campo.
  • Los comandos funcionan juntos de manera más confiable porque el material permanece estructurado a lo largo del proceso en lugar de volver a convertirse a texto sin formato después de cada comando.
  • Nusher Formatos como JSON, CSV, TOML y YAML se pueden leer y escribir de forma nativa, por lo que puede cargar archivos de datos y filtrarlos u ordenarlos instantáneamente sin análisis adicionales.

Atención – Recuerde Nusher No es un simple reemplazo Explotarporque los scripts Bash existentes no se pueden ejecutar en Nushell sin cambios, ya que tiene su propio lenguaje de scripting y sintaxis de comandos.

notas: Nushell está escrito en Rust y normalmente se distribuye como un único archivo binario independiente, por lo que es sencillo de instalar. La mayoría de los sistemas Linux.

Instalar Nushell en Linux

Nusher No incluido en los repositorios predeterminados de Ubuntu, Debian o RHEL. Para instalarlo, primero debe agregar el repositorio Fury.io oficial mantenido por la comunidad. Una vez agregado, puede instalar y actualizar Nushell usando el administrador de paquetes de su sistema como cualquier otro paquete.

En Ubuntu/Debian, importe la clave GPG, agregue un nuevo repositorio y actualice la lista de paquetes:

wget -qO-  | sudo gpg --dearmor -o /etc/apt/keyrings/fury-nushell.gpg
echo "deb [signed-by=/etc/apt/keyrings/fury-nushell.gpg]  /" | sudo tee /etc/apt/sources.list.d/fury-nushell.list
sudo apt update
sudo apt install nushell

En RHEL, Fedora y Rocky Linux, use el siguiente comando para crear el archivo del repositorio:

echo "[gemfury-nushell]
name=Gemfury Nushell Repo
baseurl=
enabled=1
gpgcheck=0
gpgkey=gpg.key" | sudo tee /etc/yum.repos.d/fury-nushell.repo

Después de agregar el repositorio, instalar Nushell solo requiere un comando.

sudo dnf install -y nushell

Si no desea agregar un nuevo repositorio, también puede instalar Nusher usar salir adelante por sí mismo (brew install nushell) o descargar archivos binarios prediseñados desde Página de lanzamiento de GitHub y colócalo en algún lugar de tu camino.

Iniciar Nushell

Inicie Nushell desde el shell actual ejecutando el siguiente comando:

nu

Ejemplo de salida:

     __  ,
 .--()°'.' Welcome to Nushell,
'|, . ,'   based on the nu language,
 !_-(_\    where all data is structured!

Version: 0.114.0 (x86_64-unknown-linux-gnu)
Please join our Discord community at 
Our GitHub repository is at 
Our Documentation is located at 
And the Latest Nushell News at /blog/
Learn how to remove this at: /book/configuration.html#remove-welcome-message

It's been this long since Nushell's first commit:
7yrs 1month 26days 13hrs 14mins 33secs 921ms 660µs 126ns 

Startup Time: 6ms 453µs 536ns

Ahora estás en una sesión de Nushell y, con tu shell Bash normal aún ejecutándose, puedes regresar a él en cualquier momento escribiendo:

exit

Comencemos con un comando familiar:

ls

Producción:

╭────┬────────────────────────────┬──────┬────────┬──────────┬───────────┬───────────┬─────╮
│  # │            name            │ type │ target │ readonly │   mode    │ num_links │ ... │
├────┼────────────────────────────┼──────┼────────┼──────────┼───────────┼───────────┼─────┤
│  0 │ LICENSE                    │ file │        │ false    │ rw-r--r-- │         1 │ ... │
│  1 │ README.txt                 │ file │        │ false    │ rw-r--r-- │         1 │ ... │
│  2 │ nu                         │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  3 │ nu_plugin_custom_values    │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  4 │ nu_plugin_example          │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  5 │ nu_plugin_formats          │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  6 │ nu_plugin_gstat            │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  7 │ nu_plugin_inc              │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  8 │ nu_plugin_polars           │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│  9 │ nu_plugin_query            │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
│ 10 │ nu_plugin_stress_internals │ file │        │ false    │ rwxr-xr-x │         1 │ ... │
╰────┴────────────────────────────┴──────┴────────┴──────────┴───────────┴───────────┴─────╯

A diferencia de Bash, la salida se muestra como una tabla que contiene columnas con nombre. Dado que Nushell comprende estos datos, puede filtrarlos directamente sin utilizar grep o awk.

Por ejemplo, para mostrar sólo archivos de más de 10 MB, ejecute:

ls | where size > 10mb

Producción:

╭───┬─────────────────────────┬──────┬──────────┬───────────╮
│ # │          name           │ type │   size   │ modified  │
├───┼─────────────────────────┼──────┼──────────┼───────────┤
│ 0 │ nu                      │ file │  70.2 MB │ a day ago │
│ 1 │ nu_plugin_custom_values │ file │  12.7 MB │ a day ago │
│ 2 │ nu_plugin_example       │ file │  13.3 MB │ a day ago │
│ 3 │ nu_plugin_formats       │ file │  13.3 MB │ a day ago │
│ 4 │ nu_plugin_gstat         │ file │  19.4 MB │ a day ago │
│ 5 │ nu_plugin_polars        │ file │ 121.0 MB │ a day ago │
│ 6 │ nu_plugin_query         │ file │  19.9 MB │ a day ago │
╰───┴─────────────────────────┴──────┴──────────┴───────────╯

Esto es lo que sucede en ese proceso:

  • ls Devuelve una tabla de archivos con columnas para nombre, tipo, tamaño y modificación.
  • este | El operador pasa la tabla directamente al siguiente comando sin convertirla a texto sin formato.
  • donde estan las dimensiones > 10 MB filtra filas con un tamaño de columna superior a 10 MB.

En Bash, hacer lo mismo normalmente significa analizar ls Utilice una herramienta como esta awk o grep Y maneje el tamaño del archivo manualmente. En Nushell, solo necesita filtrar por la columna de tamaño porque el shell ya comprende lo que representan los datos.

Consultar procesos en ejecución como una base de datos.

Nusher Los procesos en ejecución también se pueden manejar fácilmente. en lugar de tubería ps Con una variedad de herramientas de procesamiento de textos, puedes filtrar y ordenar tus datos directamente.

ps | where cpu > 5.0 | sort-by cpu

Ejemplo de salida:

╭───┬───────┬──────────────┬──────┬────────╮
│ # │  pid  │     name     │ cpu  │  mem   │
├───┼───────┼──────────────┼──────┼────────┤
│ 0 │ 4821  │ nginx        │  6.2 │ 45.1 MB│
│ 1 │ 1092  │ mysqld       │ 18.7 │ 512 MB │
╰───┴───────┴──────────────┴──────┴────────╯

Esto es lo que hace cada comando:

  • ps Devuelve una tabla de procesos en ejecución.
  • Dónde cpu > 5.0 Sólo se retienen los procesos que utilizan más del 5% de CPU.
  • sort-by cpu Ordene los resultados por uso de CPU.

Utilice CSV y JSON de forma nativa

Una de las características más útiles de Nushell es que puede leer formatos de datos comunes sin necesidad de herramientas adicionales.

Supongamos que tiene un archivo CSV que contiene registros de tráfico del sitio web. Para contar el número de respuestas 404, ejecute:

open traffic.csv | where status == 404 | length

Ejemplo de salida:

37

Esto es lo que sucede:

  • open traffic.csv Lea archivos CSV y conviértalos automáticamente en tablas.
  • where status == 404 Conserve únicamente las filas con una columna de estado de 404.
  • length Cuente el número de filas restantes.

El mismo enfoque funciona para archivos JSON. Por ejemplo, para leer valores de un archivo de configuración:

open config.json | get database.host

Escribe tu primer script Nushell

Los scripts Nushell utilizan la extensión .nu.

Crea un nuevo guión:

nano disk-check.nu

Agregue el siguiente código:

def check-disk [threshold: int] {
    df -h
    | where "use%" > $threshold
    | select filesystem "use%" available
}

check-disk 80

Ejemplo de salida:

╭───┬─────────────┬───────┬───────────╮
│ # │ filesystem  │ use%  │ available │
├───┼─────────────┼───────┼───────────┤
│ 0 │ /dev/sda1   │  87%  │  4.2 GB   │
╰───┴─────────────┴───────┴───────────╯

El script define un script llamado check-disk Acepta un umbral de uso de disco como un número entero. Enumera los sistemas de archivos instalados, filtra aquellos que utilizan más de un porcentaje específico de espacio en disco y muestra solo filesystem, use%y available Lista.

Si desea un curso completo sobre cómo convertir comandos únicos en una verdadera automatización, Más de 100 comandos básicos de Linux El curso Pro TecMint es una excelente próxima parada.
en conclusión

Ahora tiene Nushell instalado en Ubuntu, Debian, RHEL, Fedora o Rocky Linux y ha visto cómo utiliza datos estructurados en lugar de texto sin formato para manejar las tareas diarias del shell.

Si es nuevo en Nushell, comience con comandos simples como:

ps | where cpu > 10 | sort-by cpu
Or
ls | where size > 10mb

Estos ejemplos pueden darle una buena idea de cómo Nusher Cómo funciona y en qué se diferencia su canalización estructurada de los cerramientos tradicionales.

Nusher No está destinado a reemplazar a Bash en todos los casos, especialmente si ya tiene scripts y flujos de trabajo de Bash existentes. Pero para explorar datos, filtrar la salida de comandos y trabajar con archivos estructurados, es una herramienta poderosa que vale la pena agregar a su caja de herramientas.

Pruébelo durante unos días para ver cómo se adapta a su flujo de trabajo. Probablemente terminará usando Bash para secuencias de comandos y administración de sistemas, y Nushell cuando necesite buscar, filtrar o analizar datos estructurados más fácilmente.

Si este artículo fue útil, Con alguien de tu equipo.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba