Engine JavaScript incorporável, escrito em Rust, com lexer, parser e interpretador e amplo suporte à especificação ECMAScript.
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
Instalar a CLI shfmt com Go
go install mvdan.cc/sh/v3/cmd/shfmt@latest - 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
Módulo Go para criar saídas de console coloridas e estilizadas, com barras de progresso, tabelas, árvores, gráficos e prompts interativos.
Script Bash compatível com POSIX para instalar e alternar entre várias versões do Node.js por usuário e por shell.
Warp é um ambiente de desenvolvimento agentivo baseado no terminal, com um agente de programação integrado ou suporte aos seus próprios agentes de CLI.
Uma alternativa ao histórico padrão do shell que armazena comandos em SQLite junto com informações como código de saída e duração, com sincronização opcional e criptografia de ponta a ponta entre máquinas.
Um mecanismo multiplataforma de temas para prompts que cria prompts personalizáveis para PowerShell, bash, zsh, fish e outros shells.