4 poin oleh GN⁺ 2024-12-09 | 1 komentar | Bagikan ke WhatsApp
  • Program shell terbesar di dunia

    • akinomyoga/ble.sh: total 61K LoC (46K SLoC). Sebuah Bash Line Editor, editor baris interaktif mirip fish yang ditulis murni dalam bash. File utamanya, out/ble.sh, mencakup 30K LoC (23K SLoC), dan secara keseluruhan memiliki lebih dari 60K LoC. Berisi banyak komentar dalam bahasa Jepang. Ada gambaran umum tentang cara kerja ble.sh, yang menunjukkan penggunaan struktur data yang sangat canggih.

    • kalua: Add-on OpenWRT yang terdiri dari sekitar 56K SLoC/baris POSIX shell.

    • bashdb: Debugger bash yang terdiri dari sekitar 14K baris bash. Memiliki sejarah implementasi debugger yang menarik.

    • drwetter/testssl.sh: Terdiri dari 21K baris bash dalam satu file. Tampaknya ditulis secara manual.

    • Simplenetes: Kubernetes yang terdiri dari 17K baris Shell. Mengejutkan, tetapi saat ini sudah tidak aktif.

    • rkhunter: Ditulis dalam 21K baris Bourne shell di situs resminya antara 2003–2018.

    • romkatv/powerlevel10k: Memiliki 12K baris skrip zsh di direktori internal/. Selain itu ada 8K baris konfigurasi dan skrip pembantu.

    • dylanaraps/neofetch: Menampilkan informasi sistem dengan 10K baris bash 3.2.

    • xwmx/nb: nb sendiri memiliki 26K LoC (22K SLoC) bash. Jika pengujian bats juga dihitung sebagai bash, totalnya menjadi 91K LoC (61K SLoC).

    • distrobox: Terdiri dari lebih dari 7K skrip bash. Memungkinkan penggunaan distribusi Linux apa pun di dalam terminal.

    • acme.sh: Skrip shell 7K baris untuk menerbitkan dan memperbarui sertifikat.

    • inxi 2.3.56 [obsolete]: Terdiri dari 16K baris bash. Dimulai sebagai fork dari infobash pada 2008.

    • bashforth: Terdiri dari sekitar 3800 baris, tetapi mengimplementasikan bahasa pemrograman sungguhan.

    • yoda: Ukurannya setengah dari bashforth, tetapi mengimplementasikan interpreter dan compiler lengkap.

    • vegardit/bash-funk: Pustaka Bash dengan total 27K LoC (24K SLoC).

    • Relax-and-Recover: 35K LoC (24K SLoC). Alat pencadangan dan pemulihan.

    • abcde / A Better CD Encoder: Digunakan untuk ripping CD dan terdiri dari sekitar 5.5k LoC.

    • thc-segfault: 3.3K LoC. Server pubnix yang sebagian besar dibangun dengan Bash.

    • ffmpeg/configure: 8.4K LoC. Skrip konfigurasi FFmpeg yang ditulis secara manual.

    • ffhevc: 4k LoC. Skrip wrapper Bash yang sepenuhnya ditulis manual untuk encoding ke video HEVC menggunakan FFmpeg dan libx265.

    • ffx264: 3.9k LoC. Skrip wrapper Bash yang sepenuhnya ditulis manual untuk encoding ke video H.264/AVC menggunakan FFmpeg dan libx264.

    • h264enc: 9.2k LoC. Skrip wrapper Bash yang sepenuhnya ditulis manual untuk encoding ke video H.264/AVC menggunakan MEncoder.

    • bashtop: 5.3k LoC. Monitor sumber daya.

    • halcyon: 6.6k LoC. Sistem instalasi aplikasi Haskell.

    • winetricks: Skrip shell 22K baris. Menginstal berbagai program Windows di Wine.

    • wordshell: Sekitar 7k baris kode. Mengelola banyak situs WordPress dari command line.

    • BaCon: Sekitar 10k baris kode. Mengonversi program yang ditulis dalam BASIC ke C.

  • Bahasa mirip shell / DSL

    • modernish: Dialek shell portabel yang ditulis dalam shell.

    • bats: DSL untuk menulis pengujian. Menghasilkan kode bash.

    • bashible: DSL mirip Ansible di dalam bash.

    • clash: Framework berorientasi objek yang kompatibel dengan shell POSIX modern.

    • bash Infinity: Pustaka standar dan framework boilerplate untuk bash.

  • Program kecil

    • Alpine, Aboriginal, Debian scripts: Lihat posting blog.

    • Completion scripts: Besar, tetapi sering kali repetitif.

    • _git Zsh completion: 8.3k baris kode.

    • git-completion.bash: Completion Docker.

    • dyne/Tomb: Sekitar 3500 baris skrip zsh.

    • Basalt: Manajer paket berfitur lengkap yang ditulis murni dalam Bash (sekitar 2021). Hanya beberapa ribu baris, tetapi sudah memiliki ekosistem yang kaya (lebih dari 15 aplikasi/pustaka).

