Un motor de JavaScript integrable, escrito en Rust, con lexer, parser e intérprete y amplia compatibilidad con la especificación ECMAScript.
mvdan/sh
Una biblioteca de Go y la CLI shfmt para analizar, dar formato e interpretar scripts de shell POSIX, Bash, Zsh y mksh.
- Estrellas
- 9,182
- Forks
- 465
- Issues abiertos
- 78
- Último commit
- hace 3 días
¿Qué es?
mvdan/sh es un parser, formateador e intérprete de shell escrito en Go puro. Admite la sintaxis de POSIX Shell, Bash, Zsh y mksh, y analiza los scripts en un árbol de sintaxis que se puede inspeccionar o modificar mediante código.
El proyecto incluye el formateador de línea de comandos shfmt, que aplica un estilo uniforme a los scripts de shell y puede reescribir archivos directamente. Hay paquetes disponibles para muchas distribuciones de Linux, Homebrew, Scoop, Docker y PyPI. También existen plugins para editores como VS Code, Emacs y Vim, entre otros.
Además de dar formato, el paquete shell ofrece funciones auxiliares para dividir líneas de comandos, expandir variables y tildes, y buscar coincidencias con patrones glob. Por su parte, el paquete interp ejecuta scripts en Go sin recurrir a un shell del sistema, incluso en Windows. Los subshells se implementan con goroutines en lugar de procesos reales.
Funciones clave
- 01Analiza scripts POSIX, Bash, Zsh y mksh y los convierte en un árbol de sintaxis.
- 02Da formato a scripts de shell con la CLI shfmt, incluso reescribiéndolos directamente.
- 03Ejecuta scripts en Go sin un shell del sistema, incluso en Windows.
- 04Incluye funciones auxiliares para dividir líneas de comandos, entrecomillar, expandir variables y buscar coincidencias con patrones glob.
- 05Ofrece una imagen de Docker y paquetes para muchos sistemas operativos.
Casos de uso
- Aplicar un estilo uniforme a los scripts de shell de un repositorio de equipo mediante CI o pre-commit.
- Crear herramientas de Go que analicen o modifiquen scripts de shell mediante código.
- Integrar un intérprete de shell aislado en una aplicación de Go.
- Dar formato al código de shell en editores mediante los plugins existentes de shfmt.
Inicio rápido
- 1
Instalar la CLI de shfmt con Go
go install mvdan.cc/sh/v3/cmd/shfmt@latest - 2
Formatear un script de shell en el propio archivo
shfmt -l -w script.sh
Antes de usarlo
- Se requiere Go 1.26 o posterior para instalarlo desde el código fuente.
- Los subshells se ejecutan en goroutines, por lo que el intérprete no puede acceder a PID reales ni a descriptores de archivo.
- No se admite la ambigüedad entre `$((` y `((`.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es sh?
- Una biblioteca de Go y la CLI shfmt para analizar, dar formato e interpretar scripts de shell POSIX, Bash, Zsh y mksh. mvdan/sh es un parser, formateador e intérprete de shell escrito en Go puro. Admite la sintaxis de POSIX Shell, Bash, Zsh y mksh, y analiza los scripts en un árbol de sintaxis que se puede inspeccionar o modificar mediante código.
- ¿sh es gratuito? ¿Qué licencia tiene?
- sh es open source bajo la licencia BSD-3-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿sh sigue mantenido?
- Mantenimiento activo. El último commit de sh fue el 3 nov 2026.
- ¿Para qué puedo usar sh?
- Aplicar un estilo uniforme a los scripts de shell de un repositorio de equipo mediante CI o pre-commit. Crear herramientas de Go que analicen o modifiquen scripts de shell mediante código. Integrar un intérprete de shell aislado en una aplicación de Go. Dar formato al código de shell en editores mediante los plugins existentes de shfmt.
- ¿Cómo se instala sh?
- Instalar la CLI de shfmt con Go: go install mvdan.cc/sh/v3/cmd/shfmt@latest Formatear un script de shell en el propio archivo: shfmt -l -w script.sh
- ¿Dónde consigo sh?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/mvdan/sh
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un módulo de Go para crear texto colorido y con estilos en la consola, con barras de progreso, tablas, árboles, gráficos y prompts interactivos.
Script de Bash compatible con POSIX para instalar y alternar entre varias versiones de Node.js por usuario y por shell.
Warp es un entorno de desarrollo agéntico basado en la terminal, con un agente de programación integrado o compatibilidad con tus propios agentes de CLI.
Una alternativa al historial de shell que guarda los comandos en SQLite con contexto, como el código de salida y la duración, y permite sincronizarlos entre máquinas con cifrado de extremo a extremo.
Motor multiplataforma de temas para prompts que crea prompts de shell personalizables para PowerShell, bash, zsh, fish y otros.