Os maiores programas em Shell
(github.com/oils-for-unix)-
O maior programa shell do mundo
-
akinomyoga/ble.sh: total de 61K LoC (46K SLoC). Um Bash Line Editor, um editor de linha interativo no estilo do fish escrito em bash puro. O arquivo principal
out/ble.shcontém 30K LoC (23K SLoC), e no total há mais de 60K LoC. Inclui muitos comentários em japonês. Há uma visão geral de como o ble.sh funciona, mostrando o uso de estruturas de dados muito sofisticadas. -
kalua: um add-on do OpenWRT composto por cerca de 56K SLoC/linhas de shell POSIX.
-
bashdb: um depurador para bash composto por cerca de 14K linhas de bash. Tem uma história interessante de implementação do depurador.
-
drwetter/testssl.sh: composto por 21K linhas de bash em um único arquivo. Parece ter sido escrito manualmente.
-
Simplenetes: Kubernetes feito em 17K linhas de Shell. Surpreendente, mas atualmente inativo.
-
rkhunter: no site oficial, há 21K linhas de shell Bourne escritas entre 2003 e 2018.
-
romkatv/powerlevel10k: há 12K linhas de script zsh no diretório
internal/. Além disso, existem 8K linhas de configuração e scripts auxiliares. -
dylanaraps/neofetch: exibe informações do sistema com 10K linhas de bash 3.2.
-
xwmx/nb: o próprio nb tem 26K LoC (22K SLoC) de bash. Além disso, contando os testes bats como bash, há 91K LoC (61K SLoC).
-
distrobox: composto por mais de 7K linhas de scripts bash. Permite usar qualquer distribuição Linux dentro do terminal.
-
acme.sh: script shell de 7K linhas para emitir e renovar certificados.
-
inxi 2.3.56 [obsolete]: composto por 16K linhas de bash. Começou em 2008 como um fork do infobash.
-
bashforth: composto por cerca de 3800 linhas, mas implementa uma linguagem de programação de verdade.
-
yoda: tem metade do tamanho do bashforth, mas implementa um interpretador e compilador completos.
-
vegardit/bash-funk: biblioteca Bash com total de 27K LoC (24K SLoC).
-
Relax-and-Recover: 35K LoC (24K SLoC). Ferramenta de backup e recuperação.
-
abcde / A Better CD Encoder: usado para ripar CDs e composto por cerca de 5,5k LoC.
-
thc-segfault: 3,3K LoC. Servidor pubnix construído principalmente em Bash.
-
ffmpeg/configure: 8,4K LoC. Script de configuração do FFmpeg escrito manualmente.
-
ffhevc: 4k LoC. Script wrapper em Bash totalmente escrito à mão para codificar vídeo em HEVC usando FFmpeg e libx265.
-
ffx264: 3,9k LoC. Script wrapper em Bash totalmente escrito à mão para codificar vídeo em H.264/AVC usando FFmpeg e libx264.
-
h264enc: 9,2k LoC. Script wrapper em Bash totalmente escrito à mão para codificar vídeo em H.264/AVC usando MEncoder.
-
bashtop: 5,3k LoC. Monitor de recursos.
-
halcyon: 6,6k LoC. Sistema de instalação de apps Haskell.
-
winetricks: script shell com 22K linhas. Instala vários programas Windows no Wine.
-
wordshell: cerca de 7k linhas de código. Gerencia vários sites WordPress pela linha de comando.
-
BaCon: cerca de 10k linhas de código. Converte programas escritos em BASIC para C.
-
-
Linguagens semelhantes a shell / DSL
-
modernish: um dialeto de shell portátil escrito em shell.
-
bats: DSL para escrever testes. Gera código bash.
-
bashible: DSL semelhante ao Ansible em bash.
-
clash: framework orientado a objetos compatível com shell POSIX moderno.
-
bash Infinity: biblioteca padrão e framework boilerplate para bash.
-
-
Programas pequenos
-
Alpine, Aboriginal, Debian scripts: ver a postagem do blog.
-
Completion scripts: grandes, mas frequentemente repetitivos.
-
_git Zsh completion: 8,3k linhas de código.
-
git-completion.bash: conclusão do Docker.
-
dyne/Tomb: cerca de 3500 linhas de script zsh.
-
Basalt: gerenciador de pacotes completo escrito em Bash puro (por volta de 2021). Tem apenas alguns milhares de linhas, mas já possui um ecossistema rico (mais de 15 apps/bibliotecas).
-
1 comentários
Comentários do Hacker News
Na Sony, há 25 anos, fui designado para um projeto de melhoria de um sistema de gerenciamento de pedidos muito lento e que travava com frequência.
Escrevi o instalador do Enrust CA e do diretório, e ele evoluiu para rodar em todos os Unix.
Tentei escrever o interpretador da linguagem de script Lil em bash, mas acabei escolhendo AWK por causa da dificuldade com operações de ponto flutuante e do suporte limitado a arrays.
Scripts em Bash não são adequados para escrever programas complexos.
O script do rkhunter tem um código bom e rico em informações.
O maior programa em shell que já usei no passado foi o abcde, com cerca de 5.500 linhas de código.
O cliente do FreeBSD Update é composto por cerca de 3.600 linhas de código sh.
O shell pode ser a única ferramenta com disponibilidade garantida, mas vale repensar ao escrever grandes aplicações em shell.
O script acme.sh tem 7,1 mil linhas e é usado para emitir e renovar certificados do Lets Encrypt.
No mod_pagespeed, usaram shell scripts para realizar testes de sistema, mas teria sido melhor migrar para Python.