ฉันจะเรียกใช้ซ้ำchmod
หรือทำซ้ำchown
ไฟล์ที่ซ่อนอยู่ได้อย่างไร
sudo chmod -R 775 *
ไม่ทำงานกับไฟล์ที่ซ่อน
สิ่งเดียวกันเกิดsudo chown -R user:group
ขึ้น
ฉันจะเรียกใช้ซ้ำchmod
หรือทำซ้ำchown
ไฟล์ที่ซ่อนอยู่ได้อย่างไร
sudo chmod -R 775 *
ไม่ทำงานกับไฟล์ที่ซ่อน
สิ่งเดียวกันเกิดsudo chown -R user:group
ขึ้น
คำตอบ:
หากคุณไม่เป็นเช่นนั้นการทำไดเรกทอรีปัจจุบันให้ทำเช่นนั้นแล้วปล่อยให้-R
หนักขึ้น -R
ไม่ละเว้นไฟล์ที่ซ่อนอยู่
sudo chmod -R 775 .
ls
สามารถค้นหาได้ พยายามแยกมันกำลังถามหาปัญหา แนวทางที่เหมาะสมคือการใช้เปลือกกลม
sudo chmod 775 -R
จะหายไปดังนั้นตอบคำถามนี้ .
*
ไม่รวมไฟล์ที่ซ่อนอยู่ตามค่าเริ่มต้น แต่หากคุณกำลังทุบตีคุณสามารถทำได้ด้วย:
shopt -s dotglob
อ่านเพิ่มเติมเกี่ยวกับมันในbuiltin
คู่มือของ bash :
หากตั้งค่า Bash จะมีชื่อไฟล์ที่ขึ้นต้นด้วย `. ' ในผลลัพธ์ของการขยายชื่อไฟล์
สิ่งนี้จะทำให้*
รวมไฟล์ที่ซ่อนไว้ด้วย
chmod -R 775 *
ปิดใช้งานด้วย:
shopt -u dotglob
zsh
?
(D)
คุณสมบัติแบบchmod -R 775 *(D)
อีกทางเลือกหนึ่งคือใช้find
ฉันชอบเพราะคุณสามารถควบคุมมันได้อย่างละเอียด
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
ข้อเสียเพียงอย่างเดียวคือว่าfind
มีไวยากรณ์ที่แตกต่างกันในรุ่นที่แตกต่างกัน
ไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันซ้ำรวมถึงไฟล์ที่ซ่อนอยู่:
chmod 755 -R ./* ./.[!.]*
ไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันไม่วนซ้ำรวมถึงไฟล์ที่ซ่อนอยู่:
chmod 755 ./* ./.[!.]*
สิ่งนี้จะไม่เปลี่ยนชื่อไฟล์ยกเว้นที่เริ่มต้นด้วย 2 จุดเช่น "./..thisonescapesunharmed.txt"
นอกจากนี้ระวังอย่าลบ "x" บิตมิฉะนั้นไดเรกทอรีทั้งหมดของคุณจะไม่สามารถเข้าถึงได้ (หนึ่งต้องการบิต x เพื่อ cd เป็น dir)
จำการแจ้งเตือนนี้: อย่าใช้งานเลย*
แต่./*
ใช้แทน
เพื่อหลีกเลี่ยงปัญหาในการตั้งค่าการอนุญาตในไดเรกทอรีให้ใช้find
แทน
find . -type f -exec chmod `VALUE` {} \;
* .*
ไม่ใช่วิธีที่ปลอดภัยที่สุดที่จะทำ โดยเฉพาะอย่างยิ่งมันจะเก็บในไดเรกทอรีหลักซึ่งหมายความว่ามันchmod
เป็นพี่น้องของไดเรกทอรีปัจจุบัน วิธีการที่เหมาะสมที่จะเป็น* ..?* .[^.]*
หรือดียิ่งขึ้น (พิจารณาสัญลักษณ์อาจไม่ตรงกับไฟล์ใด ๆ$(ls -A)
)