Basic Commands

Basic Linux Command Interface

Useful shortcuts

Shortcutคำอธิบาย

Ctrl + A

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

Ctrl + E

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

Alt + F

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

Alt + B

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

Ctrl + L

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

Ctrl + R

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

Ctrl + C

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

Ctrl + D

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

Ctrl + Z

หยุดพักคำสั่งชั่วคราว

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

Command Sequences

ผู้ใช้สามารถป้อนคำสั่งมากกว่าหนึ่งคำสั่งไปพร้อมกันโดยใช้ตัวดำเนินการควบคุม (Control Operators) ได้แก่ || && & ; ;; | ( ) เป็นต้น ซึ่งการเรียงชุดคำสั่งอย่างง่ายที่สุดในกรณีที่มีมากกว่า 1 คำสั่งเป็นต้นไป จะใช้เครื่องหมาย ; อัฒภาค (semicolon) shell จะรับคำสั่งและดำเนินการทีละคำสั่งตามลำดับ ในกรณีที่จะมีการตรวจสอบผลลัพธ์การทำงานของแต่ละคำสั่งว่าสำเร็จหรือล้มเหลวนั้น ระบบปฏิบัติการลีนุกซ์จะมีการคืนค่ากลับคือถ้าคืนค่ากลับมาเลขศูนย์จะหมายถึงคำสั่งดำเนินการสำเร็จ แต่ถ้าเป็นตัวเลขอื่นๆจะถือว่าคำสั่งนั้นทำงานล้มเหลว ดังนั้นผู้ใช้สามารถกำหนดเส้นทางการทำงานตามเงื่อนไขที่ออกมาโดยใช้ตัวดำเนินการ AND && และ OR || ตัวอย่างเช่น

$ ls
android  ccache     Downloads  kernel   output.txt  Templates  workspace
aosp     Desktop    error.log  Music    Pictures    test.txt
bin      Documents  git        one.txt  Public      Videos

$ ls test.txt && echo "OK... File exists"
test.txt
OK... File exists

$ ls mail.txt && echo "OK... File exists"
ls: cannot access mail.txt: No such file or directory

จากคำสั่งข้างต้น ไฟล์ test.txt มีอยู่ในไดเรกทอรีจึงทำให้ระบบปฏิบัติการลีนุกซ์คืนค่ากลับมาเป็นศูนย์ คำสั่งถัดไปจึงทำงานต่อได้ แต่ในขณะที่ไฟล์ mail.txt ไม่ได้อยู่ในไดเรกทอรี แสดงถึงการทำงานล้มเหลว ทำให้ไม่มีการทำคำสั่งตัวถัดไป แต่หากใช้ตัวดำเนินการ || คำสั่งถัดมาจะถูกทำงานในกรณีที่คำสั่งแรกมีการคืนค่ากลับมาไม่เท่ากับศูนย์ ดังตัวอย่างข้างล่าง

$ ls test.txt || echo "OK... File exists"
test.txt

$ ls mail.txt || echo "No File exists"
ls: cannot access mail.txt: No such file or directory
ON File exists

แต่หากต้องการนำตัวดำเนินการ && และ || มาประยุกต์ใช้ในการตรวจสอบเงื่อนไขเหมือนชุดคำสั่ง if (เงื่อนไข) ..(จริง).. else ..(เท็จ).. หรือ if (เงื่อนไข) ? ..(จริง).. : ..(เท็จ).. ในภาษาโปรแกรมทั่วไป จะมีรูปแบบการเขียนดังนี้

$ ls test.txt && echo "OK...File exists" || echo "Oh Bad... File not found"
test.txt
OK...File exists

$ ls mail.txt && echo "OK...File exists" || echo "Oh Bad... File not found"
ls: cannot access mail.txt: No such file or directory
Oh Bad... File not found

Standard I/O

รายละเอียดขบวนการทำงานของ Shell ในระบบปฏิบัติการลีนุกซ์ จะมีพื้นฐานสำคัญคือ วิธีการเชื่อมต่อระหว่างโปรแกรมและสิ่งแวดล้อมของตัวโปรแกรมเองภายในเทอร์มินัล (Terminal) ที่เรียกว่า I/O ซึ่งรูปข้างล่างนี้เป็นการแสดงการเชื่อมต่อของอุปกรณ์ I/O มาตราฐานพื้นฐานของระบบที่มีอยู่ 3 ชนิด ได้แก่

ตารางรายละเอียดพื้นฐานของ Standard I/O

Stream มาตราฐานFDรายละเอียด

stdin (Standard Input Stream)

0

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

stdout (Standard Output)

1

