ฉันมีปัญหาแปลก ๆ กับคำสั่งต่อไปนี้:
# 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 ./*