Command Line Interface (CLI)

กระบวนการทำงานของเชลล์ และชุดคำสั่งที่เกี่ยวข้อง (Command Sequences)

เชลล์ (Shell)

shell เป็นตัวกลางในการรับคำสั่ง (Command Line) จากผู้ใช้แล้วจะทำการแปลชุดคำสั่ง (Command Line Interpreter - CLI) ที่ผู้ใช้ป้อนเข้ามา โดยขบวนการภายในตัว shell จะซ่อนรายละเอียดอันซับซ้อนของระบบปฏิบัติการเอาไว้ โดยที่ผู้ใช้จะไม่รู้ว่าหลังจากที่ป้อนคำสั่งไปแล้วภายในจะต้องมีขบวนการเช่นไรบ้าง ตัวอย่างเช่น ถ้าผู้ใช้ต้องการทราบหน่วยความจำที่เหลือหรือพื้นที่ของฮาร์ดดิสก์ที่เหลืออยู่ ผู้ใช้เพียงพิมพ์คำสั่ง free/df ตัว shell ก็จะทำหน้าเชื่อมต่อและเข้าไปจัดการในหน่วยความจำหรือฮาร์ดดิสก์ให้ตรวจสอบตัวเองว่าขณะนี้มีการใช้งานเก็บข้อมูลไปเท่าไหร่แล้วและเหลือพื้นที่ให้ใช้งานได้อีกเท่าไหร่ ซึ่งขบวนการดังที่ได้กล่าวข้างต้นเป็นการติดต่อสื่อสารในระดับล่างที่เรียกว่าระดับเคอร์เนล ซึ่งถือได้ว่าเป็นแกนกลางสำคัญในการควบคุมการทำงานระบบทั้งหมดภายในเครื่องคอมพิวเตอร์ โดยจะกล่าวถึงรายละเอียดของเคอร์เนลในบทถัดๆไป

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

ขบวนการทำงานของ Shell

ตัวอย่างการแสดง prompt ในรูปแบบต่างๆ เมื่อเข้าสู่ระบบปฏิบัติการในฐานะผู้ใช้ทั่วไป

นอกจากนั้นเมื่อผู้ใช้ต้องการเข้าในฐานะผู้ดูแลระบบที่เรียกว่า Superuser หรือ root โดยใช้คำสั่ง sudo su เพื่อเปลี่ยนมาเป็น root ดังคำสั่งข้างล่างนี้

จากคำสั่งข้างต้นเมื่อผู้ใช้ระบุรหัสผ่านของ Superuser แล้ว ก็แสดงผลของ prompt นั้นจากเดิมใช้สัญลักษณ์ “$” ก็จะถูกเปลี่ยนเป็นสัญลักษณ์ “#” เพื่อบอกให้สามารถถึงการเปลี่ยนมาอยู่ในฐานะ root เรียบร้อยแล้ว

ตัวแปรสภาพแวดล้อมของระบบ (Environment Variable)

ตัวแปรสภาพแวดล้อม (Environment variables) เป็นตัวแปรที่มีความสำคัญมากในระบบปฏิบัติการลีนุกซ์ เนื่องจากเป็นตัวแปรกลางที่ shell หรือ โปรแกรมประยุกต์ต่างๆสามารถเรียกใช้งานได้ อาทิเช่น ตัวแปรที่เก็บข้อมูลของ shell หรือตัวแปรที่เก็บข้อมูลของไดเรกทอรีประจำตัวของผู้ใช้ (Home Directory) และยังมีตัวแปรต่างๆ อีกมากมายที่ shell ได้มีการตั้งค่าไว้ในขณะที่ shell เริ่มทำงาน ตัวอย่างเช่น bash shell จะมีการเรียกไฟล์เริ่มต้นอยู่ 2 ไฟล์ได้แก่ ไฟล์ ~/.profile และไฟล์ ~/.bashrc

ในกรณีที่เป็น zsh shell ซึ่งในปัจจุบันกำลังได้รับความนิยม จะอ้างอิงไฟล์ ~/.zshrc

asciicast ตัวอย่างการติดตั้ง Oh-My-Zsh Shell

