สคริปต์นี้จะทำเคล็ดลับ (ฉันเรียกว่าสคริปต์ สถานะไฟล์
- วางไว้ในเส้นทางของคุณ):
#!/bin/bash
# วนซ้ำในแต่ละอาร์กิวเมนต์
สำหรับไฟล์ใน "$@"; ทำ
perm_type=('ผู้ใช้' 'กลุ่ม' 'อื่นๆ')
(( ญ = 0 ))
# ตรวจสอบว่ามีไฟล์อยู่หรือไม่
ถ้า [[ -e "$file" ]]; แล้ว
#พิมพ์ชื่อไฟล์
echo -e "\nชื่อไฟล์: $file"
# แยกสิทธิ์ octet
perm_octet=$( stat -c "%a %n" "$file" | ตัด -d ' ' -f 1 )
# เพิ่มแต่ละค่าของ octet ไปยังอาร์เรย์
perm_array=()
สำหรับ (( i = 0; i < "${#perm_octet}"; i++ )); ทำ
perm_array+=("${perm_octet:$i:1}")
เสร็จแล้ว
# วนซ้ำในอาร์เรย์
สำหรับ x ใน "${perm_array[@]}"; ทำ
# พิมพ์ประเภทการอนุญาตและเพิ่มตัวนับ
echo -n "สิทธิ์ ${perm_type[$j]}: "
(( j++ ))
# ตรวจสอบว่าการอนุญาตเป็นศูนย์ (ไม่มี) พิมพ์และเริ่มการทำซ้ำครั้งต่อไป
ถ้า (( "$x" == 0 )); แล้ว
ก้อง "ไม่มี"
ดำเนินต่อ
ไฟ
# ตรวจสอบว่าสิทธิ์มี "อ่าน" พิมพ์และลบ 4
ถ้า (( "$x" > 3 )); แล้ว
เสียงสะท้อน -n "อ่าน"
(( x = x - 4 ))
ไฟ
# ตรวจสอบว่าสิทธิ์มี "เขียน" พิมพ์และลบ 2
ถ้า (( "$x" > 1 )); แล้ว
echo -n "เขียน"
(( x = x - 2 ))
ไฟ
# ตรวจสอบว่าสิทธิ์มี "ดำเนินการ" พิมพ์และลบ 1
ถ้า (( "$x" > 0 )); แล้ว
echo -n "ดำเนินการ"
(( x = x - 1 ))
ไฟ
เสียงก้อง ""
เสร็จแล้ว
ไฟ
เสร็จแล้ว
แก้ไข: รับไฟล์จำนวนเท่าใดก็ได้เป็นอินพุต และตรวจสอบว่ามีไฟล์อยู่หรือไม่ ตัวอย่างเอาต์พุต:
$filestat ~/.bashrc ~/.config
ชื่อไฟล์: /home/am/.bashrc
สิทธิ์ของผู้ใช้: อ่านเขียน
การอนุญาตกลุ่ม: อ่านเขียน
การอนุญาตอื่น ๆ : อ่าน
ชื่อไฟล์: /home/am/.config
สิทธิ์ของผู้ใช้: อ่าน เขียน ดำเนินการ
การอนุญาตกลุ่ม: ไม่มี
การอนุญาตอื่นๆ: ไม่มี