Qual é mais eficiente, ls ou ls -l?

7

Pelo que entendi, o comando ls chama getdents , que retorna um número x de entradas de diretório. Existem outras chamadas de sistema envolvidas? Se eu executar ls -l , existem mais chamadas do sistema? Eu estou tentando determinar se ls -l é mais caro e, portanto, mais lento que ls .

    
por user100503 06.08.2014 / 21:42

2 respostas

15

/bin/ls geralmente classifica a saída. Eu não tenho certeza se sua pergunta "eficiente" é apenas sobre as chamadas do sistema ou o trabalho todo que é feito, mas /bin/ls -f provavelmente faria o mínimo trabalho. Apenas retorna os nomes dos arquivos na ordem dos diretórios. Nenhuma classificação, nenhuma pesquisa de inode adicional para obter metadados (como ls -l faria).

Além disso, se o seu padrão ls estiver colorindo, ele pode estar fazendo o equivalente a ls -l de qualquer maneira, para que ele possa dizer como colorir a saída.

    
por 06.08.2014 / 23:30
13

ls -l é definitivamente mais caro, pois ele precisa consultar o sistema de arquivos em busca de metadados como proprietário, grupo, permissões, tempo de acesso, etc. Baunilha /bin/ls só precisa procurar os nomes das entradas no diretório que está sendo listado.

Observe que ls pode ter um alias em seu sistema com algo menos baunilha do que /bin/ls . Execute type ls para ver se é esse o caso.

    
por 06.08.2014 / 21:55