Do
not captivate the User Interface. Follow
Unix_philosophy
The "user-friendly" functions you mentioned are not friendly at all to power-users -- you're just reinventing the shell :) For instance, some users may not like you to decide how command completion is done for them. Instead, think of how a user's existing shell can work
for your program.
If you're writing the program for Grandma(TM), first, make sure your program works well in batch-mode. Then, write a GUI front-end that calls your original program. It's more modular this way, maximizes reuse of your core program, and eases future extensions.