in reply to how to make a good interface?

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.