How often have you used a UI like this?
/==========================\ | 1. List files | | 2. Show the current time | | 3. Show Top | | 4. Quit | \==========================/ Enter your selection:
Even if you are a banker, travel agent or a medical doctor I would argue never. These groups are unfortunate enough to still have to use arcane command line interfaces to do unspeakably complex things like recording last week’s hours or reserve a ticket to your home town. But none of these systems are razor thin wrappers for simple shell tools – they are that way because they are really hard to replace. And more importantly, no employer is ever going to ask anyone to make a menu based command line UI for their shell script. It just doesn’t happen anymore. It is not a valuable skill. ASCII art is recreation, not work. So the time spent fiddling with
read is wasted, and could be put to better use.
There are many generally applicable skills you can teach shell newbies:
- The Unix philosophy: writing programs that do one thing, that work with other programs, and that handle text streams. An hour of cobbling together a pipeline of
cutand a light sprinkling of
sedcan save days or weeks of data processing which might take a week to write in Python or six months in a spreadsheet.
- On the flip side, they should know the limitations of the shell. Why
while readis several orders of magnitude slower than other language equivalents. Why writing secure shell scripts is basically impossible. Or why big shell scripts are a maintenance nightmare compared to other languages.
- Which tools are available to do what. There are so many useful tools you could probably spend a week full time just touching briefly on each of them. Check out for example BusyBox for a set of generally available tools.
- Where to look for answers and how to ask good questions.