Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

ตัวละครพิเศษของ Bash ที่คุณควรรู้

ตัวละครพิเศษของ Bash ที่คุณควรรู้

อักขระบางตัวไม่เท่ากันใน Bash บางส่วนมีฟังก์ชันพิเศษ ปรับแต่งคำสั่ง และช่วยเราจัดการข้อมูล นั่นเป็นเหตุผลที่เราได้รวบรวมรายการต่อไปนี้ด้วยอักขระพิเศษที่สำคัญที่สุดของ Bash อ่านต่อไปเพื่อเรียนรู้วิธีใช้งานและวิธีทำให้ชีวิต Bash ประจำวันของคุณง่ายขึ้น

ตัวคั่นเส้นทางโฟลเดอร์ (/)

ใน Bash เครื่องหมายทับ (/ )แยกส่วนต่างๆ ของพาธ โฟลเดอร์ย่อยภายในโฟลเดอร์ หากต้องการไปที่โฟลเดอร์ชื่อ "รูปภาพ" ในโฟลเดอร์เริ่มต้น คุณจะต้องใช้คำสั่ง cd เป็น:

cd /home/USERNAME/pictures
ตัวละครพิเศษของ Bash ที่คุณควรรู้

ทุกอย่างหลังจากเครื่องหมายทับในตัวอย่างข้างต้นอยู่ภายในสิ่งที่อยู่ก่อนเครื่องหมายทับ

โฮมไดเร็กทอรี (~)

แทนที่จะพิมพ์ชื่อเต็มของโฟลเดอร์บ้านในเทอร์มินัล Bash คุณสามารถใช้อักขระตัวหนอน (~ ). ตัวอย่างเช่น หากต้องการไปที่โฟลเดอร์เริ่มต้น ให้ใช้:

cd ~

คุณยังสามารถรวมไว้ในเส้นทางที่ซับซ้อนมากขึ้นได้ ตัวอย่างเช่น ในการแก้ไขไฟล์ชื่อ “mydata.txt” ภายในโฟลเดอร์ “Personal” ในโฮมไดเร็กทอรีของคุณ ให้ใช้:

nano ~/Personal/mydata.txt

โฟลเดอร์ปัจจุบัน / ด้านบน (.)

คุณสามารถใช้รหัสเดียว (. ) หรือจุดคู่ (.. ) เพื่อกำหนดว่าควรทำการดำเนินการภายในไดเร็กทอรีปัจจุบันหรือในไดเร็กทอรีด้านบนตามลำดับ จุดเดียว (.) จับคู่กับโฟลเดอร์ปัจจุบัน ในขณะที่จุดคู่ (..) จับคู่กับโฟลเดอร์ด้านบน

สมมติว่าคุณอยู่ในโฟลเดอร์ “/home/USERNAME/pictures” และต้องการเรียกใช้สคริปต์ชื่อ “transform_images.sh” ภายในไดเรกทอรีเดียวกัน ในกรณีนี้ พิมพ์:

sh ./transform_images.sh

หากหลังจากรันสคริปต์แล้ว คุณต้องการกลับไปที่โฟลเดอร์ที่อยู่เหนือโฟลเดอร์ปัจจุบัน ให้พิมพ์:

cd ..

ที่จะคืนคุณจากโฟลเดอร์ “/home/USERNAME/pictures” เป็น “/home/USERNAME”

