วิธีที่ # 1 - สถิติ
คุณสามารถใช้stat
คำสั่งเพื่อรับบิตสิทธิ์ stat
สามารถใช้ได้กับ Unixes ส่วนใหญ่ (OSX, BSD, ไม่ใช่ AIX จากสิ่งที่ฉันสามารถหาได้) สิ่งนี้ควรใช้กับยูนิกซ์ส่วนใหญ่ยกเว้น OSX & BSD จากสิ่งที่ฉันสามารถหาได้
$ stat -c "%a" <file>
ตัวอย่าง
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
ใช้คำสั่งนี้:
$ stat -c "%a" afile.txt
664
และใช้ง่ายgrep
เพื่อดูว่าโหมดการอนุญาตกลุ่มคือ 6 หรือ 7
$ stat -c "%a" afile.txt | grep ".[67]."
สำหรับ OSX และ BSD คุณจะต้องใช้แบบฟอร์มนี้stat
, stat -f
(หรืออาจจะstat -x
) และแยกตาม เนื่องจากตัวเลือกstat
ต่าง ๆ คุณสามารถรวมคำสั่งนี้ในlsb_release -a
คำสั่งและเรียกใช้เวอร์ชันที่เหมาะสมตามระบบปฏิบัติการ ไม่เหมาะ แต่ใช้การได้ ตระหนักว่าlsb_release
มีให้สำหรับ Linux distrosเท่านั้นดังนั้นจึงจำเป็นต้องมีทางเลือกอื่นสำหรับการทดสอบระบบปฏิบัติการ Unix อื่น ๆ
วิธีที่ # 2 - ค้นหา
ฉันคิดว่าคำสั่งนี้อาจให้บริการคุณดีกว่า ฉันใช้find
และprintf
สวิตช์
ตัวอย่าง
$ find a -prune -printf '%m\n'
664
วิธี # 3 - Perl
Perl อาจเป็นวิธีที่พกพาได้มากกว่านี้ขึ้นอยู่กับระบบปฏิบัติการที่คุณพยายามจะครอบคลุม
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
หมายเหตุ:ข้างต้นใช้ประโยชน์จากstat()
ฟังก์ชั่นของ Perl เพื่อสอบถามบิตระบบไฟล์
คุณสามารถทำให้ขนาดกะทัดรัดมากขึ้นโดยการใช้อาร์เรย์@pv
และจัดการกับผลลัพธ์ของstat()
โดยตรง:
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664