Uzyskaj wartość liczbową chmod dla pliku

100

W jaki sposób mogę uzyskać chmodwartość liczbową pliku we FreeBSD, a także w systemie Linux ? Na przykład 644zamiast -rw-r--r--? Potrzebuję automatycznego sposobu na skrypt Bash.

stefan.at.wpf
źródło

Odpowiedzi:

159

Możesz uzyskać wartość bezpośrednio, używając formatu wyjściowego statystyki, np. BSD / OS X:

stat -f "%OLp" <file>

lub w systemie Linux

stat --format '%a' <file>

i w busyboksie

 stat -c '%a' <file>
teppic
źródło
dzięki, wybrano jako odpowiedź, ponieważ była to pierwsza, a także wydaje się najprostsza :-) @seg_fault: stat -x TWÓJ_PLIK daje mi więcej niż tylko wartość trybu.
stefan.at.wpf
5
w busyboxużyciustat -c '%a' <file>
Stuart Cardall,
1
pojedyncze cudzysłowy nie są potrzebne i --formatmożna je skracać -c. Działa to:stat -c %a <file>
John, dlaczego
Potrzebowałem odpowiedzi busybox na Ubuntu, w przeciwnym razie 'stat: nie mogę odczytać informacji o systemie plików dla'% OLp ': Brak takiego pliku lub katalogu'
tofutim
7

używaj, stat YOUR_FILEchyba że napiszesz skrypt, który oblicza:

rwx rwx rwx ==> ( r = 4 ) if set + ( w = 2) if set + (x = 1) if set , for example:
You have :
-rw-wxrw- => (4+2+0)(0+2+1)(4+2+) = 0636 
First argument before 9 permissions is one of :
- = regular file
d =  directory
b = block device
c = character device
s = socket
p = pipe
f = fifo

Nawiasem mówiąc, używam stat commandna Linux box, nie freebsd, ponieważ bada HFSprawdopodobnie praca z UFS.

Zatoka Perska
źródło
Tak, znalazłem to poniżej FreeBSD box, użyj stat -x YOUR_FILEunderFreeBSD box
PersianGulf 1'12
stat -r YOUR_FILE |awk '{print $3}' daje twoją zgodę.
PersianGulf
polecenie pokazać przyjazny? nie tylko numer podobny 666 lub kody, -rw-wxrw- ale tekst z objaśnieniami dotyczącymi każdego pozwolenia.
Peter Krauss,
@PeterKrauss, lepiej napisać, awkaby pobrać wynik liczbowy.
PersianGulf,
Dzięki @PersianGulf. Hum ... Nie ma standardowej metody plug-and-play ....
Peter Krauss
2

Niektóre dodatkowe informacje na temat stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx
Mateen Ulhaq
źródło
jest stat -f %A file.txtpod Mac, zwróci 644 lub inny 3 cyfrowy numer.
Weijing Jay Lin
2

spróbuj to, aby wyświetlić listę wszystkich

stat --format "%a  %n" *
Hatem Badawi
źródło