Di FreeBSD dan juga di Linux, bagaimana saya bisa mendapatkan nilai numerik chmod
suatu file? Misalnya, 644
bukan -rw-r--r--
? Saya perlu cara otomatis untuk skrip Bash.
Di FreeBSD dan juga di Linux, bagaimana saya bisa mendapatkan nilai numerik chmod
suatu file? Misalnya, 644
bukan -rw-r--r--
? Saya perlu cara otomatis untuk skrip Bash.
Jawaban:
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>
busybox
digunakanstat -c '%a' <file>
--format
dapat disingkat -c
. Ini bekerja:stat -c %a <file>
gunakan stat YOUR_FILE
kecuali 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 command
pada Linux box
, bukan freebsd
, karena itu menyelidiki HFS
mungkin bekerja dengan baik UFS
.
FreeBSD box
, gunakan di stat -x YOUR_FILE
bawahFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
berikan izin Anda.
666
atau kode -rw-wxrw-
tetapi teks dengan penjelasan tentang setiap izin.
awk
untuk mengambil kembali hasil numerik.
Beberapa informasi tambahan tentang stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
bawah mac, itu akan mengembalikan 644 atau 3 nomor digital lainnya.
coba ini untuk daftar semua
stat --format "%a %n" *