คู่มือผู้เริ่มต้นสู่การเขียนสคริปต์เชลล์ 3 คำสั่งพื้นฐานและโซ่เพิ่มเติม
คุณได้เรียนรู้วิธีสร้างสคริปต์ใช้อาร์กิวเมนต์และสร้างสำหรับลูป ตอนนี้เรามาดูคำสั่งพื้นฐานการจัดการไฟล์ข้อความและเปลี่ยนเส้นทางอินพุตและเอาต์พุตไปยังไฟล์และคำสั่งอื่น ๆ.
คำสั่งที่มีประโยชน์พื้นฐานบางอย่าง
เราได้ให้รายละเอียดพื้นฐานของเชลล์สคริปและโครงร่างตัวอย่างของลูปแล้ว แต่อย่าลืมตรวจสอบบทความเหล่านั้นหากคุณพลาดคู่มือการใช้สคริปต์เชลล์ของเราจนถึงตอนนี้.
บรรทัดคำสั่งนั้นยอดเยี่ยมด้วยเหตุผลหลายประการและการเปลี่ยนเส้นทางเป็นหนึ่งในสิ่งที่โดดเด่นที่สุด หากคุณต้องจดบันทึกและสร้างเอาท์พุทของคำสั่งทุกคำสั่งเพื่อดำเนินการต่อไปหรือใช้สิ่งนั้นเป็นอย่างอื่นเราทุกคนคงจะบ้าไปแล้วเมื่อนานมาแล้ว การเปลี่ยนเส้นทางช่วยให้เราใช้เอาต์พุตนั้นและบันทึกหรือใช้มันทันทีเป็นอินพุตสำหรับคำสั่งอื่น นอกจากนี้เรายังสามารถใช้ไฟล์เป็นอินพุตสำหรับคำสั่งอื่น ๆ.
ก่อนที่เราจะไปต่อไปเราจะครอบคลุมคำสั่งพื้นฐานบางอย่างที่สามารถใช้ได้ในหลาย ๆ ที่.
เสียงสะท้อน - คำสั่งนี้จะพิมพ์ (แสดง) อาร์กิวเมนต์ทั้งหมดของมันบนบรรทัดคำสั่งเป็นเอาต์พุต
อาร์กิวเมนต์ echo มีช่องว่าง
อย่างที่คุณเห็นอักขระพิเศษจำเป็นต้อง "หลบหนี" เพื่อให้ได้รับการปฏิบัติตามปกติ ทำได้โดยใช้แบ็กสแลช (\) ด้านหน้าตัวละคร เป็นความคิดที่ดีกว่าที่จะใช้เครื่องหมายคำพูด คำสั่ง echo ยังทำงานกับตัวแปร.
อย่างที่คุณเห็นราคาคำพูดเดียวและสองคำพูดต่างกัน สำหรับข้อมูลเพิ่มเติมให้ตรวจสอบความแตกต่างระหว่างคำพูดเดี่ยวและคู่ใน Bash Shell?
แมว - คำสั่งนี้แสดงเนื้อหาของไฟล์ข้อความเป็นเอาต์พุต.
cat file_to_be_read
สมมติว่าเราสร้างไฟล์ข้อความนี้ใน nano:
เมื่อเราใช้คำสั่ง cat กับไฟล์เราจะเห็นผลลัพธ์ของมัน.
grep - นี่เป็นหนึ่งในคำสั่งที่ทรงพลังและมีประโยชน์ที่สุดสำหรับคุณใน Linux มันย่อมาจาก Global / Regular Expression Print มองผ่านไฟล์และพิมพ์บรรทัดใด ๆ ที่ตรงกับรูปแบบเฉพาะ เนื่องจากรูปแบบนี้มีพื้นฐานมาจาก "การแสดงออกปกติ" เส้นที่กระชับสามารถให้รูปแบบมากมายที่จะจับคู่ แม้ว่าจะไม่ใช่คุณสามารถป้อนนกนางนวลเพื่อการค้นหา.
ไฟล์รูปแบบ grep
ฉันรับรองว่าคุณ grep สามารถทำอะไรได้มากกว่า แต่สำหรับตอนนี้เรามาดูสิ่งที่ง่ายกว่ากัน.
การเปลี่ยนเส้นทางเอาต์พุต
ในการเปลี่ยนเส้นทางเอาต์พุตของคำสั่งไปยังไฟล์เราใช้ประโยชน์จากอักขระพิเศษสัญลักษณ์มากกว่า (>).
มาเปลี่ยนรายการกันเถอะ ป้อนคำสั่งต่อไปนี้:
echo pepperoni> รายการ
คุณจะเห็นว่าเสียงก้องไม่แสดงเส้นอีกต่อไปและเมื่อเราดูเนื้อหาของไฟล์ "รายการ" เราจะเห็นสิ่งที่เราก้องอยู่ในนั้น.
โปรดทราบว่าเนื้อหาก่อนหน้าของ "รายการ" ถูกลบออก ลองอีกครั้ง:
สิ่งนี้มีประโยชน์เมื่อคุณต้องการนำไฟล์มาใช้ซ้ำ แต่บ่อยครั้งที่เราต้องการเพิ่มลงในไฟล์ที่มีอยู่ สำหรับสิ่งนี้เราใช้สัญลักษณ์มากกว่าสองต่อเนื่องกัน:
รายการพริกสีเหลืองสะท้อน
ง่าย! ลองใช้คำสั่งนี้เพื่อสร้างรายการที่ใหญ่ขึ้น?
เราจะไปที่นั่น. ฉันคิดว่าคุณสามารถเห็นว่าทำไม geeks มากมายใช้บรรทัดคำสั่งเพื่อทำรายการและสิ่งที่ต้องทำ แต่มันก็ดีขึ้น.
ลองเอาท์พุทของคำสั่งและใส่ลงในไฟล์:
ls -al /> ~ / rootlist
การสร้างรายชื่อไฟล์แก้ไขลงแล้วเรียกใช้คำสั่งที่คุณต้องการได้ง่ายกว่าที่เคย และในขณะที่เรากำลังทำฟังก์ชั่นพื้นฐานเหล่านี้ในบรรทัดคำสั่ง แต่ก็ใช้งานได้ดีในสคริปต์เช่นกัน.
ระบบท่อหรือสายโซ่
ไปป์นั้นมีชื่อดังนั้นเนื่องจากใช้ไปป์ (|; ที่ใช้ร่วมกันกับ \ คีย์บนแป้นพิมพ์ส่วนใหญ่) โดยพื้นฐานแล้วมันจะเอาท์พุทของคำสั่งหนึ่งและฟีดมันโดยตรงไปยังอีก คุณสามารถสร้างกลุ่มคำสั่งแบบยาวเพื่อรับเอาต์พุตที่ต้องการโดยเฉพาะและสะดวกมากสำหรับคำสั่งเช่น grep.
มันทำหน้าที่เหมือน“>” มากยกเว้นมันสามารถถูกล่ามโซ่ได้หลายครั้งและเอฟเฟกต์ของมันจะกว้างกว่าซึ่งไม่จำเป็นต้องผ่านไฟล์ข้อความ.
อย่างที่คุณเห็น grep เป็นตัวพิมพ์ใหญ่ - เล็ก คุณสามารถใช้แฟล็ก“ -i” เพื่อทำให้ไม่สนใจขนาดตัวพิมพ์.
การเปลี่ยนเส้นทางอินพุต
คุณยังสามารถรับอินพุตจากไฟล์สำหรับคำสั่งโดยใช้สัญลักษณ์ที่น้อยกว่า (<).
แมว < list
“ นั่นไม่แตกต่างจากการใช้ข้อโต้แย้ง!” คุณอาจพูดว่า คุณจะถูกต้องในกรณีนี้ เมื่อการเปลี่ยนเส้นทางของอินพุตเข้ามามีประโยชน์จริงๆอยู่ในการโยงคำสั่งเข้าด้วยกัน.
สมมติว่าเราต้องการกรองคำใด ๆ ที่มี“ pep” อยู่ในนั้นจากไฟล์“ รายการ” ปัจจุบันของเราเป็นไฟล์ใหม่ที่เรียกว่า“ การแก้ไข”.
การแก้ไข grep pep
ลองทำซ้ำคำสั่งนี้และเพิ่มการเรียงลำดับ.
การแก้ไข grep pep
สิ่งนี้จะใช้ "pep" เป็นคำค้นหาจากรายการ "ไฟล์" อินพุตเรียงลำดับตามตัวอักษร (คำศัพท์ตัวพิมพ์ใหญ่ทั้งหมดตามด้วยคำตัวพิมพ์เล็กทั้งหมด) แล้วส่งออกไปยังไฟล์.
เพื่อแสดงคำสั่ง sort ลองดูตัวอย่างต่อไปนี้:
อย่างที่คุณเห็นการเพิ่มแฟล็ก“ -f” ในคำสั่ง sort ช่วยให้คุณไม่ต้องสนใจขนาดตัวพิมพ์ สิ่งนี้ทำให้ง่ายสำหรับเราที่จะเรียงบรรทัดตามตัวอักษรในไฟล์ข้อความและละเว้นการใช้อักษรตัวพิมพ์ใหญ่เมื่อไม่สำคัญ.
สคริปต์ง่าย ๆ
มาสร้างสคริปต์ที่มีแบบฟอร์มต่อไปนี้:
listterm สคริปต์ searchfilem
มันจะใช้คำและใช้ grep เพื่อค้นหาไฟล์รายการเรียงลำดับผลลัพธ์แล้วส่งออกไปยังไฟล์อื่น.
นี่คือไดเรกทอรีที่เราจะทดสอบสคริปต์ใน:
และเราสามารถสร้างรายการสิ่งที่อยู่ที่นี่แล้วเรียกใช้สคริปต์.
ไปแล้ว! ยิ่งคุณเรียนรู้กฎของนิพจน์ทั่วไปมากเท่าไรคุณก็ยิ่งสามารถรวบรวมคำสั่งการค้นหาได้แม่นยำยิ่งขึ้น และสิ่งที่ใช้ได้ในเครื่องหมายคำพูดสามารถใช้แทนอาร์กิวเมนต์แรกของคุณได้!
คุณสามารถทำได้มากกว่าเรียงตามลำดับตัวอักษร ดูหน้า man สำหรับคำสั่งต่อไปนี้:
- tsort - ฟังก์ชันการเรียงลำดับโทโพโลยีขั้นสูง
- tr - ให้คุณแมปอักขระเฉพาะกับอักขระอื่นและคัดลอกระหว่างอักขระเหล่านั้น.
- uniq - ลบที่ไม่ซ้ำกันใด ๆ (อ่าน: ซ้ำกัน)
- awk - ภาษา / ฟังก์ชั่นการประมวลผลข้อความขั้นสูงจริงๆที่สามารถใช้เพื่อแยกฟิลด์ในชื่อไฟล์
- cut, paste / join - คำสั่งที่มีประโยชน์สำหรับการแยกฟิลด์จากไฟล์ข้อความและเพิ่มข้อมูลใหม่ลงในคอลัมน์
- look - การค้นหาเช่น grep ทำ แต่ใช้ไฟล์พจนานุกรม (ซึ่งสามารถระบุได้โดยผู้ใช้) สำหรับการค้นหา
- wc - ให้คุณได้จำนวนการนับจำนวนบรรทัดจำนวนตัวอักษรและอื่น ๆ
เรามาดูข้อมูลพื้นฐานเพิ่มเติมในวันนี้ซึ่งอาจมีประโยชน์กับบรรทัดคำสั่งเหมือนกับในสคริปต์ ข้อมูลที่เป็นข้อความมักเป็นหัวใจสำคัญของสิ่งที่เราใช้ทุกวันดังนั้นความสามารถในการทำงานกับมันค้นหาและจัดการมันเป็นกุญแจสำคัญ.
สคริปต์โปรดของคุณคืออะไร? มีสคริปต์การใช้งานพิเศษสำหรับไฟล์ที่เป็นข้อความหรือไม่? แบ่งปันสิ่งที่คุณรู้ในความคิดเห็น!