ฉันขอเก็บ และ .. จาก. * การขยายตัว?


10

ฉันมักจะพบว่ามันน่ารำคาญ (หรือแย่กว่า) เมื่อฉันพิมพ์

command .*

ใน bash และคำสั่งใช้กับไดเร็กทอรีพาเรนต์และไดเร็กทอรีปัจจุบัน มีบางตัวเลือกเปลือกหรือการกำหนดค่าอื่น ๆ ที่ฉันสามารถปรับแต่งเพื่อให้ทุบตียกเว้น.และ..จากการขยายตัวของ.*?

คำตอบ:


13

ใน bash ตามลำดับนี้:

GLOBIGNORE=.
shopt -u dotglob

เมื่อ GLOBIGNORE ถูกตั้งค่า และ .. จะถูกเพิกเฉยโดยอัตโนมัติดังนั้นคุณไม่จำเป็นต้องตั้งค่าเหล่านั้นใน GLOBIGNORE แต่ถ้าคุณไม่มีอะไรอื่นที่จะเพิกเฉยคุณจะไม่มีอะไรจะตั้งค่าให้

ทุกครั้งที่คุณตั้งค่า GLOBIGNORE ให้เป็นค่าที่ไม่ใช่ค่า null bash จะเปิดใช้งานตัวเลือกdotglobดังนั้นคุณจะต้องปิดในภายหลัง มิฉะนั้น bash จะขยาย*เพื่อรวมไฟล์ที่ขึ้นต้นด้วยจุด


เจ๋งขอบคุณ! จริง ๆ แล้วฉันอยากจะdotglobเปิดดังนั้นการตั้งค่าGLOBIGNOREเสียงที่สมบูรณ์แบบ
David Z

เมื่อ GLOBIGNORE มีการตั้งค่าทุบตีไม่ละเว้น.และ..แต่ไม่และfoo/. foo/..คุณอาจต้องการใช้GLOBIGNORE=.:*/.:*/..เพื่อทำให้ชื่อเส้นทางนี้ทำงานด้วย
user123444555621

3

ในระบบที่ไม่คุ้นเคยที่ฉันมีเวลาน้อยเกินไปในการตรวจสอบการตั้งค่าที่ใช้งาน (เช่น GLOBIGNORE) ฉันใช้รูปแบบที่เข้าใจผิดได้ดังต่อไปนี้:

command .??*
  • พิมพ์อย่างรวดเร็วและรับประกันว่าจะไม่รวม.และ..ไม่คำนึงถึงสภาพแวดล้อม

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