
Show HN: Tiny Shell - skywalker212
https://github.com/skywalker212/tiny-shell
======
ChuckMcM
So are we supposed to grade it? :-)

More seriously though it is really useful for people who are going into
embedded or systems programming to write a command line interpreter at some
point in their studies. It blends a couple of disconnected courses (data
structures and parsing) into something tangible and useful.

I wonder if there is a good canonical list of chunks that you should be able
to create from a blank sheet of paper in order to demonstrate mastery of CS. I
would put an interpreter, a database, a CLI (shell), a compiler, a scheduler,
and a device driver as the list but there might be others.

~~~
sowbug
Competence might be a better label than mastery, which is a blue sky or a
bottomless pit, depending on your point of view.

Maybe add something to cover graph theory. But it's hard to think of a tool as
useful on a small scale (one person, not big data) as the ones you've named.

~~~
bla2
A simple build system fits the tools listed here and covers graphs. An NFA
regex matcher would cover it too.

------
sjellis
If people are interested in shells, three projects that you might find
interesting are:

* oilshell - An ambitious project to build a shell that is compatible with bash (to completely replace it), but also better. * xonsh - A Python shell * elvish - A modern re-imagining of the shell with objects and pipelines

~~~
blitmap
It's hard to understand everything that a shell encompasses (at least for me).
It's a language interpreter with a repl. The language is designed to make
running programs, working with output, passing arguments, etc... easy. It's
not [as] easy to do that in Python or C. We're used to Bash, and there are
some fun projects out there trying to modernize the experience of what you can
expect from a shell. Things like displaying images/previewing files, etc. I
also love the ones that try to reveal deeper information about a running
process - hooking into syscalls to show progress/completion/activity.

All very cool.

------
madrox
Ah yes, I remember doing this for my own systems class. Good times.

I never had to build another shell in my life, but the process I had to go
through to learn the OS well enough to build one gave me invaluable insights
for a future career in backend.

