Синтаксис командной строки может быть easy-to-write или easy-to-read. Обычно это несовместимо. Например, пусть foo — какой-то архиватор. Классическая UNIX-овая командная строка могла бы выглядеть так:
foo -abc -d d_arg -e 42 -i infile -o outfile
(Конечно, -abc это сокращение для -a -b -c.) Но мы видим, что дефис тут бесполезен, поэтому наиболее easy-to-write вариант будет а-ля
foo abcd d_arg e 42 i infile o outfile
Эту команду легко и быстро написать в шелле, но трудно понять, что она делает, без чтения мана. (Да и записать быстро и легко можно только если эта программа знакомая, иначе придётся читать ман всё равно.)
С другой стороны, наиболее easy-to-read вариант может быть типа
foo -overwite +make-backup method lzma level 42 from infile to outfile
(Префикс + и - перед опцией включает или выключает её соответственно.) Команда читается почти как английский текст. Синтаксис также легко запоминаем (разок man прочитаем и хватит). Но этот вариант требует бОльшего времени, чтобы набрать его в шелле.
Короче, какой вариант синтаксиса лучше для консольных программ? И почему.