chown: ตัวเลือกที่ไม่ถูกต้อง - 'i' ลอง 'chown --help' สำหรับข้อมูลเพิ่มเติม


15

ฉันมีปัญหาแปลก ๆ กับคำสั่งต่อไปนี้:

# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.

คำสั่งไม่ใช่นามแฝง

# type chown
chown is hashed (/bin/chown)

ฉันจะดูเพิ่มเติมที่ไหน


1
คุณสามารถลองchown -R myuser:mygroup ./*
กริช

คำตอบ:


28

ในฐานะที่เป็น 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 ตำแหน่ง
Jim Driscoll

7

ปัญหาคือไฟล์ชื่อ-index.phpในโฟลเดอร์ดังนั้น chown ตีความว่ามันเป็นตัวเลือกบรรทัดคำสั่ง

วิธีการแก้ปัญหาคือการใช้ยัติภังค์สองครั้ง chown -R myuser:mygroup -- *


4
นี่ไม่ใช่คำตอบเดียวกันกับที่ @heemayl ตอบใช่หรือไม่
กริช

3
@Kris ทั้งสองคำตอบถูกโพสต์ในเวลาเดียวกัน ;-)
Rinzwind

1
คุณทำให้ผู้ใช้และกลุ่มสับสนในคำถามของคุณ แต่ไม่ได้อยู่ในคำตอบของคุณ ...
Thomas

3
@Kris มันค่อนข้างไม่น่าที่เขาจะคัดลอกคำตอบอื่น ๆ ภายใน 39 วินาทีหลังจากที่มันถูกวาง
UTF-8

ขอโทษฉันไม่ได้ตั้งใจจะบอกอย่างนั้น
กริช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.