เมื่อผู้ใช้เข้าสู่ระบบ Login โดยการใช้งานผ่านหน้าจอเทอร์มินัลซึ่งนิยมเรียกสั้นๆว่า tty (Teletypewriter) เมื่อหน้าจอเทอร์มินัลถูกสร้างขึ้น ตัวโปรแกรมสำหรับการเข้าสู่ระบบก็จะถูกเรียกขึ้นมาเพื่อแสดงข้อความให้ผู้ใช้กรอกชื่อผู้ใช้ (username) และรหัสผ่าน (password) เมื่อเข้าสู่ระบบได้สำเร็จก็จะทำการเรียกโปรแกรม shell เพื่ออ่านค่าพื้นฐานที่ตั้งไว้สำหรับสภาพแวดล้อมของระบบ (system environments) ดังขั้นตอนในรูปข้างล่าง

ขั้นตอนการเข้าสู่ระบบปฏิบัติการผ่านเทอร์มินัล

แสดงรายชื่อ Shells ที่มีอยู่ในระบบ Linux โดยดูจากไฟล์ /etc/shells

ตัวอย่างการตรวจสอบชนิดของ shell ที่กำลังใช้งานอยู่ในระบบด้วยคำสั่ง echo และตรวจสอบรุ่นของ shell ด้วย --version

นอกจากนั้นระบบจะมีการตั้งค่าตัวแปรระบบพื้นฐาน ซึ่งเป็นตัวแปรสำคัญที่จะพบเจอบ่อยได้แก่

ตารางแสดงตัวแปรระบบ

ชื่อ
คำอธิบาย

USER

เรียกชื่อผู้ใช้งานที่ใช้ในการเข้าสู่ระบบ

UID

เรียกรหัสผู้ใช้งานที่ใช้ในการเข้าสู่ระบบ

HOME

เรียก Home Directory

PWD

เรียก Directory ที่กำลังใช้งาน

SHELL

เรียกชื่อ shell ที่กำลังใช้งาน

$

เรียก process id ที่กำลังใช้งาน

PPID

เรียก process id ที่ได้รับการสืบทอดมา

?

The exit code of the last command

คำสั่ง Echo

เป็นคำสั่งที่ใช้ในการแสดงข้อความใดๆที่ต้องการให้ถูกปรากฏบนหน้าต่างเทอร์มินัล ดังตัวอย่างการใช้คำสั่งดังนี้

จากตัวอย่างจะเห็นว่าคำสั่ง echo จะไม่สนใจช่องว่างว่าจะมีกี่ช่องว่าง การแสดงผลจะถูกตัดช่องว่างเหลือเพียง 1 ช่องว่างเสมอ แต่ถ้าต้องการให้แสดงผลลัพธ์ตามระยะห่างที่ต้องการจะต้องใช้เครื่องหมาย อัญประกาศ (‘ -Apostrophe) หรือเครื่องหมายคำพูด (“ - Quotation Mark) ครอบข้อความนั้น เนื่องจากใน Bash shell นั้นจะใช้ white space (โดยการกดปุ่ม space bar) ในการแยกข้อความออกเป็น token หรือเรียกว่า พารามิเตอร์เพื่อใช้ในการแสดงผล แต่ถ้ามีการใส่เครื่องหมายครอบข้อความเช่น ‘Burapha University’ ข้อความนั้นจะถูกเก็บไว้ใน token เพียงตัวเดียว

การใช้งานคำสั่ง echo จะมีตัวเลือก (Option) หลายแบบ (ซึ่งสามารถดูรายละเอียดคำสั่งได้โดยพิมพ์ man echo) ยกตัวอย่างเช่น การใช้ตัวเลือก -n ต่อท้ายคำสั่ง echo จะหมายถึงการไม่ขึ้นบรรทัดใหม่ (New Line)

แต่ถ้าต้องการขึ้นบรรทัดใหม่ตามอักขระพิเศษ \n (new line) ต้องระบุตัวเลือก -e หลังคำสั่ง echo

นอกจากอักขระ \n แล้วยังมีอักขระในการควบคุมการแสดงผลข้อความดังรายละเอียดในตารางข้างล่างนี้

ตารางแสดงการใช้งานอักขระพิเศษ

Escape sequence
รายละเอียด

\a

Alert (bell)

\b

Backspace

\c

หยุดการขึ้นบรรทัดใหม่ (ลักษณะเดียวกับการใช้งาน -n)

\f

Form feed

\n

New line

\r

Carriage return

\t

Horizontal tab

