какая разница с запятой или без нее?
Никто. Используйте короткий или длинный вариант, запятая не имеет значения.
В моем Kubuntu я скопировал файлы из /usr/share/man/man1
и /usr/share/man/man8
, распаковал, продезинфицировал (удалил пух) и искал с помощью регулярных выражений параметры без запятой. Я просмотрел результаты, осмотрел несколько "подозрительных" файлов. Мои выводы (эвристические, не строгие):
- Относительно немного руководств используют стиль без запятой.
- Те, которые редко смешивают это со стилем с запятой.
man stat
использует no-comma только для -c --format
, вероятно, это просто опечатка.
как я могу научиться такого рода вещи?
Мой путь: знакомясь с. Справочные страницы предназначены для людей; большинство людей (даже ботаников) могут справиться с нечеткими шаблонами, опечатками, небольшими несоответствиями или исключениями. Некоторые руководства настолько огромны (man 1 bash
) или требуют работы с абстрактными понятиями (man 5 sudoers
), поэтому они более формальны; но когда вам нужно решить конкретную проблему, вы редко изучаете все руководство, вы ищете примеры. Таким образом, вы экспериментируете, адаптируете доступные примеры, пишете команды, которые не работают, пишете команды, которые работают, сравниваете все, что работает с документацией.
И тогда вы начинаете знать эти нечеткие соглашения. Вы полагаетесь на правило наименьшего сюрприза, вы ожидаете увидеть несколько коротких опционов, эквивалентных некоторым длинным опционам. Вы даже не замечаете, что некоторые руководства пропускают запятые. Вы видите, что man stat
противоречива только потому, что недостающая запятая выделяется визуально; Вы пожимаете плечами и продолжаете ...
... потому что вы знакомы с некоторыми другими руководствами, которые явно предупреждают вас об удивительном синтаксисе, если таковой имеется; и вы думаете, это здорово, что их авторы сделали такую хорошую вещь.
Но даже если бы была разница с запятой или без, насколько это может иметь значение? поскольку
- вы запускаете
stat -c '%n' /
и получаете /
что ожидается;
- вы запускаете
stat --format='%n' /
и получаете тот же результат;
но
- вы запускаете
stat -c --format='%n' /
и получаете --format=/
.
Боюсь, я мог упустить некоторые простые детали.
Сравните это со случаем многоточия в меню инструментов GUI. Знаете ли вы, что многие приложения используют многоточие (…
) для обозначения пунктов меню, которые не предпринимают немедленных действий? Например, Print…
создает дополнительное окно, в котором вы можете что-то изменить, прежде чем приступить к фактической печати, или вы можете отменить; в таком приложении Print
(без многоточия) печатается сразу.
Я эффективно использовал инструменты с графическим интерфейсом в течение нескольких лет, прежде чем узнал, что означает многоточие. Это было случайно, я прочитал некоторые пустяки, и только тогда я заметил, что многоточие есть (и "всегда" было) там. Теперь я знаю, что любой пункт меню с многоточием "безопасен", он должен дать мне возможность отменить.
Моя точка зрения такова: такая деталь может что-то значить, она может быть весьма полезной (поэтому вы задали разумный вопрос); но если вы можете заставить stat
делать то, что вы хотите (и если я могу использовать меню, чтобы получить то, что я хочу), то упускание деталей не имеет большого значения.