O que é uma maneira simples e padrão de linha de comando de fazer com que 'ls' produza permissão de arquivo em octal?

1

Qualquer um conhece uma maneira padrão, diferente de 'stat' para produzir saída octal para permissão de arquivo de 'ls'? A maneira padrão de usar stat (no OSX) é:

stat -f '%A %a %N' *

onde * pode ser qualquer padrão de arquivo que você normalmente usaria com ls .

Estou pensando em criar um alias com base em ls para usar de forma abreviada.

Existe outra maneira melhor de fazer isso?

    
por ashr 21.11.2011 / 23:00

2 respostas

4

Não crie um alias "ls-based". ls apenas não faz o que você está pedindo. Este é o trabalho de stat .

Se você não gostar do comando stat , poderá chamar a função stat() diretamente:

#include <stdio.h>
#include <sys/stat.h>
int main(int argc, char *argv[]) {
    int i;
    struct stat st;
    for (i = 1; i < argc; i++) {
        if (stat(argv[i], &st) < 0)
            perror("stat");
        else
            printf("%06o %s\n", st.st_mode, argv[i]);
    }
    return 0;
}
#!/usr/bin/env perl
printf("%06o %s\n", (stat($_))[2], $_) for @ARGV
#!/usr/bin/env ruby
ARGV.each do |f|
    printf "%06o %s\n", File::stat(f).mode, f
end
#!/usr/bin/env python
import os, sys
for f in sys.argv[1:]:
    sys.stdout.write("%06o %s\n" % (os.stat(f).st_mode, f))
#!/usr/bin/env php
<?php
for ($i = 1; $i < $argc; $i++)
    printf("%06o %s\n", fileperms($argv[$i]), $argv[$i]);
#!/usr/bin/env tclsh
foreach file $argv {
    file stat $file st
    puts [format "%06o %s" $st(mode) $file]
}
    
por 22.11.2011 / 00:12
2

Use stat em vez disso ou junto com ls . Você pode alterar o formato de saída do stat se quiser se parecer com a saída ls. Por exemplo:

find directory -maxdepth 1 -print0 | xargs -0 stat --format='%a %n'

Se você gostaria de vê-lo exatamente como saída ls então deve ser algum script já (awk, perl, etc). Ele pode ser definido como uma função em seu shell ou salvo como um script em algum diretório em seu PATH e você poderia usá-lo como uma substituição de comando ls. Depende das suas necessidades como é semelhante ao ls (processamento de opções de linha de comando, etc)

    
por 22.11.2011 / 09:10