สำหรับแสดงผลลัพธ์ที่ถูกส่งออกมาจากโปรแกรม เพื่อส่งข้อความผลลัพธ์ออกมาแสดงบนจอภาพ

stderr (Standard Error)

2

สำหรับแสดงผลความผิดพลาดเกิดจากการทำงานของโปรแกรมที่รับคำสั่งมาประมวลผล ออกจากหน้าจอภาพ

Redirections

ระบบปฏิบัติการลีนุกซ์นั้นได้เตรียมเครื่องมือตัวดำเนินการที่สามารถควบคุมกลไกการไหลของข้อมูลจากทิศทางหนึ่งไปยังอีกทิศทางหนึ่งหรืออธิบายง่ายๆคือการเปลี่ยนเส้นทางข้อมูลว่าจะให้ออกตัว standard stream ตัวใด โดยการใช้ตัวดำเนินการ < แทน stdin (Standard Input) และ > แทน stdout (Standard Output) ซึ่งตัวดำเนินการ redirection นั้นมีอยู่ด้วยกัน 5 แบบตามรายละเอียดในตารางข้างล่าง

ตารางตัวดำเนินการ redirection

ตัวดำเนินการรายละเอียด

< ไฟล์

เปิดไฟล์สำหรับอ่านข้อมูลภายในไฟล์

<< token

ใช้ในกรณีที่เป็นคำสั่งหรือเชลล์สคริปท์ที่ต้องการรับค่าจนกระทั่งเจอ token

> ไฟล์

เปิดไฟล์สำหรับเขียนทับข้อมูลใหม่

>> ไฟล์

เปิดไฟล์สำหรับเขียนต่อท้ายจากข้อมูลเดิม

n>&m

เปลี่ยนเส้นทางของ File Descriptor (FD) เดิม n ไปที่ใหม่ m

ยกตัวอย่างเช่น การใช้งานการส่งอินพุทจากไฟล์ /etc/passwd ให้กับคำสั่ง grep และการส่งอินพุทจากการป้อนข้อความให้กับคำสั่ง sort ดังแสดงข้างล่าง

$ grep -i student < /etc/passwd
student:x:1000:1000:EE-Burapha Student,,,:/home/student:/bin/bash

$ sort << END
> 55233424 Wiroon Sriborrirux
> 55237346 Nayot Kurukitkoson
> 55236477 Panuwat Dankhang
> END
55233424 Wiroon Sriborrirux
55236477 Panuwat Dankhang
55237346 Nayot Kurukitkoson
$ sort -k2 << END
> 55233424 Wiroon Sriborrirux
> 55237346 Nayot Kurukitkoson
> 55236477 Panuwat Dankhang
> END
55237346 Nayot Kurukitkoson
55236477 Panuwat Dankhang
55233424 Wiroon Sriborrirux

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

$ grep -i student /etc/passwd > /tmp/results

$ ls /tmp/
CRX_75DAF8CB7768    orbit-student       ssh-pqdoFN1336  vmware-root-2
hsperfdata_student  pulse-Xti8iSZ9STOh  VMwareDnD       vmware-student
keyring-27UIsq      results             vmware-root

$ cat /tmp/results 
student:x:1000:1000:EE-Burapha Student,,,:/home/student:/bin/bash

ตัวอย่างการใช้คำสั่ง cat เพื่อแสดงข้อมูลภายในไฟล์ จะมีการแสดงข้อความผิดพลาด (Error message) ออกทางหน้าจอ ถ้าไฟล์นั้นไม่มีอยู่ในไดเรกทอรี

$ cat one.txt two.txt 2>&1
This is the data inside
cat: two.txt: No such file or directory

สามารถกรองข้อความผิดพลาดให้ไปเก็บไว้ในไฟล์ชื่อ error.log ด้วยตัวดำเนินการ 2>

$ cat one.txt two.txt 2> error.log
This is the data inside

ในกรณีที่ไม่ต้องการเก็บข้อความผิดพลาด สามารถทำได้โดยส่งไปให้ไฟล์ชื่อ /dev/null

$ cat one.txt two.txt 2> /dev/null
This is the data inside

บันทึกข้อความผิดพลาดเพิ่มต่อเข้าไปในไฟล์ error.log ด้วยตัวดำเนินการ 2>>

$ cat one.txt two.txt three.txt 2>> error.log
This is the data inside

$ cat error.log 
cat: two.txt: No such file or directory
cat: two.txt: No such file or directory
cat: three.txt: No such file or directory

Last updated: July 2023

Authors:

  • Assoc. Prof. Wiroon Sriborrirux

  • Thanaluk Pranekunakol (AIC-Researcher), Waratith Sawangboon (AIC-Researcher)

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