Есть правило: если параметр однобуквенный, то используется одинарное тире, а если длиннее (слово), то двойное тире. Но это правило не везде соблюдается.
Ещё в некоторых командах двойное тире означает остановку обработки входных параметров.
Ещё одинарное тире обычно служит индикатором использования стандартного ввода (stdin) вместо файла.
Но при этом cd -
это переход в предыдущую директорию.