Repolode
mvdan

mvdan/sh

Biblioteca Go e CLI shfmt para analisar, formatar e interpretar scripts de shell em POSIX, Bash, Zsh e mksh.

Estrelas
9,182
Forks
465
Issues abertas
78
Último commit
há 4 dias

O que é?

mvdan/sh é um parser, formatador e interpretador de shell escrito em Go puro. É compatível com a sintaxe de POSIX Shell, Bash, Zsh e mksh e analisa scripts em uma árvore sintática que pode ser inspecionada ou reescrita programaticamente.

O projeto inclui o formatador de linha de comando shfmt, que aplica um estilo consistente a scripts de shell e pode reescrever arquivos no próprio lugar. Há pacotes para várias distribuições Linux, Homebrew, Scoop, Docker e PyPI. Plugins para VS Code, Emacs, Vim e outros editores servem como interface para a ferramenta.

Além da formatação, o pacote shell oferece funções auxiliares para dividir linhas de comando, expandir variáveis e tildes e corresponder padrões glob. Já o pacote interp executa scripts em Go sem um shell do sistema, inclusive no Windows. Os subshells são implementados com goroutines, em vez de processos reais.

Recursos principais

  • 01Analisa scripts POSIX, Bash, Zsh e mksh em uma árvore sintática.
  • 02Formata scripts de shell com a CLI shfmt, inclusive reescrevendo os arquivos no próprio lugar.
  • 03Executa scripts em Go sem um shell do sistema, inclusive no Windows.
  • 04Oferece funções auxiliares para dividir linhas de comando, fazer quoting, expandir variáveis e corresponder padrões glob.
  • 05Disponibiliza uma imagem Docker e pacotes para vários sistemas operacionais.

Casos de uso

  • Aplicar um estilo consistente aos scripts de shell em um repositório de equipe, usando CI ou pre-commit.
  • Criar ferramentas Go para analisar ou reescrever scripts de shell programaticamente.
  • Incorporar um interpretador de shell em sandbox a uma aplicação Go.
  • Formatar código shell em editores usando plugins existentes do shfmt.

Início rápido

  1. 1

    Instalar a CLI shfmt com Go

    go install mvdan.cc/sh/v3/cmd/shfmt@latest
  2. 2

    Formatar um script de shell no próprio arquivo

    shfmt -l -w script.sh

Antes de usar

  • É necessário ter Go 1.26 ou posterior para instalar a partir do código-fonte.
  • Os subshells são executados em goroutines, então o interpretador não tem acesso a PIDs reais nem a descritores de arquivo.
  • A ambiguidade entre `$((` e `((` não é compatível.

Em coleções

Tópicos

Perguntas frequentes

O que é sh?
Biblioteca Go e CLI shfmt para analisar, formatar e interpretar scripts de shell em POSIX, Bash, Zsh e mksh. mvdan/sh é um parser, formatador e interpretador de shell escrito em Go puro. É compatível com a sintaxe de POSIX Shell, Bash, Zsh e mksh e analisa scripts em uma árvore sintática que pode ser inspecionada ou reescrita programaticamente.
sh é gratuito? Qual é a licença?
sh é open source sob a licença BSD-3-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
sh ainda é mantido?
Manutenção ativa. O último commit de sh foi em 3 de nov. de 2026.
Para que posso usar sh?
Aplicar um estilo consistente aos scripts de shell em um repositório de equipe, usando CI ou pre-commit. Criar ferramentas Go para analisar ou reescrever scripts de shell programaticamente. Incorporar um interpretador de shell em sandbox a uma aplicação Go. Formatar código shell em editores usando plugins existentes do shfmt.
Como instalar sh?
Instalar a CLI shfmt com Go: go install mvdan.cc/sh/v3/cmd/shfmt@latest Formatar um script de shell no próprio arquivo: shfmt -l -w script.sh
Onde consigo sh?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/mvdan/sh

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados