Dapatkan nilai numerik chmod untuk file


100

Di FreeBSD dan juga di Linux, bagaimana saya bisa mendapatkan nilai numerik chmodsuatu file? Misalnya, 644bukan -rw-r--r--? Saya perlu cara otomatis untuk skrip Bash.

Jawaban:


159

Anda bisa mendapatkan nilai secara langsung menggunakan format output stat, misalnya BSD / OS X:

stat -f "%OLp" <file>

atau di Linux

stat --format '%a' <file>

dan di kotak sibuk

 stat -c '%a' <file>

terima kasih, dipilih sebagai jawaban karena itu yang pertama dan juga tampaknya yang paling sederhana :-) @seg_fault: stat -x YOUR_FILE memberi saya lebih dari sekadar nilai mode.
stefan.at.wpf

5
sedang busyboxdigunakanstat -c '%a' <file>
Stuart Cardall

1
Kutipan tunggal tidak diperlukan, dan --formatdapat disingkat -c. Ini bekerja:stat -c %a <file>
Johnny mengapa

Saya memerlukan jawaban busybox di Ubuntu, jika tidak 'stat: tidak dapat membaca informasi sistem file untuk'% OLp ': Tidak ada file atau direktori'
tofutim

7

gunakan stat YOUR_FILEkecuali tulis skrip yang menghitung:

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

By the way, saya gunakan stat commandpada Linux box, bukan freebsd, karena itu menyelidiki HFSmungkin bekerja dengan baik UFS.


Ya, saya menemukannya di bawah FreeBSD box, gunakan di stat -x YOUR_FILEbawahFreeBSD box
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' berikan izin Anda.
PersianGulf

perintah untuk menunjukkan ramah? tidak hanya nomor suka 666 atau kode -rw-wxrw- tetapi teks dengan penjelasan tentang setiap izin.
Peter Krauss

@ PeterKrauss, Lebih baik menulis sebuah awkuntuk mengambil kembali hasil numerik.
PersianGulf

Terima kasih @PersianGulf. Hum ... Tidak ada cara standar plug-and-play ....
Peter Krauss

2

Beberapa informasi tambahan tentang stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

itu di stat -f %A file.txtbawah mac, itu akan mengembalikan 644 atau 3 nomor digital lainnya.
Weijing Jay Lin

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.