ฉันมีปัญหาแปลก ๆ กับคำสั่งต่อไปนี้:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
คำสั่งไม่ใช่นามแฝง
# type chown
chown is hashed (/bin/chown)
ฉันจะดูเพิ่มเติมที่ไหน
ฉันมีปัญหาแปลก ๆ กับคำสั่งต่อไปนี้:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
คำสั่งไม่ใช่นามแฝง
# type chown
chown is hashed (/bin/chown)
ฉันจะดูเพิ่มเติมที่ไหน
คำตอบ:
ในฐานะที่เป็น glob (ชื่อพา ธ ) การขยายตัวจะทำครั้งแรกโดยเปลือกก่อนที่chownวิ่งรูปแบบ glob *มีการขยายไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันเป็นครั้งแรกและchownจะได้รับเหล่านั้นเป็นตัวเลือกและข้อโต้แย้งของ คุณมีไฟล์ในไดเรกทอรีปัจจุบันที่เริ่มต้นด้วย-iเหตุนี้จึงchownถือว่าเป็นตัวเลือกไม่ใช่อาร์กิวเมนต์ (ชื่อไฟล์)
คุณต้องใช้--เพื่อระบุตัวเลือกสุดท้ายสำหรับchown:
chown -R myuser:mygroup -- *
หรือนำหน้ารูปแบบ glob ( *) พร้อม./เพื่อระบุอย่างชัดเจนว่าเป็นอาร์กิวเมนต์:
chown -R myuser:mygroup ./*
chown -R myuser:mygroup ./*มันแยกมันเข้าไปchown, -R, myuser:mygroup, ./*แล้วแทนที่รูปแบบ glob กับเส้นทางระบบแฟ้มที่สอดคล้องกันเช่น chown, -R, myuser:mygroup, ./-index.html, ,./favicon.ico ./My -ve Numbersเนื่องจาก chown ค้นหาเฉพาะอักขระแรกที่เป็นเส้นประเมื่อค้นหา args ตัวเลือกมันจะเข้าใจว่าเป็น args ตำแหน่ง
ปัญหาคือไฟล์ชื่อ-index.phpในโฟลเดอร์ดังนั้น chown ตีความว่ามันเป็นตัวเลือกบรรทัดคำสั่ง
วิธีการแก้ปัญหาคือการใช้ยัติภังค์สองครั้ง chown -R myuser:mygroup -- *
chown -R myuser:mygroup ./*