Yöntem # 1 - Stat
stat
Komutu 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 grep
grup 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 stat
farklı olduğundan , bu komutu bir lsb_release -a
komutta 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 find
ve printf
anahtarı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 @pv
ederek ve stat()
doğrudan çıktıyla uğraşarak bunu daha kompakt hale getirebilirsiniz :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664