Почему между ключом в утилите и параметром не ставится пробел?

Часто вижу что между ключом и его значением не ставится пробел. Почему так делают? Это какой то особый стиль?

Приведу пример: head -n1 example.com.log


Ответы (1 шт):

Автор решения: eri

Из-за упрощенной обработки аргументов. В функцию main() сишных программ передается массив из позиционных аргументов:

int main(int argc, char *argv[])

В каждом элементе массива кусочек строки разделенный пробелом. Проходим циклом - сравнили первые 2 символа -n - хвост сохранили - готово.

Для простых программ, а все старые программы простые, проще написать инструкцию чтоб аргументы были слитно чем писать парсер с синтаксическим разбором.

→ Ссылка