Posix
https://github.com/dylanaraps/pure-sh-bible https://github.com/gigamonkey/monorepoize
tui everything interactive grep with query ui and fuzzy search make JSON greppable command line hex viewer command line benchmarking tool automated image compression for distributing images wikipedia summaries from the command line
automate command line text processing just: simple command runner terminal file manager
watch cmd in linux https://ban.ai/multics/ http://shell.cs.pomona.edu/shtepper http://wiki.c2.com/?GreenspunsTenthRuleOfProgramming https://christine.website/blog/why-i-use-suckless-tools-2020-06-05 posix 'anti-web' framework Unix is my IDE
a full ACME protocol implemented in shell Web
https://gist.github.com/katef/59450aa622315bd35fc27bd383c2dbe6#file-life-utf8-c C and C++ fun ideas for pranks at the shell, and https://github.com/mathiasbynens/evil.sh
https://news.ycombinator.com/item?id=24256883 portable executables!
unix shell programming: the next 50 years
src and discussion
The good
Universal language for interoperability
Works with anything and is a medium between anything
Incredibly expressive (and often efficient) EDSL for stream processing
Interactive environment for interacting with the computer
bad
insane specification that isn't implemented correctly in any shell, not even worth diving into
too arbitrary - it has infinite flexibility and that prevents it from doing anything
too dynamic - everything in a shell script is dependent on global state, which prevents any form of optimization or program change
performance cannot scale because it cannot be optimized
Future
- Smoosh
fully formalize and implement the posix shell, showing differences between specifications across semantics
- PaSH/POSH
annotation languages as a high level specification interface for interactive programs, can be used as abstract models for command behaviors! This allows for better system specification that can actually be enforced (thinking of tools like Alloy here!)
- static reasoning
previous bullets name annotation languages that give us information about the shell - why not dynamically rewrite and inspect every shell command?