Techniques I Use to Create a Great User Experience for Shell Scripts

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. glow

    Render markdown on the CLI, with pizzazz! 💅🏻

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. no_color

    Website data for no-color.org

  4. steam-for-linux

    Issue tracking for the Steam for Linux beta client

    It happens to the best of us

    https://github.com/ValveSoftware/steam-for-linux/issues/3671

  5. ShellCheck

    ShellCheck, a static analysis tool for shell scripts

    It's been so long since I used it seriously I couldn't tell you.

    There's over 1000 open issues on the GitHub repo, and over 100 contain "false positive". I recognize several of these at first glance.

    https://github.com/koalaman/shellcheck/issues?q=is%3Aissue+i...

  6. CG-SQL-author

    CG-SQL Author's Cut: CG/SQL is a compiler that converts a SQL Stored Procedure like language into C for SQLite. SQLite has no stored procedures of its own. CG/CQL can also generate other useful artifacts for testing and schema maintenance.

    Few months ago, I wrote a bash script for an open-source project.

    I created a small awk util that I used throughout the script to style the output. I found it very convenient. I wonder if something similar already exists.

    Some screenshots in the PR: https://github.com/ricomariani/CG-SQL-author/pull/18

    Full implementation here:

  7. nerdctl

    contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ...

    Here's a script that left me in awe the first time I saw it:

    https://github.com/containerd/nerdctl/blob/main/extras/rootl...

    I have since copied this pattern for many scripts: logging functions, grouping all global vars and constants at the top and creating subcommands using shift.

  8. warp

    Create self-contained single binary applications (by dgiagio)

    "linux-x64.warp-packer,https://github.com/dgiagio/warp/releases"

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. Gradle

    Adaptable, fast automation for all

    "gradle,https://gradle.org"

  11. KeenWrite

    The build-template can then be reused to enhance other shell scripts. Note how by defining the command-line arguments as data you can provide a general solution to usage information:

    https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...

    Further, the same command-line arguments list can be used to parse the options:

    https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...

    If you want to get even more clever, it's possible to have the template parse the command-line arguments automatically for any particular script. Tweak the arguments list slightly by prefixing the name of the variable to assign to the option:

        ARGUMENTS+=(

  12. bash-modules

    Useful modules for bash

    You may like bash-modules then: https://github.com/vlisivka/bash-modules/tree/master/bash-mo...

  13. bash3boilerplate

    Templates to write better Bash scripts

    I can highly recommend using bash3boilerplate (https://github.com/kvz/bash3boilerplate) if you're writing BASH scripts and don't care about them running on systems that don't use BASH.

    It provides logging facilities with colour usage for the terminal (not for redirecting out to a file) and also decent command line parsing. It uses a great idea to specify the calling parameters in the help/usage information, so it's quick and easy to use and ensures that you have meaningful information about what parameters the script accepts.

    Also, please don't write shell scripts without running them through ShellCheck. The shell has so many footguns that can be avoided by correctly following its recommendations.

  14. ripgrep

    ripgrep recursively searches directories for a regex pattern while respecting your gitignore

  15. fd

    A simple, fast and user-friendly alternative to 'find'

  16. fzf

    :cherry_blossom: A command-line fuzzy finder

  17. shpy

    And only ever parse plain text once on the input from netstat. For your amusement/horror I present "ShPy": https://gitlab.com/tpmoney/shpy

  18. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Apple's Software Quality Crisis: When Premium Hardware Meets Subpar Software

    7 projects | news.ycombinator.com | 3 Mar 2025
  • fd - A simple, fast and user-friendly alternative to 'find'

    2 projects | news.ycombinator.com | 24 Sep 2024
  • Modern Java/JVM Build Practices

    9 projects | news.ycombinator.com | 4 Jan 2024
  • ripgrep is faster than {grep, ag, git grep, ucg, pt, sift}

    8 projects | /r/programming | 24 Mar 2023
  • Any Linux admins willing to try Pygrep?

    6 projects | /r/linuxadmin | 18 Mar 2023

Did you know that Go is
the 4th most popular programming language
based on number of references?