Shell Fundamentals
พื้นฐานเชลล์
เชลล์รับคำสั่งจากเราแล้วเรียกเครื่องมือให้ทำงาน เริ่มด้วยตำแหน่งปัจจุบันและวิธีขอความช่วยเหลือ
หัวข้อในบทนี้
เชลล์แปลงบรรทัดข้อความเป็นคำสั่งอย่างไร
เชลล์อ่านบรรทัด แยกชื่อคำสั่ง arguments และตัวดำเนินการ แล้วค้นหรือเรียกสิ่งที่จะทำงาน พาธและ quotes จึงเป็นส่วนของความหมาย ไม่ใช่การตกแต่ง Bash กับ PowerShell มีกติกาต่างกัน การจำคำสั่งโดยไม่รู้ input ที่ส่งอาจเลือกไฟล์หรือโปรแกรมผิด
- Location
ดู current directory ก่อน relative path จะอ้างจากตำแหน่งนี้
- Parse
quotes จัดข้อความมีช่องว่างเป็น argument เดียว ตัวแปรและตัวดำเนินการแปลตามเชลล์
- Resolve
ค้น command จากกลไกและ PATH ของเชลล์ แต่ละ terminal อาจรับ environment ต่างกัน
- Execute
โปรแกรมทำงานด้วย arguments บัญชี และ environment ที่ได้รับ
- Result
อ่าน output error และสถานะจบ ไม่ใช้แค่มีข้อความบนจอเป็นหลักฐานว่างานผ่าน
Absolute path ระบุจากจุดเริ่มของระบบ ส่วน . คือปัจจุบันและ .. คือ parent ตามกติกาที่ใช้ Help อธิบายคำสั่งของระบบนั้น History เป็นเพียงสิ่งที่เคยเรียก ไม่รับรองว่าถูกหรือเหมาะกับพาธปัจจุบัน ตัวแปรของเชลล์กับ environment ที่ส่งให้ process ลูกต้องแยกกัน
เชลล์ลินุกซ์และวินโดวส์Bash and PowerShell · 04.1.1
Bash กับ PowerShell เป็นเชลล์คนละแบบ PowerShell ส่งต่อออบเจ็กต์ได้ ส่วน Bash มักส่งข้อความ
Shell รับข้อความแล้วตีความ command arguments quotes ตัวแปร และตัวดำเนินการ Bash กับ PowerShell ไม่ใช้ไวยากรณ์เดียวกันทั้งหมด PowerShell pipeline ส่งวัตถุได้ ขณะที่เครื่องมือ Unix จำนวนมากรับส่งข้อความ
ส่วนที่ตีความข้อความคำสั่ง
โปรแกรมหรือคำสั่งที่ถูกเรียก
ค่าที่ส่งไปบอกว่าจะทำกับอะไร
คำสั่งตัวหนึ่งมีชื่อเหมือนกันสองระบบก็อาจมี options และผลต่างกัน ใช้ help ของเครื่องจริงก่อนนำคำสั่งอีกระบบมารัน
Get-Location
Get-ChildItemGet-Location แสดงตำแหน่งปัจจุบัน ส่วน Get-ChildItem แสดงรายการ ณ ตำแหน่งนั้น ทั้งคู่เป็นการอ่าน ไม่เปลี่ยนไฟล์ คำสั่ง Linux ที่หน้าที่ใกล้กันคือ pwd และ ls แต่ option กับ output ต่างกัน
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Operating Systems and You: Becoming a Power User · Module 1: Navigating the SystemVideo: Linux: Changing Directories in BashIT3.M1.V8
- Operating Systems and You: Becoming a Power User · Module 1: Navigating the SystemVideo: Windows PowershellIT3.M1.V25
พาธและการย้ายตำแหน่งPaths and Navigation · 04.1.2
Absolute path เริ่มจากราก Relative path อิงตำแหน่งปัจจุบัน จึงต้องรู้ว่ากำลังอยู่ที่ไหน
Absolute path ระบุตำแหน่งจากจุดเริ่มต้น Relative path อ่านจาก current directory จุด . หมายถึงตำแหน่งปัจจุบันและ .. หมายถึง parent ตามกติกาที่ใช้ จึงต้องรู้ว่าอยู่ที่ไหนก่อนเลือกไฟล์
ฐานที่ relative path เริ่มอ่าน
เส้นทางเต็มจากจุดเริ่มต้น
เส้นทางเทียบกับฐานปัจจุบัน
report.txt จากโฟลเดอร์ A กับ B อาจเป็นคนละไฟล์ ใช้ pwd หรือ Get-Location ดูตำแหน่ง พาธมีช่องว่างต้องใส่ quotes ตามเชลล์เพื่อไม่แตกเป็นหลาย arguments
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Operating Systems and You: Becoming a Power User · Module 1: Navigating the SystemVideo: Windows and Linux Advanced NavigationIT3.M1.V31
- Tools of the Trade: Linux and SQL · Module 3: Linux commands in the Bash shellVideo: Core commands for navigation and reading filesCY4.M3.V3
คู่มือและประวัติคำสั่งHelp and Command History · 04.1.3
คู่มือบอกตัวเลือกและตัวอย่าง ประวัติคำสั่งช่วยทบทวนสิ่งที่ทำไปแล้ว
Help อธิบาย syntax options และตัวอย่างของคำสั่ง History เก็บสิ่งที่เคยเรียก ไม่ใช่หลักฐานว่าคำสั่งถูกหรือเหมาะกับงานปัจจุบัน ค้นคู่มือจากชื่อและสิ่งที่ต้องการทำก่อนรัน
รูปแบบที่คำสั่งรับ
ตัวเลือกที่เปลี่ยนพฤติกรรม
รายการที่เคยเรียกซึ่งยังต้องตรวจบริบท
man ls หรือ Get-Help Get-Process ช่วยอ่านคำสั่งในระบบนั้น การใช้ history เพื่อรันซ้ำต้องตรวจพาธ เป้าหมาย และค่าที่เปลี่ยนไปก่อน
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Tools of the Trade: Linux and SQL · Module 3: Linux commands in the Bash shellVideo: Man pages within the shellCY4.M3.V11
- Operating Systems and You: Becoming a Power User · Module 1: Navigating the SystemVideo: Windows: Command HistoryIT3.M1.V11
ตัวแปรสภาพแวดล้อมEnvironment Variables · 04.1.4
Environment variable เก็บค่าที่โปรแกรมอ่านจากสภาพแวดล้อม เช่น PATH ของเครื่องมือ
Environment variables เป็นค่าที่ process รับจากสภาพแวดล้อม เช่น PATH ใช้ค้น executable ตัวแปรของเชลล์กับค่าที่ส่งให้โพรเซสลูกมีรายละเอียดต่างตามระบบ ต้องแยกจาก working directory
รายการตำแหน่งที่ใช้ค้นโปรแกรม
ค่าที่โปรแกรมได้รับตอนเริ่ม
ตำแหน่งปัจจุบันซึ่งเป็นอีกข้อมูลหนึ่ง
รัน python ได้ใน terminal หนึ่งแต่ไม่ได้ในอีกอันอาจเป็น PATH หรือ environment ต่างกัน การใส่ secrets ใน environment ต้องระวังการส่งต่อและ log ตามรูปแบบระบบ ไม่ใช้เป็นเหตุให้เปิดเผยค่า
ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม
นำศัพท์มาเชื่อมกับงาน
คำสั่งอ่านไฟล์ชื่อเดียวกันอาจอ่านคนละไฟล์ เมื่อรันจากคนละโฟลเดอร์
สิ่งที่บทนี้เชื่อมไว้
เชลล์รับคำสั่งจากเราแล้วเรียกเครื่องมือให้ทำงาน เริ่มด้วยตำแหน่งปัจจุบันและวิธีขอความช่วยเหลือ
ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน
คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้