Bir dosya için chmod sayısal değerini alın


100

FreeBSD'de ve ayrıca Linux'ta chmodbir dosyanın sayısal değerini nasıl alabilirim ? Örneğin, 644yerine -rw-r--r--? Bash senaryosu için otomatik bir yola ihtiyacım var.

Yanıtlar:


159

Değeri doğrudan bir stat çıktı formatı kullanarak elde edebilirsiniz, örneğin BSD / OS X:

stat -f "%OLp" <file>

veya Linux'ta

stat --format '%a' <file>

ve meşgul kutusunda

 stat -c '%a' <file>

teşekkürler, cevap olarak seçildi, çünkü birinciydi ve aynı zamanda en basit olanı gibi görünüyor :-) @seg_fault: stat -x YOUR_FILE bana sadece mod değerinden fazlasını verir.
stefan.at.wpf

5
içinde busyboxkullanımstat -c '%a' <file>
Stuart Cardall

1
tek tırnaklara gerek yoktur ve --formatkısaltılabilir -c. Bu çalışır:stat -c %a <file>
johny neden

Ubuntu'da meşgul kutusu cevabına ihtiyacım vardı, aksi halde 'stat:'% OLp 'için dosya sistemi bilgilerini okuyamıyor: böyle bir dosya ya da dizin yok'
tofutim

7

stat YOUR_FILEhesaplayan yazma komut dosyası sürece kullanın :

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

Bu arada, kullandığım stat commandüzerine Linux boxdeğil, freebsdo araştırmak, çünkü HFSçalışmak muhtemelen UFS.


Evet, altında buldum FreeBSD box, kullanım stat -x YOUR_FILEaltındaFreeBSD box
Basra Körfezi

stat -r YOUR_FILE |awk '{print $3}' izin verir
PersianGulf 19:

dost göstermek emri? sadece bir sayı 666 veya kod -rw-wxrw- değil, her izinle ilgili açıklama içeren bir metin.
Peter Krauss

@PeterKrauss, awksayısal sonucu almak için bir yazmak daha iyidir .
PersGulf

@PersianGulf'a teşekkürler. Hum ... Tak ve çalıştır standart yolu yok ....
Peter Krauss

2

Bazı ek bilgiler stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

öyle stat -f %A file.txtmac altında, bu 644 ya da başka bir 3 dijital numara dönecekti.
Weijing Jay Lin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.