1 komentar

 
GN⁺ 2024-12-09
Opini Hacker News
  • Di Sony 25 tahun lalu, seseorang ditugaskan ke proyek untuk memperbaiki sistem manajemen pesanan yang sangat lambat dan sering crash.

    • Sistem itu terdiri dari 50.000 baris shell script di server AIX yang telah terbengkalai selama puluhan tahun.
    • Dengan menggunakan Perl, sistem tersebut dipangkas menjadi 5.000 baris dan performanya meningkat 10-100 kali lipat.
    • Proyek ini merupakan pengalaman yang sangat memuaskan.
  • Seseorang menulis installer Enrust CA dan direktori, lalu mengembangkannya agar bisa berjalan di semua Unix.

    • Instalasinya sederhana, tetapi upgrade-nya rumit.
    • Utilitas di tiap Unix sedikit berbeda sehingga perlu dikelola.
    • Unix milik DEC membingungkan, misalnya utilitas command line membatasi lebar output.
    • HP-UX memiliki perubahan pada setiap versinya.
  • Seseorang mencoba menulis interpreter untuk bahasa skrip Lil dengan bash, tetapi memilih AWK karena sulitnya operasi floating point dan dukungan array yang terbatas.

    • AWK tersedia di lingkungan POSIX dan cocok sebagai bahasa serbaguna.
  • Bash script tidak cocok untuk menulis program yang kompleks.

    • Keterbacaannya rendah, aturan cakupan variabelnya subtil, dan penanganan error-nya primitif.
    • Kurangnya alat analisis statis, linter, dan debugger membuat pemeliharaan menjadi sulit.
    • Pengujian merepotkan, dan sulit menangani logika atau struktur data yang kompleks.
    • Bash cocok untuk otomasi sederhana, tetapi untuk aplikasi kompleks bahasa lain lebih baik.
  • Script rkhunter memiliki kode yang bagus dan kaya informasi.

    • Banyak kode dipakai untuk memastikan utilitas di berbagai platform bekerja sesuai harapan.
    • Jika ditulis dalam bahasa pemrograman yang lebih kompleks, hasilnya mungkin akan kurang transparan.
  • Program shell terbesar yang pernah digunakan seseorang di masa lalu adalah abcde, dengan sekitar 5500 baris kode.

  • Klien FreeBSD Update terdiri dari sekitar 3600 baris kode sh.

    • Sebagai alat untuk memperbarui sistem operasi, ia menyediakan fungsi yang cukup besar.
  • Shell mungkin satu-satunya alat yang ketersediaannya terjamin, tetapi tetap perlu dipikirkan ulang saat menulis aplikasi shell yang besar.

  • Script acme.sh sepanjang 7,1 ribu baris digunakan untuk menerbitkan dan memperbarui sertifikat dari Lets Encrypt.

  • Di mod_pagespeed, shell script dipakai untuk menjalankan pengujian sistem, tetapi beralih ke Python mungkin akan lebih baik.

    • Sebanyak 10.579 baris kode bash digunakan.
    • Melakukan transisi secara bertahap kemungkinan akan lebih efisien.