การขยายตัวของ Brace เป็นเทคนิคที่มีประโยชน์ในการสร้างรายการของสตริงที่สามารถใช้ในสคริปต์และนามแฝงและบนบรรทัดคำสั่ง Linux ประหยัดเวลาและหลีกเลี่ยงข้อผิดพลาดโดยพิมพ์น้อยลง
การขยายตัวรั้ง
ก่อนที่เรือทุบตี ดำเนินการคำสั่ง ในหน้าต่างเทอร์มินัลหรือบรรทัดในสคริปต์จะตรวจสอบว่าจำเป็นต้องทำการทดแทนใด ๆ ในคำสั่งหรือไม่ ชื่อตัวแปรจะถูกแทนที่ด้วยค่าของพวกเขานามแฝงจะถูกแทนที่ด้วยคำสั่งที่พวกเขากำลังชวเลขและการขยายใด ๆ จะดำเนินการ การขยายตัวของ Brace เป็นรูปแบบหนึ่งของการขยายตัวที่สนับสนุนโดย Bash
การขยายตัวของ Brace มีอยู่ในเปลือกหอยที่ทันสมัย แต่อาจหายไปจากเปลือกเก่า หากคุณกำลังจะใช้การขยายการรั้งในสคริปต์ตรวจสอบให้แน่ใจว่าคุณเรียกใช้เชลล์ที่รองรับการขยายตัวของรั้งเช่น Bash:
เราจะใช้ Bash สำหรับตัวอย่างของเรา
การสร้างรายการของสตริงอาจดูแปลกใหม่กว่าผลประโยชน์ แต่มันมีฟังก์ชั่นบางอย่างที่สามารถประหยัดเวลาและการกดแป้น บ่อยครั้งที่สามารถให้ทางออกที่เรียบง่ายและสง่างามกับปัญหาหรือความต้องการ
การขยายตัวที่เรียบง่าย
การขยายตัวของรั้งมีอยู่ระหว่างการจัดฟันคู่ "{}" มันสามารถเป็นรายการของรายการที่คั่นด้วยเครื่องหมายจุลภาคหรือตัวระบุช่วง ไม่อนุญาตให้ใช้ช่องว่างภายในเครื่องมือจัดฟันเว้นแต่คุณจะปิดสตริงในเครื่องหมายอัญประกาศ "
"
"
สำหรับรายการที่คั่นด้วยเครื่องหมายจุลภาคกระบวนการขยายจะใช้แต่ละองค์ประกอบในทางกลับกันและส่งผ่านไปยังคำสั่งการโทร ในตัวอย่างนี้มันคือ
ก้อง
นั่นง่ายๆ
พิมพ์ในหน้าต่างเทอร์มินัล
. โปรดทราบว่าเครื่องหมายจุลภาคถูกละเว้น
Echo {หนึ่งสอง, สาม, สี่}
รายการสามารถเป็นคำหรือตัวเลข
Echo {1,2,3,4}
ลำดับขององค์ประกอบรายการเป็นไปตามอำเภอใจอย่างสิ้นเชิง
Echo (4,2,3,1)
ช่วงการขยายตัวมีตัวอักษรเริ่มต้นและตัวอักษรที่เชื่อมต่อกับสองช่วงเวลา "
..
"ไม่มีช่องว่างใด ๆ องค์ประกอบรายการที่หายไปทั้งหมดจะได้รับโดยอัตโนมัติโดยการขยายเพื่อให้มีการสร้างช่วงทั้งหมดตั้งแต่ตัวละครเริ่มต้นจนถึงอักขระปลายทาง
สิ่งนี้จะพิมพ์ตัวเลขจาก 1 ถึง 10
echo {1..10}
การกำหนดหมายเลขเป็นไปตามอำเภอใจ มันไม่จำเป็นต้องเริ่มต้นที่หนึ่ง
echo {3..12}
ช่วงสามารถระบุได้เพื่อให้พวกเขาวิ่งย้อนกลับ สิ่งนี้จะสร้างรายการจากห้าลงไปที่หนึ่ง
echo {5..1}
ช่วงสามารถรวมถึงตัวเลขเชิงลบ
echo {4 ..- 4}
เมื่อก่อนหน้านี้เราชี้ให้เห็นว่ามีช่วงเริ่มต้นและจุดสิ้นสุด อักขระ . มันไม่จำเป็นต้องเป็นตัวเลข มันสามารถเป็นจดหมาย
echo {q..v}
ตัวอักษรสามารถวิ่งย้อนหลังได้เช่นกัน
echo {f..a}
ใช้การขยายตัวแบบรั้งกับลูป
คุณสามารถใช้การขยายตัวแบบรั้งกับช่วงในลูปในสคริปต์
สำหรับฉันใน {3..7}
ทำ
echo $ i
ทำ
ช่วงการขยายตัวของ Brace ให้คุณใช้ตัวละครเป็นตัวแปรลูป
สำหรับฉันใน {m ..q}
ทำ
echo $ i
ทำ
ลูปมักใช้ในสคริปต์ แต่ไม่มีอะไรที่จะหยุดคุณจากการพิมพ์ลงในบรรทัดคำสั่งเพื่อดูว่าจะเกิดอะไรขึ้น
สำหรับฉันใน {3..7}; ทำ echo $ i; ทำ
สำหรับฉันใน {m ..q}; ทำ echo $ i; ทำ
เชื่อมต่อและทำรัง
การขยายตัวที่อยู่ติดกันสองครั้งไม่ได้กระทำอย่างอิสระหลังจากที่อื่น พวกเขาทำงานร่วมกัน แต่ละองค์ประกอบในการขยายตัวแรกจะดำเนินการโดยแต่ละองค์ประกอบในการขยายตัวที่สอง
echo {q..v} {1..3}
การขยายยังสามารถซ้อนกันได้ การขยายตัวที่ซ้อนกันจะทำหน้าที่บนองค์ประกอบก่อนหน้านี้ทันที
Echo {PORT-1, PART-2 {A, B, C, D}, PART-3}
นอกจากนี้คุณยังสามารถทำรังขยายได้โดยการสร้างรายการการขยายระยะคั่นด้วยเครื่องหมายจุลภาค
echo {{5..0}, {1..5}}
preamble และ postscript
คุณสามารถวางข้อความก่อนและหลังการขยายรั้งเพื่อให้ข้อความนั้นรวมอยู่ในผลลัพธ์ของการขยายตัว ข้อความที่อยู่ด้านหน้าของการขยายตัวเรียกว่าคำนำในขณะที่ข้อความที่อยู่เบื้องหลังการขยายตัวรั้งเรียกว่า PostScript
คำสั่งนี้ใช้คำนำ
echo บท {1..3}
ตัวอย่างนี้ใช้ PostScript:
echo {เนื้อหา, กระดาษ, bilbiography} .MD
และคำสั่งนี้ใช้ทั้งสองอย่าง
Echo Chapter- {1..4} .MD
การขยายชื่อไฟล์และไดเรกทอรี
ตามที่คุณอาจคาดเดาได้ตอนนี้หนึ่งในการใช้งานหลักของการขยายรั้งคือการสร้างชื่อไฟล์และไดเรกทอรีที่สามารถส่งผ่านไปยังคำสั่งอื่น ๆ เราใช้แล้ว
ก้อง
เป็นวิธีที่สะดวกในการดูว่าเกิดอะไรขึ้นเมื่อเกิดการขยายตัว คุณสามารถแทนที่คำสั่งใด ๆ ที่ใช้ชื่อไฟล์หรือชื่อไดเรกทอรีเป็นอินพุตและใช้การขยายตัวรั้งกับมัน
อย่างรวดเร็ว
สร้างไฟล์บางไฟล์
, ใช้
สัมผัส
:
Touch File- {1..4}. TXT
ls * .txt
หากคุณมีไฟล์จำนวนมากที่มีชื่อฐานเดียวกัน แต่ส่วนขยายไฟล์ที่แตกต่างกันและคุณต้องการดำเนินการกับชุดย่อยของพวกเขาการขยายการรั้งสามารถช่วยได้ ที่นี่เรากำลังบีบอัดไฟล์ย่อยที่มี "โปรแกรม" เป็นชื่อ Basename เป็นไฟล์ zip ที่เรียกว่า "แหล่งที่มา-Code.zip"
ไดเรกทอรีการพัฒนามีไฟล์จำนวนมากที่จะมีชื่อ Basename เช่นเดียวกับโปรแกรมหลักของคุณ โดยปกติแล้วคุณไม่ต้องการสำรองหรือแจกจ่ายไฟล์เช่นไฟล์วัตถุ ".o" นี่เป็นวิธีที่เรียบร้อยในการรวมถึงประเภทไฟล์ที่น่าสนใจเท่านั้น
โปรแกรมรหัสซอร์สโค้ด {.c, .h, .css}
คำสั่งนี้จะทำสำเนาของไฟล์และผนวก ".Bak" เพื่อทำสำเนาสำรองของไฟล์ต้นฉบับ จุดที่น่าสนใจที่จะทราบคือการขยายตัวของรั้งมีรายการที่คั่นด้วยเครื่องหมายจุลภาค แต่องค์ประกอบแรกว่างเปล่า หากเราไม่ได้รวมเครื่องหมายจุลภาคการขยายตัวจะไม่เกิดขึ้น
CP รั้ง / ใหม่ / prog-1.c {,. bak}
LS รั้ง / ใหม่ / prog-1.c.bak
ในการดำเนินการบางอย่างในสองไฟล์ในไดเรกทอรีที่แตกต่างกันเราสามารถใช้การขยายรั้งในพา ธ ไปยังไฟล์
ในตัวอย่างนี้ไดเรกทอรี "รั้ง" มีสองไดเรกทอรีย่อยหนึ่งเรียกว่า "ใหม่" และหนึ่งที่เรียกว่า "เก่า" พวกเขามีไฟล์ซอร์สโค้ดรุ่นเดียวกันที่แตกต่างกัน เราจะใช้
ประณาม
โปรแกรมเพื่อดูความแตกต่างระหว่าง "prog-1.c" สองรุ่น
รั้งแตกต่างกัน / {ใหม่เก่า} /prog-1.c
[254 255]
หากคุณมีโครงกระดูกมาตรฐานของไดเรกทอรีที่คุณต้องสร้างในช่วงเริ่มต้นของโครงการคุณสามารถสร้างได้อย่างรวดเร็วโดยใช้การขยายตัวของ Brace NS
mkdir
-NS
ตัวเลือก (ผู้ปกครอง)
สร้างไดเรกทอรีผู้ปกครองที่ขาดหายไป
เมื่อไดเรกทอรีลูกถูกสร้างขึ้น
mkdir -p {ที่มา, สร้าง, ผู้ชาย, ช่วยเหลือ {/ หน้า, / yelp, / images}}
ต้นไม้
คุณสามารถใช้การขยายรั้งด้วย
ปรับ
ถึง
ดาวน์โหลดหลายไฟล์
.
ในคำสั่งนี้เราจะดาวน์โหลดไฟล์จากสองไดเรกทอรีเรียกว่า "test1" และ "test2" แต่ละไดเรกทอรีถือสองไฟล์ที่เรียกว่า "picture1" และ "picture2"
wget https://www.url-of-your-choice.com/test (1,2 )/picture (001,002) jpgk35]
![]()
การแสดงรายการไฟล์แสดงไฟล์ที่เรียกคืนและวิธีการ
ปรับเปลี่ยนชื่อไฟล์เพื่อหลีกเลี่ยงการปะทะกับไฟล์ที่มีไฟล์ที่มีอยู่รูปภาพ LS *. *
![]()
โอบกอดรั้ง
ดูเหมือนว่าการขยายตัวของรั้งเป็นอีกหนึ่ง ความลับที่ดีที่สุดของ Linux . หลายคนบอกฉันว่าพวกเขาไม่เคยได้ยินการขยายตัวของ Brace ในขณะที่คนอื่น ๆ แจ้งให้ฉันทราบว่าเป็นหนึ่งในเทคนิคบรรทัดคำสั่งที่พวกเขาชื่นชอบ
ลองดูและมันอาจพบวิธีการในชุดของเส้นทางคำสั่งของคุณไปสู่กลอุบาย