Shell Principles

เชลล์ (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

ปฏิบัติ

Link: Command line interface

BDH Shell for PSOC™ 6S2

BDH Shell is developed and customized based on NT-Shell (Natural Tiny Shell) is a C library for embedded systems. It provides VT100 compatible terminal control feature and needs only serial read/write functions for the porting.

NT Shell Architecture

Features

  • Compatible with VT100

  • Really simple.

    • The API has only three functions.

    • It consists of only three small modules.

  • Highly portable.

    • Compatible with C89.

    • No dependencies. (even libc!)

    • No dynamic memory allocation. (no need a operating system!)

  • Small code foot print.

    • ROM: 10KB

    • RAM: 1KB

Edit Controls

Shortcut
คำอธิบาย

Ctrl + A or Home

ย้าย cursor ไปที่ต้นบรรทัด

Ctrl + E or End

ย้าย cursor ไปที่ปลายบรรทัด

Ctrl + F or Right arrow

ขยับ cursor ไปข้างหน้าโดยข้ามไปทีละคำ (word)

Ctrl + B or Left arrow

ขยับ cursor ถอยหลังโดยข้ามไปทีละคำ (word)

Ctrl + L

ล้างหน้าจอ terminal คล้ายกับคำสั่ง clear

Ctrl + R

ค้นหาคำสั่งที่เคยพิมพ์มาก่อนหน้านี้

Ctrl + C

หยุดการทำงานของโปรแกรม

Ctrl + D or Delete

logout หรือออกจากคำสั่งที่กำลังทำงานอยู่

Ctrl + P

ค้นหาคำสั่งแบบย้อนหลัง หรือ History search (backward)

Ctrl + N

ค้นหาคำสั่งแบบไปข้างหน้า หรือ History search (forward)

TAB

เติมเต็มคำสั่งที่เคยเรียกใช้อัตโนมัติ

Basic Commands

ชุดคำสั่ง
คำอธิบาย
ตัวอย่าง

mkdir

ใช้สร้างไดเรกทอรี่ใหม่

mkdir (ชื่อไดเรกทอรี่)

เช่น mkdir test1

cd

การเข้าสู่ไดเรกทอรี่ที่ต้องการ

cd (ไดเรกทอรี่ที่ต้องการเข้า)

เช่น cd test1

touch

ใช้สร้างไฟล์ หรืออัพเดตเวลาการแก้ไขไฟล์ล่าสุด

touch test.txt touch -m test.txt

ls

แสดงไฟล์ที่อยู่ในไดเรกทอรี่

ls

cp

เป็นคำสั่งที่ใช้ในการคัดลอกไฟล์

(ทั้งไฟล์เดียวและหลายไฟล์)

โดยระบุ source และ target

cp (ชื่อไฟล์) (ที่อยู่ที่ต้องการคัดลอกไฟล์ไปไว้)

เช่น cp test.txt test1 คือการ copy file ชื่อ test.txt ไปไว้ในไดเรกทอรี่ test1

mv

เป็นคำสั่งที่ใช้ในการโยกย้ายไฟล์ หรือ

เปลี่ยนชื่อไฟล์

mv (ชื่อไดเรกทอรี่เดิม) (ชื่อไดเรกทอรี่ใหม่ที่ต้องการย้ายไป)

mv file.txt /test1 เปลี่ยนชื่อไฟล์ mv (ชื่อเก่า) (ชื่อใหม่) mv file.txt newfile.txt

rm

ใช้ในการลบไฟล์โดยสามารถใช้ได้ทั้ง

ไฟล์เดียวหรือหลายไฟล์

rm (ตามด้วยชื่อไฟล์ที่ต้องการลบ)

rm test1.txt

rmdir

ใช้ลบไดเรกทอรี่ ซึ่งสามารถลบได้

เฉพาะไดเรกทอรีว่างเท่านั้น

rmdir directory_name

echo

เป็นคำสั่งที่ใช้ในการแสดงข้อความใดๆ

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

echo (ข้อความที่ต้องการแสดง)

echo Hello echo this is message >> test.txt

cat

ใช้แสดงข้อมูลที่อยู่ในไฟล์ออกมา

แสดงครั้งเดียวพร้อมกันทั้งหมด ในบางครั้งก็

ใช้ในการรวมไฟล์หลายไฟล์เข้าด้วยกันมา

เป็นไฟล์เดียว และสามารถใช้สร้างไฟล์

cat (ไฟล์.txt)

เช่น cat test.txt

clear

ล้าง terminal ให้อยู่ใน init state

clear

df

แสดง ผลได้ทั้งจำนวนพื้นที่ที่มีการใช้งาน

ไปแล้วในระบบ และพื้นที่ว่างที่สามารถใช้งาน

df -h

du

คำสั่งที่ใช้ในการตรวจสอบขนาดการใช้งาน

ไดเรกทอรีที่ชี้อยู่ (mount point) รวมถึง

ไดเรกทอรีย่อยๆลงไปจากตำแหน่งปัจจุบัน

du -h

pwd

แสดงไดเรกทอรี่ที่กำลังใช้งาน

pwd

ifconfig

ตรวจสอบว่ากำลังใช้ Network Interface

Card (NIC) หมายเลขตัวใดอยู่ เช่น eth0

หรือ eth1 เป็นต้น

ifconfig

tar

ใช้สำหรับแตกไฟล์นามสกุล tar

และบีบอัดไฟล์หรือไดเรกทอรี่ให้เป็น

ไฟล์นามสกุล tar

tar cvf (ชื่อไฟล์.tar) (ไดเรกทอรี่หรือไฟล์ที่ต้องการบีบอัด)

เช่น tar cvf test1.tar test1

คำสั่งแตกไฟล์ tar

tar xvf test1.tar

chmod

การกำหนดสิทธิ์ในการเข้าถึงไฟล์

โดยแบ่งสิทธิ์ไว้ 3 กลุ่มคือ Owner Group

publie ซึ่งจะแทนตัวเลข 0-7 ในการกำหนด

สิทธิ์ของแต่ละกลุ่ม เช่น 644 (เลขฐานแปด)หรือเทียบเท่ากับ rw-r--r-- หมายถึง เจ้าของอ่านและเขียนได้ แต่คนอื่น

ทั่วไปอ่านได้อย่างเดียว

chmod (กำหนดสิทธิ์การเข้าถึง) (ชื่อไฟล์)

เช่น chmod 644 test

uname

แสดงชื่อของระบบปฏิบัติการที่ใช้งานอยู่

uname -a

ps aux

ใช้แสดงรายการประมวลผลต่างที่กำลัง

ทำงานอยู่ของระบบแบบระเอียด

ps aux

kill

การส่งสัญญาณเข้าไปขัดจังหวะโปรเซส

เพื่อบอกกับโปรเซสตามวัตถุประสงค์ของสัญญาณ้ส่งไป สามารถดูตัวเลข process

ได้จาก คำสั่ง kill -l

kill (ตัวเลข process) (PID)

เช่น kill –9 203

zip

ใช้บีบอัดไฟล์เป็นนามสกุล zip

zip (ชื่อไฟล์.zip) ไฟล์ที่ต้องการzip

เช่น zip test.zip test

unzip

ใช้แตกไฟล์นามสกุล zip

unzip (ไฟล์.zip)

เช่น unzip test.zip

sudo su

ใช้เมื่อผู้ใช้ต้องการเข้าในฐานะผู้ดูแลระบบ

ที่เรียกว่า Superuser หรือ root

sudo su

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University