Implementing Tab AutoCompletion: Raw Modes, TTYs, and Input Handling

I recently took my first step into systems programming by building a shell, one of the most commonly used application by developers. A…