Широкого стандарту немає. Наприклад, в програмах GNU є певна послідовність, але вам потрібно перевірити документацію кожної програми.
Цитуючи Вікіпедію , моє наголос:
У системах, схожих на Unix, дефіс ASCII-мінус зазвичай використовується для визначення параметрів. За символом зазвичай супроводжується одна або кілька літер . Аргумент, який є єдиним дефісом-мінусом сам по собі без будь-яких літер, зазвичай вказує, що програма повинна обробляти дані, що надходять зі стандартного вводу, або надсилати дані на стандартний вихід. У деяких програмах два символи дефісу (-) використовуються для вказівки "довгих опцій", де використовуються більш описові назви опцій . Це загальна особливість програмного забезпечення GNU.
Зазвичай дефіси вказують на попередньо визначений аргумент. Я думаю, що використовується для їх розмежування, наприклад, назви файлів чи інших міток, які ви можете використовувати як аргументи. Це не завжди так (див. Нижче).
Часто ви знайдете один і той же аргумент, як короткий, так і довгий варіант, наприклад, у ls .
Деякі програми використовують один дефіс для односимвольних варіантів та два дефіси для багатозначних варіантів, але не всі (GNU findприходить на думку). Деякі програми мають необов'язкові дефіси або взагалі пропускають їх ( tarабо psна думку BSD ).
Іноді довгі параметри ( --foo) вимагають аргументів, тоді як короткі параметри ( -f) не (або принаймні передбачають конкретний аргумент за замовчуванням).
Короткі параметри (наприклад cut -d ' ') можуть мати аргументи, тоді як довгі варіанти (наприклад ls --all) не обов'язково їх мають.
Щоб встановити певну поведінку програми, іноді потрібно використовувати короткий варіант, для інших потрібно скористатися довгим варіантом, а для деяких - вибір.
У відповідній примітці деякі програми не обробляють пробіл між опцією та її аргументом , а інші не можуть.
Як я писав на початку, просто немає загальної поведінки чи стандарту. Часто ви можете простежити подібну поведінку до тієї ж бібліотеки, що використовується для розбору аргументів, але ви, мабуть, не хочете читати джерела, щоб дізнатися це.
Ви дійсно не можете зробити синтаксис аргументів однієї програми з іншого.
Якщо ви також вважаєте Windows, це стає ще гіршим: хоча виклики командного рядка Windows традиційно використовують /f(принаймні більшу частину часу, одиночні символи) для опцій, з :роздільником між параметрами та їх значенням (див., Наприклад, тут ); крос-платформні утиліти широко розповсюджені (наприклад, ті, які ви згадуєте), і містять більш поширений дефіс синтаксис аргументів, з усіма невідповідностями, згаданими вище.
-iпроти--inputабо-n--dry-run.