แสดงความคิดเห็นและยกเลิก (#)

สัญลักษณ์แฮช (# ) มีประโยชน์มากกว่าเมื่อเขียนสคริปต์ทุบตีเนื่องจากช่วยให้คุณสามารถเพิ่มความคิดเห็นเพื่อใช้อ้างอิงในอนาคตได้ Bash ละเว้นทุกอย่างที่ตามหลังสัญลักษณ์แฮช

ในสคริปต์ต่อไปนี้ บรรทัดแรกกำหนดว่าเป็นสคริปต์ทุบตี บรรทัดที่สองคือความคิดเห็นที่ถูกละเว้น และบรรทัดที่สามคือคำสั่งคัดลอกทั่วไป:

#!/bin/bash
# This is a comment - you can type anything you want here
cp file1.txt /home/USERNAME/scripts/file2.txt

แฮชมีประโยชน์แม้ว่าคุณจะไม่ได้เขียนสคริปต์ก็ตาม เนื่องจากอนุญาตให้คุณยกเลิกบางส่วนของคำสั่งได้ หากต้องการดูการใช้งานจริง ให้ลองใช้คำสั่งตรงไปตรงมาต่อไปนี้:

echo I am YOUR_NAME

จากนั้น ให้ลองทำสิ่งต่อไปนี้แทน:

echo I am #YOUR_NAME

คุณจะเห็นเฉพาะ "I am" ที่ส่งคืนในเวอร์ชันที่ 2 เนื่องจากแฮชจะยกเลิกทุกอย่างที่ตามมาหลังจากนั้น

ช่วง ([])

คุณสามารถกำหนดช่วงอักขระโดยใส่ในวงเล็บ ([] ). หากต้องการดูการทำงานจริง สมมติว่าคุณต้องการค้นหาชื่อโฟลเดอร์ที่ขึ้นต้นด้วย D หรือ M พิมพ์:

ls [DM]*
ตัวละครพิเศษของ Bash ที่คุณควรรู้

บางทีคุณอาจอยู่ในโฟลเดอร์ที่เต็มไปด้วยโฟลเดอร์ย่อยที่ตั้งชื่อตามแต่ละปีแทน การคัดลอกโฟลเดอร์สำหรับห้าปีที่ผ่านมาไปยัง /home/USERNAME/backup , ใช้:

cp -r 201[56789] /home/USERNAME/backup

คุณยังสามารถลดความซับซ้อนได้ด้วยเครื่องหมายขีดกลาง (-):

cp 201[5-9] /home/USERNAME/backup

Bash จะวนซ้ำจาก 5 ถึง 9 เพื่อรวมตัวเลขระหว่างกัน

การเปลี่ยนเส้นทาง (<>)

การใช้วงเล็บเหลี่ยม (<> ) คุณสามารถเปลี่ยนเส้นทางอินพุตหรือเอาต์พุตของคำสั่งได้ ตัวอย่างเช่น คำสั่งต่อไปนี้:

ls >> list.txt

จะเปลี่ยนเส้นทางผลลัพธ์ของ ls และบันทึกลงในไฟล์ “list.txt”

โปรดทราบว่าวงเล็บมุมฉากคู่ (>> ) ต่อท้าย เอาต์พุตของคำสั่งไปยังไฟล์ หากคุณเรียกใช้คำสั่งเดิมอีกครั้ง คำสั่งนี้จะผนวกเอาท์พุตต่อท้ายเนื้อหาที่มีอยู่ เพื่อแทนที่ เนื้อหาที่มีผลลัพธ์ใหม่ ใช้วงเล็บมุมฉากเดียว (> ):

ls > list.txt

ท่อ (|)

คุณสามารถรวมคำสั่งต่างๆ เข้าด้วยกันเป็นคำสั่งที่ใหญ่ขึ้นเพื่อให้ได้ผลลัพธ์ที่ซับซ้อนยิ่งขึ้นโดยใช้ไพพ์ (| ). ค่อนข้างคล้ายกับการเปลี่ยนเส้นทาง (เพิ่มเติมเกี่ยวกับความเหมือนและความแตกต่างที่นี่)

สมมติว่าคุณมีไฟล์ขนาดใหญ่ที่มีรายการนับพันรายการและต้องการค้นหาชื่อของคุณในไฟล์นั้น แทนที่จะค้นหาในโปรแกรมแก้ไขข้อความ ให้ทำดังต่อไปนี้:

cat entries.txt | grep 'YourName'
ตัวละครพิเศษของ Bash ที่คุณควรรู้

ในกรณีนี้ เอาต์พุตของ “entries.txt” จะถูกไพพ์ไปยัง grep คำสั่ง

ตัวคั่นคำสั่ง (;)

Bash อนุญาตให้คุณออกคำสั่งหลายคำสั่งในคราวเดียวโดยคั่นด้วยเครื่องหมายอัฒภาค (; ). ตัวอย่างเช่น การคัดลอกสองโฟลเดอร์ไปยังสองปลายทางที่แตกต่างกันด้วยคำสั่งเดียว:

cp folder1 destination1; cp folder2 destination2

อัฒภาคแยกสองคำสั่งและบอกให้ Bash ดำเนินการตามลำดับ โปรดทราบว่าคุณสามารถใช้มากกว่าสองคำสั่งได้หากต้องการ

สัญลักษณ์แทน (*)

คุณอาจเคยใช้เครื่องหมายดอกจัน (* ) ในบางคำสั่ง โดยจะจับคู่ลำดับของอักขระใดๆ และอนุญาตให้ดำเนินการต่างๆ เช่น คัดลอกไฟล์ JPG ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง:

cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/

เครื่องหมายคำถาม (? ) เป็นไวด์การ์ดใน Bash แต่จับคู่กับอักขระเดียวเท่านั้น ตัวอย่างเช่น:

cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/

คำสั่งดังกล่าวจะคัดลอกไฟล์ jpg ทั้งหมดในโฟลเดอร์ที่ขึ้นต้นด้วย “201” เนื่องจากไวด์การ์ดแปลเป็นอักขระที่เป็นตัวอักษรและตัวเลขคละกัน ไม่ใช่แค่ตัวเลขเท่านั้น คำสั่งดังกล่าวจะคัดลอกโฟลเดอร์ใดๆ ที่อาจมีชื่อว่า “201A” หรือ “201z” ด้วย

เปิดในเบื้องหลัง (&)

คุณสามารถรันคำสั่งเป็นกระบวนการพื้นหลังได้เพียงแค่ต่อท้ายคำสั่งด้วยสัญลักษณ์แอมเพอร์แซนด์ (& ):

cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &

ด้านบนนี้จะเริ่มคัดลอกไฟล์ huge_file.zip และย้ายไปที่พื้นหลังทันที ช่วยให้คุณใช้งานเทอร์มินัลต่อไปได้ คำสั่งจะออกโดยอัตโนมัติเมื่อเสร็จสิ้น หากคุณต้องการนำมันไปข้างหน้าอีกครั้ง คุณสามารถทำได้โดยพิมพ์ fg ตามด้วย Enter

ตัวแปร ($)

เครื่องหมายดอลลาร์ ($ ) ให้คุณตั้งค่าตัวแปรเพื่อใช้ในคำสั่งของคุณได้ หากต้องการดูการใช้งานจริง ให้ลองป้อนข้อมูลต่อไปนี้ในเทอร์มินัลของคุณ:

myname=YOUR_NAME
myage=YOUR_AGE
echo "I'm $myname and I'm $myage years old"
ตัวละครพิเศษของ Bash ที่คุณควรรู้

โปรดทราบว่าไม่มีเครื่องหมายดอลลาร์เมื่อกำหนดค่าให้กับตัวแปร

Escapes (\) และ Quotes (”)

หากคุณต้องการใช้อักขระพิเศษใดๆ ก็ตามที่อยู่ในคำสั่ง คุณจะต้องหลีกเลี่ยงมัน คุณสามารถทำได้โดยนำหน้าอักขระพิเศษด้วยแบ็กสแลช (\ ). ตัวอย่างเช่น หากคุณมีไฟล์ที่มีชื่อซึ่งมีเครื่องหมายอัศเจรีย์ คุณจะต้องพิมพ์ \! แทนเพื่อให้ Bash ตีความว่าเป็นเครื่องหมายอัศเจรีย์และไม่ใช่เป็นอักขระพิเศษ

อีกวิธีหนึ่งก็คือการใช้ตัวใดตัวหนึ่ง ('' ) หรือเครื่องหมายคำพูดคู่ ("" ). โดยการใส่สตริงในเครื่องหมายคำพูด อักขระพิเศษใดๆ ในนั้นจะถือเป็นอักขระจริง เครื่องหมายคำพูดเดี่ยวและคู่ก็มีความแตกต่างเช่นกัน อัญประกาศเดี่ยวจะประเมินสตริงที่ล้อมรอบเป็นข้อความ ในขณะที่อัญประกาศคู่อนุญาตให้คุณใช้ตัวแปร ($) ภายในสตริงที่ล้อมรอบได้

บทสรุป

ด้านบนไม่ใช่อักขระพิเศษเพียงตัวเดียวใน Bash แต่เป็นอักขระที่เราพิจารณาว่ามีประโยชน์มากที่สุดสำหรับการผจญภัยประจำวันของเราในเทอร์มินัล อย่าลืมตรวจสอบแป้นพิมพ์ลัดเหล่านี้เพื่อย้ายไปมาใน Bash อย่างรวดเร็ว โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่างหากเราพลาดอักขระพิเศษที่สำคัญใด ๆ