ใน "โพสต์เมื่อวาน" ฉันได้พูดคุยเกี่ยวกับโครงสร้างโดยเฉพาะในบริบทของตัวเลข โดยเฉพาะในบริบทของ "ระบบฐาน" เช่น ระบบทศนิยม 10 หลักที่เราคุ้นเคย และระบบไบนารี่ 2 หลักที่หุ่นยนต์ชื่นชอบ วันนี้ฉันอยากจะพูดถึงสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

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

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

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

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

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

มาเริ่มกันเลย.

กริยา, คำนาม, การกระทำ, หัวเรื่อง

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

คอมพิวเตอร์ก็ไม่มีข้อยกเว้น การคลิก บนไฟล์ เปิดไฟล์นั้น การกดCtrl+S ในโปรแกรมแก้ไขข้อความ บันทึก เอกสารปัจจุบัน (หรือ เปิดหน้าต่างบันทึก); การกระทำที่ดำเนินการจากเมาส์หรือแป้นพิมพ์จะถูกแปลเป็นการกระทำที่ดำเนินการโดยระบบปฏิบัติการ

ในบรรทัดคำสั่ง เมาส์ไม่ใช่ตัวเลือกอีกต่อไป แต่เราต้องบอกระบบปฏิบัติการให้ชัดเจนว่าเราต้องการให้ระบบปฏิบัติการทำอะไร เราจำเป็นต้องให้ คำแนะนำ เป็นลายลักษณ์อักษร

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

งานแปลครั้งแรกของเรา: การวางไฟล์ในโฟลเดอร์

นี่คือสิ่งที่เราต้องการทำ:

  • สร้างไดเร็กทอรีใหม่
  • สร้างไฟล์ข้อความใหม่
  • ใส่ไฟล์ข้อความลงในไดเร็กทอรี

ต่อไปนี้คือวิธีที่เราจะดำเนินการใน GUI เช่น Windows:

จากประสบการณ์หลายปีกับระบบอย่าง Windows กระบวนการนี้ (การสร้างโฟลเดอร์ใหม่ และการคลิกและลาก) มีแนวโน้มจะกลายเป็นเรื่องธรรมดาสำหรับคุณ คุณเริ่มต้นด้วยสิ่งนี้ในโลกได้อย่างไร?

โชคดีที่นักออกแบบที่อยู่เบื้องหลัง git bash และเชลล์บรรทัดคำสั่งที่คล้ายกันนั้นใจดีพอที่จะมอบโครงสร้างที่สอดคล้องกัน มีลำดับสิ่งที่ในตอนแรกอาจดูเหมือนวุ่นวาย:

ในระดับพื้นฐานอย่างยิ่ง คำสั่งบรรทัดคำสั่งทุกคำสั่งสามารถแบ่งออกเป็น การกระทำ (สิ่งที่เราต้องการ ทำ) และ หัวเรื่อง ( สิ่งที่เรากำลังทำอยู่ เพื่อ หรือ กับ) โครงสร้างนี้มีความสำคัญ หากไม่เข้าใจ คุณจะก็แค่รวบรวมคำหลักแบบสุ่มและหวังว่าจะได้สิ่งที่ดีที่สุด ในที่นี้ การกระทำcd(ย่อมาจาก “change directory”) กำลังกระทำกับ หัวเรื่องDownloads ,กำลังเปลี่ยนของเรา ไดเร็กทอรีการทำงานไปที่ "ดาวน์โหลด"

รูปภาพต่อไปนี้แสดงให้เห็นว่าขั้นตอนที่เหลือในการสร้างไฟล์และไดเร็กทอรีของเราและการย้ายไฟล์และไดเร็กทอรีของเราไปเป็นไฟล์หลังมีลักษณะดังนี้:

สิ่งนี้มีผลเหมือนกันกับสิ่งที่เราทำก่อนหน้านี้ใน GUI โปรดสังเกตว่าไม่ว่าในกรณีใด การดำเนินการที่ทำโดยระบบปฏิบัติการจะเป็นไป

  • สร้างไดเรกทอรีใหม่
  • สร้างไฟล์ข้อความใหม่และ
  • ใส่ไฟล์ข้อความลงในไดเร็กทอรี

GUI และ CLI ได้รับการรวมเป็นหนึ่งเดียวในจุดประสงค์ แม้ว่าวิธีการในการบรรลุเป้าหมายจะแตกต่างกันก็ตาม

คำสั่งแบบสำเร็จรูป: มารับบทคัดย่อกันเถอะ

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

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

และตอนนี้เรากำลังถือว่าคำสั่งเป็นเหมือนวัตถุชิ้นเดียว คำถามทั่วไปที่ต้องถามอาจเป็น “เราจะรวมมันเข้าด้วยกันได้ไหม”

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

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

สร้างไดเร็กทอรี → สร้างไฟล์ → ย้ายไฟล์ไปยังไดเร็กทอรี

เราต้องการทราบวิธีเชื่อมโยงทั้งสามสิ่งนี้เข้าด้วยกัน เมื่อมันเกิดขึ้น bash shell จะมีสัญลักษณ์เพื่อจุดประสงค์นี้โดยเฉพาะ: ตัวดำเนินการ && เราสามารถใส่ &&ระหว่างแต่ละคำสั่งเพื่อเชื่อมโยงเข้าด้วยกัน:

mkdir testFolder && touch test-file-1.txt && mv test-file-1.txt testFolder

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