Die größten Shell-Programme
(github.com/oils-for-unix)-
Die größten Shell-Programme der Welt
-
akinomyoga/ble.sh: Insgesamt 61K LoC (46K SLoC). Ein Bash Line Editor, ein fish-ähnlicher interaktiver Zeileneditor, der vollständig in reinem bash geschrieben ist. Die Hauptdatei
out/ble.shenthält 30K LoC (23K SLoC), insgesamt sind es über 60K+ LoC. Enthält viele Kommentare auf Japanisch. Es gibt einen Überblick darüber, wie ble.sh funktioniert, und er zeigt die Verwendung sehr ausgefeilter Datenstrukturen. -
kalua: Ein OpenWRT-Add-on, das aus etwa 56K SLoC/Zeilen POSIX-Shell besteht.
-
bashdb: Ein bash-Debugger, der aus etwa 14K Zeilen bash besteht. Hat eine interessante Geschichte der Debugger-Implementierung.
-
drwetter/testssl.sh: Besteht aus 21K Zeilen bash in einer einzigen Datei. Scheint von Hand geschrieben zu sein.
-
Simplenetes: Kubernetes in 17K Zeilen Shell. Erstaunlich, aber derzeit inaktiv.
-
rkhunter: Laut offizieller Website 21K Zeilen Bourne-Shell, geschrieben zwischen 2003 und 2018.
-
romkatv/powerlevel10k: Im Verzeichnis
internal/befinden sich 12K Zeilen zsh-Skripte. Zusätzlich gibt es 8K Zeilen Konfigurations- und Hilfsskripte. -
dylanaraps/neofetch: Zeigt Systeminformationen mit 10K Zeilen bash 3.2 an.
-
xwmx/nb: nb selbst enthält 26K LoC (22K SLoC) bash. Zählt man zusätzlich die bats-Tests als bash mit, kommt man auf 91K LoC (61K SLoC).
-
distrobox: Besteht aus mehr als 7K bash-Skripten. Ermöglicht die Nutzung jeder Linux-Distribution innerhalb des Terminals.
-
acme.sh: Ein 7K-Zeilen-Shell-Skript zum Ausstellen und Erneuern von Zertifikaten.
-
inxi 2.3.56 [obsolete]: Besteht aus 16K Zeilen bash. Begann 2008 als Fork von infobash.
-
bashforth: Besteht aus etwa 3800 Zeilen, implementiert aber eine echte Programmiersprache.
-
yoda: Halb so groß wie bashforth, implementiert aber einen vollständigen Interpreter und Compiler.
-
vegardit/bash-funk: Eine Bash-Bibliothek mit insgesamt 27K LoC (24K SLoC).
-
Relax-and-Recover: 35K LoC (24K SLoC). Ein Backup- und Restore-Tool.
-
abcde / A Better CD Encoder: Wird zum CD-Ripping verwendet und besteht aus etwa 5.5k LoC.
-
thc-segfault: 3.3K LoC. Ein pubnix-Server, der hauptsächlich in Bash aufgebaut ist.
-
ffmpeg/configure: 8.4K LoC. Das Konfigurationsskript von FFmpeg, von Hand geschrieben.
-
ffhevc: 4k LoC. Ein vollständig handgeschriebenes Bash-Wrapper-Skript zum Kodieren in HEVC-Video mit FFmpeg und libx265.
-
ffx264: 3.9k LoC. Ein vollständig handgeschriebenes Bash-Wrapper-Skript zum Kodieren in H.264/AVC-Video mit FFmpeg und libx264.
-
h264enc: 9.2k LoC. Ein vollständig handgeschriebenes Bash-Wrapper-Skript zum Kodieren in H.264/AVC-Video mit MEncoder.
-
bashtop: 5.3k LoC. Ein Ressourcenmonitor.
-
halcyon: 6.6k LoC. Ein Installationssystem für Haskell-Apps.
-
winetricks: Ein Shell-Skript mit 22K Zeilen. Installiert verschiedene Windows-Programme unter Wine.
-
wordshell: Etwa 7k Zeilen Code. Verwaltet mehrere WordPress-Sites über die Kommandozeile.
-
BaCon: Etwa 10k Zeilen Code. Wandelt in BASIC geschriebene Programme in C um.
-
-
Shell-ähnliche Sprachen / DSL
-
modernish: Ein in Shell geschriebener portabler Shell-Dialekt.
-
bats: Ein DSL zum Schreiben von Tests. Erzeugt bash-Code.
-
bashible: Ein Ansible-ähnliches DSL in bash.
-
clash: Ein objektorientiertes Framework, kompatibel mit moderner POSIX-Shell.
-
bash Infinity: Eine Standardbibliothek und ein Boilerplate-Framework für bash.
-
-
Kleine Programme
-
Alpine, Aboriginal, Debian scripts: Siehe Blogbeitrag.
-
Completion scripts: Groß, aber oft repetitiv.
-
_git Zsh completion: 8.3k Zeilen Code.
-
git-completion.bash: Docker-Completion.
-
dyne/Tomb: Etwa 3500 Zeilen zsh-Skript.
-
Basalt: Ein voll funktionsfähiger Paketmanager, vollständig in reinem Bash geschrieben (ca. 2021). Nur ein paar tausend Zeilen, hat aber bereits ein reichhaltiges Ökosystem (mehr als 15 Apps/Bibliotheken).
-
1 Kommentare
Hacker-News-Kommentare
Bei Sony wurde ich vor 25 Jahren einem Projekt zugeteilt, das ein sehr langsames und häufig abstürzendes Auftragsverwaltungssystem verbessern sollte.
Ich schrieb den Installer für Enrust CA und das Verzeichnis, und er entwickelte sich so weiter, dass er auf allen Unix-Systemen lief.
Ich wollte einen Interpreter für die Skriptsprache Lil in bash schreiben, entschied mich wegen der Schwierigkeiten mit Gleitkomma-Arithmetik und der eingeschränkten Array-Unterstützung aber für AWK.
Bash-Skripte eignen sich nicht zum Schreiben komplexer Programme.
Das Skript von rkhunter ist gut geschrieben und sehr informativ.
Das größte Shell-Programm, das ich in der Vergangenheit verwendet habe, war abcde mit etwa 5.500 Zeilen Code.
Der FreeBSD-Update-Client besteht aus etwa 3.600 Zeilen sh-Code.
Die Shell ist möglicherweise das einzige Tool, dessen Verfügbarkeit garantiert ist, aber wenn man große Shell-Apps schreibt, sollte man das überdenken.
Das Skript acme.sh umfasst 7,1K Zeilen und wird verwendet, um Zertifikate von Lets Encrypt auszustellen und zu erneuern.
In mod_pagespeed wurden Shell-Skripte für Systemtests verwendet, aber ein Wechsel zu Python wäre besser gewesen.