This is the sort of approach that the 'Understanding Unix/Linux Programming' [1] book takes - building common unix utilities in order to introduce systems programming concepts. IMO, it's a good starter for meatier material in Richard Stevens books.
For those interested in this sort of thing, Harvard Extension School offers a course based off of the 'Understanding Unix/Linux Programming' text taught by the author (http://sites.fas.harvard.edu/~lib215/). I took it a few years ago and found it worthwhile...
As a learning experience this is a great idea. I think, however, that it would be really useful to note, when applicable, what standard UNIX tool just does a job for you (and presumably learning that tool, too)---about 1/3 of these are either completely handled by a standard tool or easily handled with a bash one-liner, and knowing when not to reinvent the wheel is often most of the battle. :) (I realize that in the…
I don't think the purpose of this is to actually have the tools, it's to go through the mental process of creating them. Similarly, writing compilers in Scheme for every language under the sun may not be the best way to get to produce production strength compilers, but it's a great way to learn languages.