Learning Rust by rebuilding Linux utilities (no AI). What should I watch out for?

62 points MrViking2k19 39 comments

I'm starting a personal learning project called owl-utils.

The goal is to build a modern Linux toolbox by gradually implementing utilities like cat, ls, tree, du, find, grep, ps and top behind one consistent CLI, configuration format, query language and human/JSON/JSONL output.

UX-wise I'm taking inspiration from projects like bat, eza, Nushell and Fish, while still keeping each utility focused on doing one job well.

I'll start with `owl cat` and build one command at a time so I don't overengineer it.

I'm deliberately doing this as a learning project without AI, just me, the compiler, the documentation and hopefully a lot of mistakes I'll learn from. 😄

For those of you who've written CLI tools or replacements for coreutils: are there any pitfalls, gotchas or design mistakes you wish you'd known before you started?

Also should I write everything from scratch or use the proper crates instead? My opinion is I should use crates because that's the industry standard but a friend suggested I should build everything from scratch to get a deeper understanding of how everything works. Not quite sure yet.