Metode # 1 - stat
Anda bisa menggunakan statperintah untuk mendapatkan bit izin. stattersedia 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 grepuntuk 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 statberbeda, Anda dapat membungkus perintah ini dalam sebuah lsb_release -aperintah dan memanggil versi yang sesuai berdasarkan OS. Tidak ideal tetapi bisa diterapkan. Sadarilah bahwa lsb_releaseini 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 finddan printfberalih.
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