Unix' style of command line handling is clearly inherited from GE's Multics, as much as its name is a play on Multics. This incudes the hypen (
-) as token. In Multics it was called a Control Argument. Multics itself may have inherited it from DECs TOPS-10, or more exact the PDP-6 Monitor program as it originally was called.
The popularity of Mutics at universities, together with many DEC installations at such places, can be seen as the major influence in next to all later systems.
Data Generals RDOS/AOS, in itself a child of DEC trained people (and DECs RSX-11 as direct competition) might have been the first to use a slash (
/) as token.
(I still think the Multics path seperator looks more natural
>etc>bin - too bad Unix diverted here)
Comparsion with Mainframes
Next to all modern mini- / micro-computer OS commandline uses spaces as seperators between arguments and a dedicated token to indicate parameter names, which can stand for themself (switches) i.e. have no value assigned.
command arg1 arg2 -name1 val -name2
In contrast mainframe cli/script environments are based arround comma (
,) seperated arguments where parameter names are seperated by an equal/assignment (
=) sign from their value. Enpty values revert usually to the same default as if not present, therefore whats a lone switch elsewhere must here be accompanied by a (legal) value to enable the option.
The mainframe style has some advantages due less ambiguity, but is often considerete bloaty. Technical not true. It's rather that mainframe command designers love to have nice redable names, so it does get lengthy ... then again, GNU style parameter lists can easy spread over multiple lines.