ฉันมักจะพบว่ามันน่ารำคาญ (หรือแย่กว่า) เมื่อฉันพิมพ์
command .*
ใน bash และคำสั่งใช้กับไดเร็กทอรีพาเรนต์และไดเร็กทอรีปัจจุบัน มีบางตัวเลือกเปลือกหรือการกำหนดค่าอื่น ๆ ที่ฉันสามารถปรับแต่งเพื่อให้ทุบตียกเว้น.และ..จากการขยายตัวของ.*?
ฉันมักจะพบว่ามันน่ารำคาญ (หรือแย่กว่า) เมื่อฉันพิมพ์
command .*
ใน bash และคำสั่งใช้กับไดเร็กทอรีพาเรนต์และไดเร็กทอรีปัจจุบัน มีบางตัวเลือกเปลือกหรือการกำหนดค่าอื่น ๆ ที่ฉันสามารถปรับแต่งเพื่อให้ทุบตียกเว้น.และ..จากการขยายตัวของ.*?
คำตอบ:
ใน bash ตามลำดับนี้:
GLOBIGNORE=.
shopt -u dotglob
เมื่อ GLOBIGNORE ถูกตั้งค่า และ .. จะถูกเพิกเฉยโดยอัตโนมัติดังนั้นคุณไม่จำเป็นต้องตั้งค่าเหล่านั้นใน GLOBIGNORE แต่ถ้าคุณไม่มีอะไรอื่นที่จะเพิกเฉยคุณจะไม่มีอะไรจะตั้งค่าให้
ทุกครั้งที่คุณตั้งค่า GLOBIGNORE ให้เป็นค่าที่ไม่ใช่ค่า null bash จะเปิดใช้งานตัวเลือกdotglobดังนั้นคุณจะต้องปิดในภายหลัง มิฉะนั้น bash จะขยาย*เพื่อรวมไฟล์ที่ขึ้นต้นด้วยจุด
.และ..แต่ไม่และfoo/. foo/..คุณอาจต้องการใช้GLOBIGNORE=.:*/.:*/..เพื่อทำให้ชื่อเส้นทางนี้ทำงานด้วย
ในระบบที่ไม่คุ้นเคยที่ฉันมีเวลาน้อยเกินไปในการตรวจสอบการตั้งค่าที่ใช้งาน (เช่น GLOBIGNORE) ฉันใช้รูปแบบที่เข้าใจผิดได้ดังต่อไปนี้:
command .??*
.และ..ไม่คำนึงถึงสภาพแวดล้อม.a
dotglobเปิดดังนั้นการตั้งค่าGLOBIGNOREเสียงที่สมบูรณ์แบบ