The Unix command line probably started off small and clean until the real world intruded and commands needed slight variations. Then arguments, parameters, redirections expansions, expressions, and all that other stuff was added as a necessary evil.