FreeBSD'de ve ayrıca Linux'ta chmod
bir dosyanın sayısal değerini nasıl alabilirim ? Örneğin, 644
yerine -rw-r--r--
? Bash senaryosu için otomatik bir yola ihtiyacım var.
FreeBSD'de ve ayrıca Linux'ta chmod
bir dosyanın sayısal değerini nasıl alabilirim ? Örneğin, 644
yerine -rw-r--r--
? Bash senaryosu için otomatik bir yola ihtiyacım var.
Yanıtlar:
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>
busybox
kullanımstat -c '%a' <file>
--format
kısaltılabilir -c
. Bu çalışır:stat -c %a <file>
stat YOUR_FILE
hesaplayan 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 box
değil, freebsd
o araştırmak, çünkü HFS
çalışmak muhtemelen UFS
.
FreeBSD box
, kullanım stat -x YOUR_FILE
altındaFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
izin verir
666
veya kod -rw-wxrw-
değil, her izinle ilgili açıklama içeren bir metin.
awk
sayısal sonucu almak için bir yazmak daha iyidir .
Bazı ek bilgiler stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
mac altında, bu 644 ya da başka bir 3 dijital numara dönecekti.
hepsini listelemek için bunu dene
stat --format "%a %n" *