Resposta curta :
Porque está programado para ignorar múltiplos usos de um sinalizador.
Resposta longa:
Como você pode ver no código-fonte de ls
, existe uma parte com a função getopt_long()
e um grande switch case:
1648 int c = getopt_long (argc, argv,
1649 "abcdfghiklmnopqrstuvw:xABCDFGHI:LNQRST:UXZ1",
1650 long_options, &oi);
....
1654 switch (c)
1655 {
....
1707 case 'l':
1708 format = long_format;
1709 break;
....
1964 }
A função getopt_long()
lê todos os parâmetros fornecidos ao programa. No caso, se -l
a variável format
estiver definida. Portanto, quando você digitar vários -lllllllll
, essa variável será definida várias vezes, mas isso não alterará nada.
Bem, isso muda uma coisa. Essa declaração de maiúsculas e minúsculas deve executar várias vezes, devido a vários -l
sinalizadores. ls
precisa de mais tempo para ser concluído com vários -l
flags. Mas desta vez não vale a pena mencionar. =)