Los programas Shell más grandes
(github.com/oils-for-unix)-
El programa shell más grande del mundo
-
akinomyoga/ble.sh: Un total de 61K LoC (46K SLoC). Es Bash Line Editor, un editor interactivo de líneas tipo fish escrito en bash puro. El archivo principal
out/ble.shcontiene 30K LoC (23K SLoC), y en conjunto supera las 60K+ LoC. Incluye muchos comentarios en japonés. Hay una visión general de cómo funciona ble.sh, y muestra el uso de estructuras de datos muy sofisticadas. -
kalua: Un add-on de OpenWRT compuesto por unas 56K SLoC/líneas de shell POSIX.
-
bashdb: Un depurador de bash compuesto por unas 14K líneas de bash. Tiene una historia interesante sobre la implementación del depurador.
-
drwetter/testssl.sh: Consta de 21K líneas de bash en un solo archivo. Parece haber sido escrito a mano.
-
Simplenetes: Kubernetes hecho con 17K líneas de Shell. Sorprendente, pero actualmente está inactivo.
-
rkhunter: 21K líneas de shell Bourne en el sitio oficial, escritas entre 2003 y 2018.
-
romkatv/powerlevel10k: Tiene 12K líneas de scripts zsh en el directorio
internal/. Además, hay 8K líneas adicionales de configuración y scripts auxiliares. -
dylanaraps/neofetch: Muestra información del sistema con 10K líneas de bash 3.2.
-
xwmx/nb: nb en sí tiene 26K LoC (22K SLoC) de bash. Si además se cuentan las pruebas bats como bash, hay 91K LoC (61K SLoC).
-
distrobox: Está compuesto por más de 7K scripts bash. Permite usar cualquier distribución Linux dentro de la terminal.
-
acme.sh: Script de shell de 7K líneas para emitir y renovar certificados.
-
inxi 2.3.56 [obsolete]: Consta de 16K líneas de bash. Empezó en 2008 como un fork de infobash.
-
bashforth: Tiene unas 3800 líneas, pero implementa un lenguaje de programación real.
-
yoda: Tiene la mitad del tamaño de bashforth, pero implementa un intérprete y compilador completos.
-
vegardit/bash-funk: Biblioteca de Bash con un total de 27K LoC (24K SLoC).
-
Relax-and-Recover: 35K LoC (24K SLoC). Herramienta de respaldo y recuperación.
-
abcde / A Better CD Encoder: Se usa para ripear CDs y consta de unas 5.5k LoC.
-
thc-segfault: 3.3K LoC. Servidor pubnix construido principalmente en Bash.
-
ffmpeg/configure: 8.4K LoC. Script de configuración de FFmpeg escrito manualmente.
-
ffhevc: 4k LoC. Script wrapper de Bash totalmente escrito a mano para codificar video HEVC usando FFmpeg y libx265.
-
ffx264: 3.9k LoC. Script wrapper de Bash totalmente escrito a mano para codificar video H.264/AVC usando FFmpeg y libx264.
-
h264enc: 9.2k LoC. Script wrapper de Bash totalmente escrito a mano para codificar video H.264/AVC usando MEncoder.
-
bashtop: 5.3k LoC. Monitor de recursos.
-
halcyon: 6.6k LoC. Sistema de instalación de apps Haskell.
-
winetricks: Script de shell de 22K líneas. Instala varios programas de Windows en Wine.
-
wordshell: Unas 7k líneas de código. Administra múltiples sitios WordPress desde la línea de comandos.
-
BaCon: Unas 10k líneas de código. Convierte programas escritos en BASIC a C.
-
-
Lenguajes similares a shell / DSL
-
modernish: Un dialecto de shell portable escrito en shell.
-
bats: Un DSL para escribir pruebas. Genera código bash.
-
bashible: Un DSL parecido a Ansible en bash.
-
clash: Un framework orientado a objetos compatible con shell POSIX moderno.
-
bash Infinity: Biblioteca estándar y framework boilerplate para bash.
-
-
Programas pequeños
-
Alpine, Aboriginal, Debian scripts: Ver la publicación del blog.
-
Completion scripts: Son grandes, pero a menudo repetitivos.
-
_git Zsh completion: 8.3k líneas de código.
-
git-completion.bash: Docker completion.
-
dyne/Tomb: Unos 3500 líneas de scripts zsh.
-
Basalt: Un gestor de paquetes con todas las funciones escrito en Bash puro (alrededor de 2021). Solo tiene unos pocos miles de líneas, pero ya cuenta con un ecosistema rico (más de 15 apps/bibliotecas).
-
1 comentarios
Comentarios en Hacker News
En Sony, hace 25 años, le asignaron un proyecto para mejorar un sistema de gestión de pedidos muy lento y que se caía con frecuencia.
Escribió el instalador de Enrust CA y del directorio, y evolucionó hasta ejecutarse en todos los Unix.
Intentó escribir en bash un intérprete para el lenguaje de scripting Lil, pero debido a las dificultades con las operaciones de punto flotante y al soporte limitado de arreglos, eligió AWK.
Los scripts de Bash no son adecuados para escribir programas complejos.
El script de rkhunter tiene buen código y mucha información.
El programa de shell más grande que usó en el pasado fue abcde, con unas 5500 líneas de código.
El cliente de FreeBSD Update está compuesto por unas 3600 líneas de código sh.
El shell puede ser la única herramienta cuya disponibilidad está garantizada, pero conviene pensarlo dos veces antes de escribir una aplicación grande en shell.
El script acme.sh tiene 7.1K líneas y se usa para emitir y renovar certificados de Lets Encrypt.
En mod_pagespeed usaron scripts de shell para realizar pruebas del sistema, pero habría sido mejor cambiar a Python.