Repolode
mvdan

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. 1

    Instalar la CLI de shfmt con Go

    go install mvdan.cc/sh/v3/cmd/shfmt@latest
  2. 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