Learning AtlasIT Support → Cybersecurity
คลังบทอ่าน04.1 / บรรทัดคำสั่งและสิทธิ์ในเครื่องบทถัดไป
สารบัญบทอ่าน / Command Line and Local Access / 04.1
01 · เริ่มจากเครื่องและระบบ · บท 04.1

Shell Fundamentals

พื้นฐานเชลล์

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

4 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
หัวข้อในบทนี้
จากหลักการไปถึงกลไก

เชลล์แปลงบรรทัดข้อความเป็นคำสั่งอย่างไร

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

ลำดับงาน · อ่านตามลูกศรเชลล์แปลงบรรทัดข้อความเป็นคำสั่งอย่างไร
  1. Location

    ดู current directory ก่อน relative path จะอ้างจากตำแหน่งนี้

  2. Parse

    quotes จัดข้อความมีช่องว่างเป็น argument เดียว ตัวแปรและตัวดำเนินการแปลตามเชลล์

  3. Resolve

    ค้น command จากกลไกและ PATH ของเชลล์ แต่ละ terminal อาจรับ environment ต่างกัน

  4. Execute

    โปรแกรมทำงานด้วย arguments บัญชี และ environment ที่ได้รับ

  5. Result

    อ่าน output error และสถานะจบ ไม่ใช้แค่มีข้อความบนจอเป็นหลักฐานว่างานผ่าน

Absolute path ระบุจากจุดเริ่มของระบบ ส่วน . คือปัจจุบันและ .. คือ parent ตามกติกาที่ใช้ Help อธิบายคำสั่งของระบบนั้น History เป็นเพียงสิ่งที่เคยเรียก ไม่รับรองว่าถูกหรือเหมาะกับพาธปัจจุบัน ตัวแปรของเชลล์กับ environment ที่ส่งให้ process ลูกต้องแยกกัน

01 / 04

เชลล์ลินุกซ์และวินโดวส์Bash and PowerShell · 04.1.1

Bash กับ PowerShell เป็นเชลล์คนละแบบ PowerShell ส่งต่อออบเจ็กต์ได้ ส่วน Bash มักส่งข้อความ

Shell รับข้อความแล้วตีความ command arguments quotes ตัวแปร และตัวดำเนินการ Bash กับ PowerShell ไม่ใช้ไวยากรณ์เดียวกันทั้งหมด PowerShell pipeline ส่งวัตถุได้ ขณะที่เครื่องมือ Unix จำนวนมากรับส่งข้อความ

อ่านภาพตามลำดับการทำงาน
01Shell

ส่วนที่ตีความข้อความคำสั่ง

02Command

โปรแกรมหรือคำสั่งที่ถูกเรียก

03Arguments

ค่าที่ส่งไปบอกว่าจะทำกับอะไร

คำสั่งตัวหนึ่งมีชื่อเหมือนกันสองระบบก็อาจมี options และผลต่างกัน ใช้ help ของเครื่องจริงก่อนนำคำสั่งอีกระบบมารัน

รู้ว่ากำลังสั่งงานที่ไหน
Get-Location
Get-ChildItem

Get-Location แสดงตำแหน่งปัจจุบัน ส่วน Get-ChildItem แสดงรายการ ณ ตำแหน่งนั้น ทั้งคู่เป็นการอ่าน ไม่เปลี่ยนไฟล์ คำสั่ง Linux ที่หน้าที่ใกล้กันคือ pwd และ ls แต่ option กับ output ต่างกัน

ที่มาของหัวข้อนี้ · 2 รายการ

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

02 / 04

พาธและการย้ายตำแหน่งPaths and Navigation · 04.1.2

Absolute path เริ่มจากราก Relative path อิงตำแหน่งปัจจุบัน จึงต้องรู้ว่ากำลังอยู่ที่ไหน

Absolute path ระบุตำแหน่งจากจุดเริ่มต้น Relative path อ่านจาก current directory จุด . หมายถึงตำแหน่งปัจจุบันและ .. หมายถึง parent ตามกติกาที่ใช้ จึงต้องรู้ว่าอยู่ที่ไหนก่อนเลือกไฟล์

เทียบหน้าที่เพื่อไม่สับสน
•Current directory

ฐานที่ relative path เริ่มอ่าน

•Absolute path

เส้นทางเต็มจากจุดเริ่มต้น

•Relative path

เส้นทางเทียบกับฐานปัจจุบัน

report.txt จากโฟลเดอร์ A กับ B อาจเป็นคนละไฟล์ ใช้ pwd หรือ Get-Location ดูตำแหน่ง พาธมีช่องว่างต้องใส่ quotes ตามเชลล์เพื่อไม่แตกเป็นหลาย arguments

ที่มาของหัวข้อนี้ · 2 รายการ

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

03 / 04

คู่มือและประวัติคำสั่งHelp and Command History · 04.1.3

คู่มือบอกตัวเลือกและตัวอย่าง ประวัติคำสั่งช่วยทบทวนสิ่งที่ทำไปแล้ว

Help อธิบาย syntax options และตัวอย่างของคำสั่ง History เก็บสิ่งที่เคยเรียก ไม่ใช่หลักฐานว่าคำสั่งถูกหรือเหมาะกับงานปัจจุบัน ค้นคู่มือจากชื่อและสิ่งที่ต้องการทำก่อนรัน

เทียบหน้าที่เพื่อไม่สับสน
•Syntax

รูปแบบที่คำสั่งรับ

•Options

ตัวเลือกที่เปลี่ยนพฤติกรรม

•History

รายการที่เคยเรียกซึ่งยังต้องตรวจบริบท

man ls หรือ Get-Help Get-Process ช่วยอ่านคำสั่งในระบบนั้น การใช้ history เพื่อรันซ้ำต้องตรวจพาธ เป้าหมาย และค่าที่เปลี่ยนไปก่อน

ที่มาของหัวข้อนี้ · 2 รายการ

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

04 / 04

ตัวแปรสภาพแวดล้อมEnvironment Variables · 04.1.4

Environment variable เก็บค่าที่โปรแกรมอ่านจากสภาพแวดล้อม เช่น PATH ของเครื่องมือ

Environment variables เป็นค่าที่ process รับจากสภาพแวดล้อม เช่น PATH ใช้ค้น executable ตัวแปรของเชลล์กับค่าที่ส่งให้โพรเซสลูกมีรายละเอียดต่างตามระบบ ต้องแยกจาก working directory

เทียบหน้าที่เพื่อไม่สับสน
•PATH

รายการตำแหน่งที่ใช้ค้นโปรแกรม

•Process environment

ค่าที่โปรแกรมได้รับตอนเริ่ม

•Working directory

ตำแหน่งปัจจุบันซึ่งเป็นอีกข้อมูลหนึ่ง

รัน python ได้ใน terminal หนึ่งแต่ไม่ได้ในอีกอันอาจเป็น PATH หรือ environment ต่างกัน การใส่ secrets ใน environment ต้องระวังการส่งต่อและ log ตามรูปแบบระบบ ไม่ใช้เป็นเหตุให้เปิดเผยค่า

ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด

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

เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม

เชื่อมความเข้าใจ

นำศัพท์มาเชื่อมกับงาน

ตัวอย่างให้เห็นภาพ

คำสั่งอ่านไฟล์ชื่อเดียวกันอาจอ่านคนละไฟล์ เมื่อรันจากคนละโฟลเดอร์

สิ่งที่บทนี้เชื่อมไว้

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

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

บันทึกในเบราว์เซอร์นี้
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน

คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้