สายนี้คำถาม "วิธีการหลีกเลี่ยงไฟล์ที่ไม่พิมพ์เปิดใน terminal" เป็นบิตเก่า อย่างไรก็ตาม:
โซลูชันข้างต้นเกี่ยวข้องกับการเปลี่ยนแปลงกฎที่มีอยู่ซึ่งอาจมีผลข้างเคียงที่ไม่พึงประสงค์ ฉันพบว่าวิธีที่ง่ายที่สุดคือการใช้ประโยชน์จากกฎที่มีอยู่สำหรับไฟล์ที่ไม่มีตัวตนและการเปลี่ยนการอนุญาตของไฟล์เพื่อให้ได้ผลลัพธ์ที่ฉันต้องการ
โดยเฉพาะ: ปิดบิตที่เรียกใช้งานได้บนไฟล์เพราะนั่นคือสิ่งที่แจ้งให้บริการไฟล์เปิดด้วยเทอร์มินัลด้วย "chmod -x filename" โดยที่ filename คือ ... the filename
สิ่งนี้สามารถเป็นแบบอัตโนมัติได้บางส่วน (ด้วยความระมัดระวัง): ในกรณีของฉันฉันมีไฟล์ README จำนวนมากบนเครื่อง ฉันสามารถใช้ "ค้นหา" เพื่อค้นหาไฟล์ "README" ทั้งหมด จากนั้นใช้ "awk" เพื่อสร้างคำสั่งเพื่อลบบิตที่สามารถเรียกใช้งานได้จากทั้งหมดดังต่อไปนี้:
find /$HOME -iname 'README' | awk '{ print "chmod -x " $0 }'
พิมพ์ที่เทอร์มินัลหากคุณต้องการตรวจสอบว่าจะเปลี่ยนแปลงไฟล์ใด: เอาต์พุตจะประกอบด้วยรายชื่อของ README แต่ละรายการที่พบว่ามีลักษณะดังนี้:
chmod -x //Users/jimpsmith/things/README
และเพื่อเปลี่ยนการอนุญาตทั้งหมดที่ดำเนินการทุกบรรทัดเหล่านี้โดยการคิดค่าธรรมเนียมพวกเขาเพื่อทุบตีดังต่อไปนี้:
find /$HOME -iname 'README' | awk '{ print "chmod -x " $0 }' | bash
เพียงระวังการใช้ไวด์การ์ดอย่างอิสระเกินไปและการค้นหาว่าคุณลบบิตที่สามารถใช้งานได้ออกจากบางไฟล์ที่ตรงกับการใช้งานผิดพลาด
วิธีที่ง่ายกว่าคือการวิ่ง
find /$HOME -iname 'README' -exec chmod -x '{}' \;`
หรือ (เพื่อดูว่าจะเกิดอะไรขึ้น)
find /$HOME -iname 'README' -exec echo chmod -x '{}' \;`