Alt + Shift + {คืออะไร


10

ทดสอบสิ่งนี้บน CentOS และ Ubuntu หากคุณอยู่ในไดเรกทอรีที่มีไฟล์มากมาย

$ ls
day1.tar.gz  day2.tar.gz  day3.tar.gz  day4.tar.gz  day5.tar.gz  day6.tar.gz  day7.tar.gz  day8.tar.gz day9.tar.gz day10.tar.gz

และคุณกดAlt+Shift+{มันจะทำให้ชื่อไฟล์ทุกชื่อเสร็จสมบูรณ์

<Alt+Shift+{>

สำเร็จเป็น:

 day{1{0.tar.gz,.tar.gz},2.tar.gz,3.tar.gz,4.tar.gz,5.tar.gz,6.tar.gz,7.tar.gz,8.tar.gz,9.tar.gz}

และ

day1<Alt+Shift+{>

สำเร็จเป็น:

day1{0.tar.gz,.tar.gz}

คำถาม : นี่คืออะไร? สิ่งนี้เรียกว่าอะไร? มันมีประโยชน์ที่ไหน? ฉันจะกำหนดค่าได้อย่างไร ฉันสามารถทำสิ่งนี้กับไฟล์ที่ลงท้ายด้วยซับสตริงที่ไม่ได้ขึ้นต้นด้วยอันเดียวได้หรือไม่?

คำตอบ:


9

complete-into-bracesในทุบตีจะดำเนินการฟังก์ชั่นที่ ReadLine

การขยายของ Brace เป็นวิธีที่มีประโยชน์ในการย่อการอ้างอิงไปยังหลาย ๆ ไฟล์

ตัวอย่างเช่น:

ls -l /path/to/dir/*.{c,h}

จะแสดงรายการไฟล์ทั้งหมดที่ลงท้ายด้วย ".c" หรือ ".h"

จากman bash:

เสร็จสิ้นการจัดฟัน (M- {)
ดำเนินการเสร็จสิ้นชื่อไฟล์และแทรกรายการของการรวบรวมที่เป็นไปได้ที่อยู่ในเครื่องหมายวงเล็บเพื่อให้รายการพร้อมใช้งานกับเชลล์ (ดูที่การขยายรั้งด้านบน)

และ

Brace Expansion การขยายตัวของ
Brace เป็นกลไกที่อาจสร้างสตริงโดยพลการ กลไกนี้คล้ายกับการขยายชื่อพา ธ แต่ไม่จำเป็นต้องมีชื่อไฟล์ที่สร้างขึ้น รูปแบบที่จะรั้งขยายในรูปแบบของคำนำตัวเลือกตามด้วยชุดของสตริงที่คั่นด้วยเครื่องหมายจุลภาคหรือการแสดงออกของลำดับระหว่างคู่ของวงเล็บปีกกาตามด้วยคำลงท้ายเสริม คำนำจะถูกนำหน้าไปยังแต่ละสตริงที่มีอยู่ภายในวงเล็บปีกกาและจากนั้นคำลงท้ายจะต่อท้ายแต่ละสตริงผลลัพธ์โดยขยายจากซ้ายไปขวา

การขยายรั้งอาจจะซ้อนกัน ผลลัพธ์ของแต่ละสตริงที่ขยายจะไม่ถูกจัดเรียง ลำดับจากซ้ายไปขวาจะถูกเก็บไว้ ตัวอย่างเช่น {d, c, b} e ขยายเป็น `ade ace abe '

เสร็จสิ้นตามคำนิยามเสร็จสมบูรณ์เพื่อให้ทำงานกับไฟล์ที่ขึ้นต้นด้วยสตริง


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