ความหวังเดิมประการหนึ่งของ Unix คือการช่วยให้ผู้ใช้คอมพิวเตอร์ทุกวันปรับแต่งคอมพิวเตอร์ของตนให้เข้ากับสไตล์การทำงานที่เป็นเอกลักษณ์ ความคาดหวังเกี่ยวกับการปรับแต่งคอมพิวเตอร์ได้ลดลงในช่วงหลายทศวรรษที่ผ่านมา และผู้ใช้จำนวนมากถือว่าคอลเลกชั่นแอปและเว็บไซต์เป็น "สภาพแวดล้อมที่กำหนดเอง" เหตุผลหนึ่งก็คือคอมโพเนนต์ของระบบปฏิบัติการจำนวนมากไม่ได้เปิดอยู่ ผู้ใช้ทั่วไปจึงใช้ซอร์สโค้ดไม่ได้
แต่สำหรับผู้ใช้ลีนุกซ์ โปรแกรมแบบกำหนดเองก็อยู่ใกล้แค่เอื้อมเพราะทั้งระบบอิงตามคำสั่งที่มีให้ผ่านเทอร์มินัล เทอร์มินัลไม่ได้เป็นเพียงอินเทอร์เฟซสำหรับคำสั่งด่วนหรือการแก้ไขปัญหาเชิงลึกเท่านั้น เป็นสภาพแวดล้อมการเขียนสคริปต์ที่สามารถลดภาระงานของคุณด้วยการดูแลงานทั่วไปสำหรับคุณ
วิธีเรียนรู้การเขียนโปรแกรม
หากคุณไม่เคยเขียนโปรแกรมมาก่อน การคิดในแง่ของความท้าทายที่แตกต่างกันสองอย่าง อาจช่วยได้ อย่างหนึ่งคือการทำความเข้าใจวิธีเขียนโค้ด และอีกวิธีหนึ่งคือการทำความเข้าใจว่าต้องเขียนโค้ดอะไร คุณสามารถเรียนรู้ ไวยากรณ์ —แต่คุณจะไปได้ไม่ไกลถ้าไม่รู้ว่ามีคำศัพท์อะไรบ้างในภาษา . ในทางปฏิบัติ คุณเริ่มเรียนรู้ทั้งสองแนวคิดพร้อมกันเพราะคุณไม่สามารถเรียนรู้ไวยากรณ์ได้หากไม่มีคำที่จะจัดเรียง ดังนั้นในขั้นแรก คุณต้องเขียนงานง่ายๆ โดยใช้คำสั่งพื้นฐานและโครงสร้างการเขียนโปรแกรมพื้นฐาน เมื่อคุณรู้สึกสบายใจกับพื้นฐานแล้ว คุณสามารถสำรวจภาษาเพิ่มเติมเพื่อให้โปรแกรมของคุณทำสิ่งที่สำคัญมากขึ้นได้
ใน Bash words . ส่วนใหญ่ ที่คุณใช้คือคำสั่ง Linux ไวยากรณ์ คือทุบตี หากคุณใช้ Bash เป็นประจำอยู่แล้ว การเปลี่ยนไปใช้โปรแกรม Bash นั้นค่อนข้างง่าย แต่ถ้าคุณไม่ได้ใช้ Bash คุณจะยินดีที่ได้เรียนรู้ว่าเป็นภาษาง่ายๆ ที่สร้างขึ้นเพื่อความชัดเจนและความเรียบง่าย
การออกแบบเชิงโต้ตอบ
บางครั้ง สิ่งที่ยากที่สุดในการเรียนรู้เมื่อเรียนรู้การเขียนโปรแกรมคือสิ่งที่คอมพิวเตอร์สามารถช่วยคุณได้ แน่นอน ถ้าคอมพิวเตอร์สามารถทำทุกอย่างที่คุณทำกับมันได้ คุณก็จะไม่ต้องแตะต้องคอมพิวเตอร์อีกเลย แต่ความจริงก็คือมนุษย์มีความสำคัญ กุญแจสำคัญในการค้นหาสิ่งที่คอมพิวเตอร์สามารถช่วยคุณได้คือสังเกตงานที่คุณทำซ้ำๆ ตลอดทั้งสัปดาห์ คอมพิวเตอร์รองรับการทำซ้ำได้ดีเป็นพิเศษ
แต่เพื่อให้คุณสามารถบอกให้คอมพิวเตอร์ทำอะไรได้บ้าง คุณต้องรู้วิธีการทำ นี่คือพื้นที่ที่ Bash เชี่ยวชาญใน:การเขียนโปรแกรมเชิงโต้ตอบ ขณะที่คุณดำเนินการใดๆ ในเทอร์มินัล คุณจะได้เรียนรู้วิธีเขียนสคริปต์ด้วย
ตัวอย่างเช่น ครั้งหนึ่งฉันเคยได้รับมอบหมายให้แปลงหนังสือ PDF จำนวนมากเป็นเวอร์ชันที่ใช้หมึกน้อยและเป็นมิตรกับเครื่องพิมพ์ วิธีหนึ่งในการทำเช่นนี้คือการเปิด PDF ในตัวแก้ไข PDF เลือกแต่ละภาพจากหลายร้อยภาพ—พื้นหลังของหน้าและพื้นผิวที่นับเป็นภาพ—ลบออก แล้วบันทึกลงใน PDF ใหม่ หนังสือเล่มเดียวจะใช้เวลาครึ่งวันด้วยวิธีนี้
ความคิดแรกของฉันคือการเรียนรู้วิธีการเขียนสคริปต์โปรแกรมแก้ไข PDF แต่หลังจากค้นคว้ามาหลายวัน ฉันไม่พบแอปพลิเคชันแก้ไข PDF ที่สามารถเขียนสคริปต์ได้ (นอกเหนือจากการแฮ็กเมาส์อัตโนมัติที่น่าเกลียดมาก) ดังนั้นฉันจึงหันความสนใจไปที่การค้นหาเพื่อทำงานให้สำเร็จจากภายในเทอร์มินัล ส่งผลให้เกิดการค้นพบใหม่ๆ มากมาย รวมถึง GhostScript ซึ่งเป็นเวอร์ชันโอเพนซอร์สของ PostScript (ภาษา PDF ของเครื่องพิมพ์อิงตาม) เมื่อใช้ GhostScript กับงานนี้เป็นเวลาสองสามวัน ฉันยืนยันว่านี่เป็นวิธีแก้ไขปัญหาของฉัน
การสร้างสคริปต์พื้นฐานเพื่อเรียกใช้คำสั่งเป็นเพียงเรื่องของคัดลอกคำสั่งและตัวเลือกที่ฉันใช้เพื่อลบรูปภาพออกจาก PDF และวางลงในไฟล์ข้อความ การเรียกใช้ไฟล์แบบสคริปต์น่าจะให้ผลลัพธ์เหมือนกัน
ส่งผ่านอาร์กิวเมนต์ไปยังสคริปต์ทุบตี
ความแตกต่างระหว่างการรันคำสั่งในเทอร์มินัลและการรันคำสั่งในเชลล์สคริปต์คือคำสั่งก่อนหน้านี้เป็นแบบโต้ตอบ ในเทอร์มินัล คุณสามารถปรับเปลี่ยนสิ่งต่างๆ ได้ตามต้องการ ตัวอย่างเช่น ถ้าฉันเพิ่งประมวลผล example_1.pdf และพร้อมที่จะดำเนินการกับเอกสารถัดไป เพื่อปรับคำสั่งของฉัน ฉันต้องเปลี่ยนชื่อไฟล์เท่านั้น
แม้ว่าเชลล์สคริปต์จะไม่โต้ตอบ อันที่จริง เหตุผลเดียวที่เชลล์ สคริปต์ มีอยู่เพื่อที่คุณจะได้ไม่ต้องไปสนใจมัน นี่คือสาเหตุที่คำสั่ง (และเชลล์สคริปต์ที่เรียกใช้) ยอมรับอาร์กิวเมนต์
ในเชลล์สคริปต์ มีตัวแปรที่กำหนดไว้ล่วงหน้าสองสามตัวที่สะท้อนว่าสคริปต์เริ่มต้นอย่างไร ตัวแปรเริ่มต้นคือ $0 และแสดงถึงคำสั่งที่ออกให้เริ่มสคริปต์ ตัวแปรถัดไปคือ $1 ซึ่งแสดงถึง "อาร์กิวเมนต์" แรกที่ส่งผ่านไปยังเชลล์สคริปต์ ตัวอย่างเช่น ในคำสั่ง echo สวัสดี , คำสั่ง ก้อง คือ $0, และคำว่า สวัสดี คือ $1 . ในคำสั่ง echo สวัสดีชาวโลก , คำสั่ง ก้อง คือ $0 , สวัสดี คือ $1 และ โลก คือ $2 .
ในเชลล์แบบโต้ตอบ:
$ echo hello world
hello world
ในเชลล์สคริปต์ที่ไม่โต้ตอบ คุณ สามารถ ทำสิ่งเดียวกันด้วยวิธีที่แท้จริง พิมพ์ข้อความนี้ลงในไฟล์ข้อความและบันทึกเป็น hello.sh :
echo hello world
ตอนนี้เรียกใช้สคริปต์:
$ bash hello.sh
hello world
ใช้งานได้ แต่ไม่ได้ใช้ประโยชน์จากความจริงที่ว่าสคริปต์สามารถรับข้อมูลได้ เปลี่ยน hello.sh ถึงสิ่งนี้:
echo $1
เรียกใช้สคริปต์ด้วยสองอาร์กิวเมนต์ที่จัดกลุ่มเข้าด้วยกันเป็นหนึ่งด้วยเครื่องหมายอัญประกาศ:
$ bash hello.sh "hello bash"
hello bash
สำหรับโครงการลดขนาด PDF ของฉัน ฉันมีความจำเป็นจริงๆ สำหรับการไม่โต้ตอบประเภทนี้ เพราะ PDF แต่ละรายการใช้เวลาหลายนาทีในการย่อ แต่ด้วยการสร้างสคริปต์ที่รับอินพุตจากฉัน ฉันสามารถป้อนสคริปต์ไฟล์ PDF หลายไฟล์พร้อมกันได้ สคริปต์ประมวลผลแต่ละรายการตามลำดับ ซึ่งอาจใช้เวลาครึ่งชั่วโมงหรือมากกว่านั้น แต่ก็เป็นครึ่งชั่วโมงที่ฉันสามารถใช้สำหรับงานอื่นๆ ได้
การควบคุมการไหล
เป็นที่ยอมรับอย่างสมบูรณ์ในการสร้างสคริปต์ทุบตีที่โดยพื้นฐานแล้วเป็นการถอดเสียงของกระบวนการที่แน่นอนที่คุณใช้เพื่อให้บรรลุงานที่คุณต้องทำซ้ำ อย่างไรก็ตาม สคริปต์สามารถทำให้มีประสิทธิภาพมากขึ้นโดยการควบคุมวิธีที่ข้อมูลไหลผ่าน วิธีการทั่วไปในการจัดการการตอบสนองของสคริปต์ต่อข้อมูลคือ:
- ถ้า/แล้ว
- สำหรับลูป
- ขณะวนซ้ำ
- คำชี้แจงกรณี
คอมพิวเตอร์ไม่ฉลาด แต่สามารถเปรียบเทียบและแยกวิเคราะห์ข้อมูลได้ดี สคริปต์สามารถรู้สึกฉลาดขึ้นได้มากหากคุณสร้างการวิเคราะห์ข้อมูลลงในสคริปต์ ตัวอย่างเช่น hello.sh basic พื้นฐาน สคริปต์ทำงานไม่ว่าจะมีอะไรให้สะท้อนหรือไม่:
$ bash hello.sh foo
foo
$ bash hello.sh
$
มันจะเป็นมิตรกับผู้ใช้มากขึ้นหากมีข้อความช่วยเหลือเมื่อไม่ได้รับอินพุต นั่นคือคำสั่ง if/then และหากคุณใช้ Bash ในลักษณะพื้นฐาน คุณอาจไม่รู้ว่ามีคำสั่งดังกล่าวอยู่ใน Bash แต่ส่วนหนึ่งของการเขียนโปรแกรมคือการเรียนรู้ภาษา และด้วยการค้นคว้าเพียงเล็กน้อย คุณจะได้เรียนรู้เกี่ยวกับคำสั่ง if/then:
if [ "$1" = "" ]; then
echo "syntax: $0 WORD"
echo "If you provide more than one word, enclose them in quotes."
else
echo "$1"
fi
กำลังใช้งาน hello.shเวอร์ชันใหม่นี้ ผลลัพธ์ใน:
$ bash hello.sh
syntax: hello.sh WORD
If you provide more than one word, enclose them in quotes.
$ bash hello.sh "hello world"
hello world
ทำงานผ่านสคริปต์
ไม่ว่าคุณกำลังมองหาบางอย่างที่จะลบรูปภาพออกจากไฟล์ PDF หรือบางอย่างเพื่อจัดการโฟลเดอร์ Downloads ที่รกของคุณ หรือบางอย่างเพื่อสร้างและจัดเตรียมรูปภาพ Kubernetes การเรียนรู้สคริปต์ Bash เป็นเรื่องของการใช้ Bash แล้วเรียนรู้วิธีที่จะใช้สคริปต์เหล่านั้น จากเพียงรายการคำสั่งไปจนถึงสิ่งที่ตอบสนองต่ออินพุต โดยปกติแล้วจะเป็นกระบวนการของการค้นพบ คุณจะต้องพบคำสั่ง Linux ใหม่ที่ทำงานที่คุณคาดไม่ถึงว่าสามารถทำได้ด้วยคำสั่งข้อความ และคุณจะพบกับฟังก์ชันใหม่ของ Bash เพื่อทำให้สคริปต์ของคุณปรับเปลี่ยนได้ตามที่คุณต้องการ ให้วิ่งได้
วิธีหนึ่งในการเรียนรู้กลเม็ดเหล่านี้คืออ่านสคริปต์ของผู้อื่น ทำความเข้าใจว่าผู้คนใช้คำสั่ง rote ในระบบอัตโนมัติอย่างไร ดูสิ่งที่คุณคุ้นเคยและค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ไม่คุ้นเคย
อีกวิธีหนึ่งคือดาวน์โหลดข้อมูลเบื้องต้นเกี่ยวกับการเขียนโปรแกรมด้วย Bash eBook มันแนะนำให้คุณรู้จักกับแนวคิดการเขียนโปรแกรมเฉพาะสำหรับ Bash และด้วยโครงสร้างที่คุณเรียนรู้ คุณสามารถเริ่มสร้างคำสั่งของคุณเองได้ และแน่นอน คุณสามารถดาวน์โหลดและรับใบอนุญาตภายใต้ใบอนุญาต Creative Commons ได้ฟรี ดังนั้นคว้าสำเนาของคุณวันนี้เลย