Les plus grands programmes Shell
(github.com/oils-for-unix)-
Les plus grands programmes shell au monde
-
akinomyoga/ble.sh : 61K LoC au total (46K SLoC). Un Bash Line Editor, c’est-à-dire un éditeur de ligne interactif de type fish, écrit en bash pur. Le fichier principal
out/ble.shcontient 30K LoC (23K SLoC), et l’ensemble dépasse 60K+ LoC. Il comprend de nombreux commentaires en japonais. Il existe aussi une vue d’ensemble du fonctionnement de ble.sh, qui montre l’utilisation de structures de données très sophistiquées. -
kalua : un addon OpenWRT composé d’environ 56K SLoC/lignes en shell POSIX.
-
bashdb : un débogueur bash composé d’environ 14K lignes de bash. Il a une histoire de mise en œuvre intéressante.
-
drwetter/testssl.sh : un fichier unique de 21K lignes en bash. Semble avoir été écrit entièrement à la main.
-
Simplenetes : Kubernetes en 17K lignes de shell. Surprenant, mais actuellement inactif.
-
rkhunter : 21K lignes de shell Bourne sur le site officiel, écrites entre 2003 et 2018.
-
romkatv/powerlevel10k : le répertoire
internal/contient 12K lignes de scripts zsh. S’y ajoutent 8K lignes de configuration et de scripts auxiliaires. -
dylanaraps/neofetch : 10K lignes en bash 3.2 pour afficher les informations système.
-
xwmx/nb : nb lui-même contient 26K LoC (22K SLoC) en bash. En comptant en plus les tests bats en bash, on atteint 91K LoC (61K SLoC).
-
distrobox : composé de plus de 7K lignes de scripts bash. Permet d’utiliser n’importe quelle distribution Linux depuis le terminal.
-
acme.sh : un script shell de 7K lignes pour émettre et renouveler des certificats.
-
inxi 2.3.56 [obsolete] : 16K lignes en bash. A commencé en 2008 comme un fork de infobash.
-
bashforth : environ 3800 lignes, mais implémente un véritable langage de programmation.
-
yoda : deux fois plus petit que bashforth, mais implémente un interpréteur et un compilateur complets.
-
vegardit/bash-funk : bibliothèque Bash de 27K LoC au total (24K SLoC).
-
Relax-and-Recover : 35K LoC (24K SLoC). Outil de sauvegarde et de restauration.
-
abcde / A Better CD Encoder : utilisé pour l’extraction de CD, avec environ 5.5k LoC.
-
thc-segfault : 3.3K LoC. Serveur pubnix construit principalement en Bash.
-
ffmpeg/configure : 8.4K LoC. Le script de configuration de FFmpeg, écrit à la main.
-
ffhevc : 4k LoC. Script wrapper Bash entièrement écrit à la main pour encoder en vidéo HEVC avec FFmpeg et libx265.
-
ffx264 : 3.9k LoC. Script wrapper Bash entièrement écrit à la main pour encoder en vidéo H.264/AVC avec FFmpeg et libx264.
-
h264enc : 9.2k LoC. Script wrapper Bash entièrement écrit à la main pour encoder en vidéo H.264/AVC avec MEncoder.
-
bashtop : 5.3k LoC. Moniteur de ressources.
-
halcyon : 6.6k LoC. Système d’installation d’applications Haskell.
-
winetricks : script shell de 22K lignes. Installe divers programmes Windows dans Wine.
-
wordshell : environ 7k lignes de code. Gère plusieurs sites WordPress en ligne de commande.
-
BaCon : environ 10k lignes de code. Convertit des programmes écrits en BASIC en C.
-
-
Langages de type shell / DSL
-
modernish : un dialecte shell portable écrit en shell.
-
bats : un DSL pour écrire des tests. Génère du code bash.
-
bashible : un DSL similaire à Ansible en bash.
-
clash : framework orienté objet compatible avec le shell POSIX moderne.
-
bash Infinity : bibliothèque standard et framework boilerplate pour bash.
-
-
Petits programmes
-
Alpine, Aboriginal, Debian scripts : voir l’article de blog.
-
Completion scripts : volumineux, mais souvent répétitifs.
-
_git Zsh completion : 8.3k lignes de code.
-
git-completion.bash : complétion Docker.
-
dyne/Tomb : environ 3500 lignes de scripts zsh.
-
Basalt : gestionnaire de paquets complet écrit en Bash pur (vers 2021). Il ne fait que quelques milliers de lignes, mais dispose déjà d’un écosystème riche (plus de 15 apps/bibliothèques).
-
1 commentaires
Commentaires sur Hacker News
Chez Sony, il y a 25 ans, une personne a été affectée à un projet visant à améliorer un système de gestion des commandes très lent et qui plantait souvent.
Une personne a écrit le programme d’installation d’Enrust CA et du répertoire, qui a évolué pour fonctionner sur tous les Unix.
Quelqu’un a essayé d’écrire l’interpréteur du langage de script Lil en bash, mais a choisi AWK en raison des difficultés liées aux calculs en virgule flottante et du support limité des tableaux.
Les scripts Bash ne conviennent pas à l’écriture de programmes complexes.
Le script rkhunter est bien écrit et riche en informations.
Le plus gros programme shell utilisé autrefois était abcde, composé d’environ 5 500 lignes de code.
Le client FreeBSD Update est composé d’environ 3 600 lignes de code sh.
Le shell est parfois le seul outil dont la disponibilité est garantie, mais il faut y réfléchir à deux fois avant d’écrire une grosse application shell.
Le script acme.sh fait 7,1 K lignes et sert à émettre et renouveler des certificats via Lets Encrypt.
mod_pagespeed utilisait des scripts shell pour les tests système, mais il aurait mieux valu passer à Python.