Yöntem # 1 - Stat
statKomutu izin bitlerini almak için kullanabilirsiniz . statçoğu Unix'te (OSX, BSD, bulabildiğim AIX değil) kullanılabilir. Bu, bulabildiğimden OSX ve BSD hariç, çoğu Unix'de çalışmalıdır.
$ stat -c "%a" <file>
Misal
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Bu komutu kullanın:
$ stat -c "%a" afile.txt
664
Ve grepgrup izinleri modunun 6 mı yoksa 7 mi olduğunu görmek için bir basit kullanın.
$ stat -c "%a" afile.txt | grep ".[67]."
OSX ve BSD için, bu formu kullanmanız gerekir stat, stat -f(ya da belki stat -x) ve buna göre ayrıştırmak. Seçenekler statfarklı olduğundan , bu komutu bir lsb_release -akomutta sarabilir ve işletim sistemine bağlı olarak uygun sürümü çağırabilirsiniz. İdeal değil ama uygulanabilir. Bunun yalnızca Linux dağıtımları için kullanılabilir olduğunu unutmayın lsb_release, bu nedenle diğer Unix OS'leri test etmek için başka bir alternatifin tasarlanması gerekir.
Yöntem # 2 - Bul
Bu komutun size daha iyi hizmet edebileceğini düşünüyorum. Ben yararlanır findve printfanahtarını.
Misal
$ find a -prune -printf '%m\n'
664
Yöntem # 3 - Perl
Perl, kapsamaya çalıştığınız işletim sistemlerine bağlı olarak bunu yapmanın daha taşınabilir bir yolu olabilir.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
Not: Yukarıdaki stat()dosya sistemi bitlerini sorgulamak için Perl işlevini kullanır.
Bir dizi kullanarak devam @pvederek ve stat()doğrudan çıktıyla uğraşarak bunu daha kompakt hale getirebilirsiniz :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664