Почему кошка не использует опции путем, я ожидаю, что программы UNIX будут использовать переключатели?

Я был пользователем UNIX в течение большего количества лет, чем я хочу думать о, и в то время я был обучен ожидать это, когда противоречащие переключатели даны программе последние победы. Недавно я заметил это

cat -bn file

и

cat -nb file

оба используют -b опция (непустые строки числа) по -n опция (число все строки). Я получаю это поведение и на BSD и на Linux, таким образом, я не думаю, что это - причуда реализации. Это - что-то, что указано где-нибудь, и я являюсь просто сумасшедшим для ожидания, что первый пример нумерует все строки?

4
задан 29.07.2015, 13:46

2 ответа

Я смотрел на исходный код FreeBSD для кошки (1), и соответствующие исходные строки:

case 'b':
    bflag = nflag = 1;  /* -b implies -n */

Таким образом, это похоже на преднамеренное проектное решение; интерпретация -b это, это изменяет поведение -n, вместо -b и -n будучи двумя взаимоисключающими альтернативами.

5
ответ дан 07.12.2019, 20:10

Большинство системных команд пользуется стандартной библиотекой C getopt (3) или некоторое изменение и анализирует опции слева направо. Так, как Вы наблюдали, продлиться каждый побеждает.

1
ответ дан 07.12.2019, 20:10

Теги

Похожие вопросы