Metode # 1 - stat
Anda bisa menggunakan stat
perintah untuk mendapatkan bit izin. stat
tersedia di sebagian besar Unix (OSX, BSD, bukan AIX dari apa yang dapat saya temukan). Ini seharusnya berfungsi pada sebagian besar Unix, kecuali OSX & BSD dari apa yang dapat saya temukan.
$ stat -c "%a" <file>
Contoh
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Gunakan perintah ini:
$ stat -c "%a" afile.txt
664
Dan gunakan sederhana grep
untuk melihat apakah mode izin grup adalah 6 atau 7.
$ stat -c "%a" afile.txt | grep ".[67]."
Untuk OSX dan BSD Anda harus menggunakan bentuk stat
, stat -f
(atau mungkin stat -x
), dan menguraikannya. Karena opsi stat
berbeda, Anda dapat membungkus perintah ini dalam sebuah lsb_release -a
perintah dan memanggil versi yang sesuai berdasarkan OS. Tidak ideal tetapi bisa diterapkan. Sadarilah bahwa lsb_release
ini hanya tersedia untuk distro Linux sehingga alternatif lain perlu dirancang untuk menguji OS Unix lainnya.
Metode # 2 - temukan
Saya pikir perintah ini mungkin melayani Anda dengan lebih baik. Saya menggunakan find
dan printf
beralih.
Contoh
$ find a -prune -printf '%m\n'
664
Metode # 3 - Perl
Perl mungkin cara yang lebih portabel untuk melakukan ini tergantung pada OS yang Anda coba untuk menutupi.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
CATATAN: Di atas menggunakan stat()
fungsi Perl untuk meminta bit filesystem.
Anda dapat membuat ini lebih kompak dengan tidak menggunakan array @pv
,, dan berurusan dengan output stat()
secara langsung:
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664