ในการใช้งาน Bash shell นั้นยังมีอักขระเฉพาะมากมายที่ไม่สามารถนำมาใช้แสดงเป็นตัวข้อความได้ เนื่องจากถูกใช้เป็นเครื่องมือในการจัดการอินพุทของคำสั่ง เช่น '|', '&', ';', '(', ')', '<', '>' แต่ถ้าต้องการแสดงอักขระเหล่านี้ให้ปรากฏอยู่ในข้อความจะต้องเติมสัญลักษณ์ \ นำหน้าอักขระเสมอ หรือใช้เครื่องหมายอัญประกาศครอบทั้งข้อความที่มีอักขระผสมอยู่ก็ได้

ตัวอย่างการใช้สัญลักษณ์ \ นำหน้าอักขระที่ต้องการแสดงเป็นข้อความ

env และ export

คำสั่ง export เป็นคำสั่งที่ผู้ใช้งานสามารถสร้างตัวแประบบเพิ่มเติมได้เอง โดยการระบุเข้าไปในไฟล์ .bashrc หรือพิมพ์คำสั่งการตั้งค่าได้โดยตรงใน terminal ดังตัวอย่างข้างล่าง

หากผู้ใช้ต้องการดูค่าตัวแประบบที่มีการใช้งานอยู่ สามารถใช้คำสั่ง env หรือ export -p ดังนี้

ยกตัวอย่างการใช้คำสั่ง echo เพื่อแสดงค่าภายในตัวแประบบ

ตารางปรับแต่งการแสดง shell prompt

คำสั่ง
คำอธิบาย

PS1='\w $ '

แสดงไดเรกทอรีใน shell prompt

PS1='\h $ '

แสดงชื่อ hostname ใน shell prompt

PS1='\u $ '

แสดงชื่อ user ใน shell prompt

PS1='\t $ '

แสดงเวลา 24-hr time format ใน shell prompt

PS1='@ $ '

แสดงเวลา 12-hr time format ใน shell prompt

PS1='! $ '

แสดงหมายเลข history ใน shell prompt

PS1='EE $ '

แสดงชื่อที่กำหนด "EE" ใน shell prompt

รายการประวัติการใช้คำสั่ง (Command History)

คำสั่ง History

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

ตารางรายละเอียดคำสั่ง history

คำสั่ง
คำอธิบาย

history

แสดงรายการคำสั่งย้อนหลังทั้งหมด

history N

แสดงรายการคำสั่งย้อนหลังจำนวน N คำสั่งล่าสุด

history -d N

ลบรายการคำสั่งลำดับที่ N

!!

เรียกคำสั่งย้อนหลังล่าสุด

!N

เรียกคำสั่งย้อนหลังลำดับที่ N

!-N

เรียกคำสั่งย้อนหลังกลับไปที่ N ตัว (!-1 มีค่าเท่ากับ !!)

!#

คำสั่งปัจจุบันที่กำลังเรียกอยู่

!string

คำสั่งที่นำหน้าด้วยคำว่า string

!?string?

คำสั่งที่มีคำว่า string บรรจุอยู่

ตัวอย่างคำสั่ง

การใช้คู่มือคำสั่ง (Man Page)

เอกสารการใช้งานคำสั่งต่างๆเมื่อได้ติดตั้งโปรแกรมลงในระบบปฏิบัติการลีนุกซ์ เรียกว่า “Manual Pages” โดยสามารถเรียกดูผ่านคำสั่ง man ดังแสดงในรูปข้างล่าง

รายละเอียดการใช้คำสั่ง man

จากรูปข้างบนจะแสดงรายละเอียดของการใช้คำสั่ง man เพื่อที่จะเรียกดูเอกสารการใช้งานของคำสั่งสำหรับผู้ใช้ทั่วไป นอกจากนั้นยังสามารถดูเอกสารการใช้งานอื่นๆได้แก่

  • User commands (env, ls, echo, mkdir, tty)

  • System calls หรือ kernel functions (link, sethostname, mkdir)

  • Library routines (acosh, asctime, btree, locale, XML::Parser)

  • Device related information (isdn_audio, mouse, tty, zero)

  • File format descriptions (keymaps, motd, wvdial.conf)

  • Miscellaneous (arp, boot, regex, unix utf8)

  • System administration (debugfs, fdisk, fsck, mount, renice, rpm)

มีอยู่ 2 คำสั่งที่เกี่ยวข้องกับคำสั่ง man คือคำสั่ง whatis และ คำสั่ง apropos โดยคำสั่ง whatis จะทำการค้นหา manual pages สำหรับคำสั่งที่ต้องการทราบ ส่วนคำสั่ง aporpos จะค้นหาคำสำคัญ (Keyword) ใน manual pages ดังตัวอย่างข้างล่าง

Last updated

Was this helpful?