Linux Basics

บทนำ

รายวิชา 10306241 ในการทำปฏิบัตการและทำงานกับเครื่องมือต่าง ๆ จำเป็นต้องใช้คำสั่ง Linux command line ในหลาย ๆ ส่วน โดย Lab นี้มีจุดมุ่งหมายเพื่อให้นักศึกษาได้รับข้อมูลเบื้องต้นเกี่ยวกับการใช้คำสั่งพื้นฐานของ Linux ในส่วนต่าง ๆ และการทำงานทั่วไป

นักศึกษาจะได้พัฒนาทักษะการทำงานกับ Command Line ในอีกหลายรายวิชาอื่น ๆ ของหลักสูตรต่อไป ซึ่งท้ายที่สุดของการศึกษาแล้วคำสั่ง Command line จะเป็นส่วนหนึ่งที่จำเป็นในการทำงานในด้านเทคโนโลยีสารสนเทศ ซึ่งมีการใช้กันอย่างกว้างขวางในเหล่านักเทคโนโลยีสารสนเทศในระดับผู้เชี่ยวชาญ และยังทำให้นักศึกษาสามารถเรียนรู้เทคโนโลยีอื่น ๆ เพิ่มเติมได้อีกมากมายด้วยตัวเอง

สิ่งที่ต้องทำก่อน (Pre-Lab)

ให้นักศึกษาทุกคนนำเครื่องคอมพิวเตอร์ของตัวเองมาทำปฏิบัติการทุกครั้ง (ในกรณีที่นักศึกษาคนไหนไม่มีให้ดำเนินการยืมได้ที่สาขาวิชา)

ก่อนเริ่มปฏิบัติการนี้ นักศึกษาทุกคนต้องทำการติดตั้งเครื่องมือที่จะใช้ในการทำปฏิบัติการสำหรับระบบ Linux โดยขั้นตอนการดาวน์โหลดและติดตั้งนั้นจะใช้เวลานานเกินกว่าจะทำในชั้นเรียนได้ ดังนั้นให้นักศึกษาทุกคนดำเนินการติดตั้งให้เรียบร้อยโดยสามารถทำตามขั้นตอนต่าง ๆ ดังลิงค์ต่อไปนี้

Background Information

Lab Part 1 – เริ่มต้นกับ Ubuntu

เนื่องจากข้อจำกัดหลาย ๆ ด้านที่เราไม่อาจติดตั้งระบบปฏิบัติการ Ubuntu ได้บนเครื่องคอมพิวเตอร์ของนักศึกษา (ส่วนใหญ่ใช้ระบบปฏิบัติการ Windows และ Max OS) เราจึงจำเป็นต้องจำลองการติดตั้งระบบปฏิบัติการ Ubuntu บนเครื่องคอมพิวเตอร์ปัจจุบันของเราไม่ว่าจะเป็นระบบปฏิบัติการ Windows หรือ MaxOS หากนักศึกษาทำการติดตั้งโปรแกรมตามขั้นตอนใน Pre-Lab เสร็จแล้วจะสามารถดำเนินการต่อได้ แต่หากยังไม่ได้ดำเนินการให้กลับไปทำเนินการให้เสร็จเรียบร้อยก่อน

ขั้นตอนที่ 1

ให้นักศึกษาเปิดโปรแกรม Docker โดยค้นหา Docker และเลือก Docker Desktop ซึ่งผลการค้นหาดังแสดงในรูป

หลังจากนั้นโปรแกรมจะแสดงหน้าจอดังแสดงต่อไปนี้

เมื่อโปรแกรม Docker ทำงานเราสามารถใช้คำสั่ง $ docker ... แบบ command line ได้ (ในกรณีที่เราไม่ได้เริ่มต้นการทำงานโปรแกรม Docker จะไม่สามารถใช้คำสั่ง Docker จาก command line ได้)

ขั้นตอนที่ 2

ในขั้นตอนนี้ให้นักศึกษาเปิดโปรแกรม Terminal ในระบบปฏิบ้ติการ Windows ให้เริ่มจากกดช่องค้นหาและพิมพ์คำว่า Command Prompt ดังแสดงในรูป

ส่วนระบบปฏิบัติการ MaxOS ให้กดคีย์ลัด +Space ระบบจะแสดงช่องค้นหาจากนั้นพิมพ์คำว่า Terminal (ในบางเครื่องอาจติดตั้งโปรแกรม iTerm ก็ให้ใช้โปรแกรมนี้ก็ได้) หลังจากเปิดโปรแกรมแล้วจะแสดงดังรูป

ขั้นตอนที่ 3

เริ่มระบบปฏิบัติการ Ubuntu จำลองโดยใช้ Docker ให้นักศึกษารันคำสั่งดังต่อไปนี้

คำสั่งสำหรับระบบปฏิบัตการ Windows

docker run -h "ITSCI" -u itsci --workdir /home/itsci --name ubuntu-itsci -it --rm wsarachai/ubuntu-itsci:linux-amd64

คำสั่งสำหรับระบบปฏิบัตการ MacOS

docker run -h "ITSCI" -u itsci --workdir /home/itsci --name ubuntu-itsci -it --rm wsarachai/ubuntu-itsci:latest

ระบบจะทำการดาวน์โหลด Docker Image หากรันคำสั่งเป็นครั้งแรกดังแสดง

เมื่อโปรแกรมดาวน์โหลดเสร็จ ระบบปฏิบัติการ Ubuntu จำลองจะทำงานและพร้อมรอรับคำสั่ง

itsci@ITSCI:~$ _

อย่างไรก็ตามหน้าตา prompt ของ linux อาจหน้าตาไม่เหมือนกัน อาจมีลักษณะดังนี้  "username@computername:/current-directory$" นั่นคือชื่อผู้ใช้ตามด้วยชื่อคอมพิวเตอร์ และไดเรกทอรีปัจจุบัน ดังนั้น ชื่อผู้ใช้จะเปลี่ยนแปลงตลอดเวลาเมื่อเราทำงาน เพื่อทำให้แต่ในกรณีนี้เราเป็น Ubuntu จำลองจะมีหน้าตาเหมือนกัน

ขั้นตอนที่ 4

ทักษะพื้นฐานของคำสั่ง Linux

จากนี้ในปฏิบัติการอื่น ๆ ต่อไปคำสั่งในการทำงานกับ Terminal จะอยู่ในรูปแบบต่อไปนี้:

itsci@ITSCI:~$  This is the command that you should enter
คำสั่ง List files: ls

เมื่อนักศึกษาเข้าสู่ระบบครั้งแรก ไดเร็กทอรีการทำงานปัจจุบันของนักศึกษาคือ home ไดเร็กตอรี่ของนักศึกษา home ไดเร็กตอรี่ของเรามีชื่อเดียวกับชื่อผู้ใช้ของเรา เช่น itsci และเป็นที่ที่บันทึกไฟล์ส่วนตัวและไดเร็กทอรีย่อยของนักศึกษา หากต้องการทราบว่ามีอะไรอยู่ใน home ไดเร็กทอรีของเรา ให้ใช้คำสั่ง ls (ls ย่อมาจาก “list”)  อาจไม่มีไฟล์ปรากฏใน home ไดเร็กตอรี่ของเราก็ได้ ซึ่งในกรณีนี้ จะไม่มีอะไรพิมพ์ออกมานอกจากพร้อมท์คำสั่งอีกครั้ง

คำสั่งแสดงรายการเนื้อหาของไดเร็กทอรีการทำงานปัจจุบันของนักศึกษา:

itsci@ITSCI:~$  ls

แต่คำสั่ง ls จะไม่แสดงไฟล์ที่ซ่อนอยู่ ซึ่งเป็นไปตามค่าเริ่มต้นที่กำหนดใว้ในระบบ ไฟล์ที่ซ่อนอยู่จะมีชื่อไฟล์ที่ขึ้นต้นด้วยจุด (.) และหากต้องการแสดงรายการไฟล์ทั้งหมดออกมาให้เห็นในโฮมไดเร็กตอรี่รวมถึงไฟล์ที่ซ่อนอยู่ด้วย ให้ใช้ตัวเลือก -a ร่วมกับคำสั่ง ls

itsci@ITSCI:~$  ls -a 
คำสั่ง Linux อื่น ๆ

ให้นักศึกษาทำความเข้าใจและศึกษาการใช้คำสั่งต่าง ๆ ของ command line ต่าง ๆ ดังต่อไปนี้

คำสั่งแสดงที่อยู่ของ directory path ปัจจุบัน (ทุกครั้งนักศึกษาสามารถใช้คำสั่ง tree หรือ pwd เพื่อดูโครงสร้าง directory และที่อยู่ปัจจุบัน)

itsci@ITSCI:~$  pwd
/home/itsci
itsci@ITSCI:~$  cd /
/
itsci@ITSCI:~$  cd home
itsci@ITSCI:~$  pwd
/home
itsci@ITSCI:~$  cd
itsci@ITSCI:~$  pwd
/home

เมื่อต้องการใช้คำสั่ง cd ไปที่ “etc” folder ในกรณีที่เราอยู่ที่ root directory นั้นไม่ยากเพียงใช้คำสั่งเราสามารถใช้คำสั่ง

itsci@ITSCI:~$  cd /
itsci@ITSCI:~$  cd etc
itsci@ITSCI:~$  pwd
/etc

หรือใช้คำสั้งเดียวเพื่อไปที่ “etc” folder (เป็นการเข้าถึงแบบ absolute path)

itsci@ITSCI:~$  cd /etc
itsci@ITSCI:~$  pwd
/etc
itsci@ITSCI:~$  cd /home/itsci/Desktop
itsci@ITSCI:~$  pwd
/home/itsci/Desktop

คำสั่งสำหรับตรวจสอบว่าใครกำลังใช้งานอยู่

itsci@ITSCI:~$  whoami
itsci

ทางลัดกลังไปยังบ้านของเราเอง (Home directory) เราใช้เครื่องหมาย “~”

itsci@ITSCI:~$  cd ~
itsci@ITSCI:~$  pwd
/home/itsci
itsci@ITSCI:~$  cd ~/Desktop
itsci@ITSCI:~$  pwd
/home/itsci/Desktop

คำสั่ง echo ใช้แสดงข้อความไปยัง Terminal

itsci@ITSCI:~$  echo Hello
Hello

คำสั่ง cal ใช้แสดงปฏิทิน

itsci@ITSCI:~$  cal
     April 2023
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

คำสั่ง cal จะแสดงค่า default ออกมาเป็นเดือนปัจจุบัน หากต้องการแสดงปฏิทินทั้งปีให้ระบุปีที่ต้องการ เช่น cal 2023 หรือ cal -y

itsci@ITSCI:~$  cal -y
                            2023
      January               February               March
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7            1  2  3  4            1  2  3  4
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   5  6  7  8  9 10 11
15 16 17 18 19 20 21  12 13 14 15 16 17 18  12 13 14 15 16 17 18
22 23 24 25 26 27 28  19 20 21 22 23 24 25  19 20 21 22 23 24 25
29 30 31              26 27 28              26 27 28 29 30 31


       April                  May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30
30

        July                 August              September
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1         1  2  3  4  5                  1  2
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   3  4  5  6  7  8  9
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  10 11 12 13 14 15 16
16 17 18 19 20 21 22  20 21 22 23 24 25 26  17 18 19 20 21 22 23
23 24 25 26 27 28 29  27 28 29 30 31        24 25 26 27 28 29 30
30 31

      October               November              December
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7            1  2  3  4                  1  2
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9
15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16
22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23
29 30 31              26 27 28 29 30        24 25 26 27 28 29 30
                                            31

หรือแสดงตามปีที่ต้องการ

itsci@ITSCI:~$  cal 1976
                            1976
      January               February               March
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7      1  2  3  4  5  6
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   7  8  9 10 11 12 13
11 12 13 14 15 16 17  15 16 17 18 19 20 21  14 15 16 17 18 19 20
18 19 20 21 22 23 24  22 23 24 25 26 27 28  21 22 23 24 25 26 27
25 26 27 28 29 30 31  29                    28 29 30 31


       April                  May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3                     1         1  2  3  4  5
 4  5  6  7  8  9 10   2  3  4  5  6  7  8   6  7  8  9 10 11 12
11 12 13 14 15 16 17   9 10 11 12 13 14 15  13 14 15 16 17 18 19
18 19 20 21 22 23 24  16 17 18 19 20 21 22  20 21 22 23 24 25 26
25 26 27 28 29 30     23 24 25 26 27 28 29  27 28 29 30
                      30 31

        July                 August              September
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7            1  2  3  4
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   5  6  7  8  9 10 11
11 12 13 14 15 16 17  15 16 17 18 19 20 21  12 13 14 15 16 17 18
18 19 20 21 22 23 24  22 23 24 25 26 27 28  19 20 21 22 23 24 25
25 26 27 28 29 30 31  29 30 31              26 27 28 29 30


      October               November              December
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                1  2      1  2  3  4  5  6            1  2  3  4
 3  4  5  6  7  8  9   7  8  9 10 11 12 13   5  6  7  8  9 10 11
10 11 12 13 14 15 16  14 15 16 17 18 19 20  12 13 14 15 16 17 18
17 18 19 20 21 22 23  21 22 23 24 25 26 27  19 20 21 22 23 24 25
24 25 26 27 28 29 30  28 29 30              26 27 28 29 30 31

คำสั่ง date ใช้แสดงวันที่ปัจจุบัน

itsci@ITSCI:~$  date
Tue Apr 25 14:35:38 +07 2023

การกดคีย์ลูกศรขึ้นและลงจะเป็นการกลับไปใช้คำสั่งก่อนหน้า (ให้นักศึกษาทดลองกดคีย์ลูกศรที่คีบอร์ด หรือ ) คำสั่งต่าง ๆ ที่เคยพิมพ์จะแสดงออกมาทำให้เราสะดวกไม่ต้องพิมพ์คำสั่งเดิมใหม่เมื่อต้องการใช้คำสั่งนั้นอีกครั้ง ซึ่งบางคำสั่งมีความยาวและมีหลายพารามิเตอร์

คำสั่ง history จะเป็นคำสั่งที่แสดงรายการประวัติคำสั่งที่เคยใช้ออกมาเป็นรายการแทนที่จะใช้คีย์ลูกศรค้นหาคำสั่งเดิม คำสั้ง history จะแสดงคำสั่งทั้งหมดออกมาเป็นรายการเรียงลำดังตามคำสั่งที่เราพิมพ์มา

itsci@ITSCI:~$  history
    1  cal
    2  cal -y
    3  cal 1976
    4  date
    5  history

นอกจากนั้นเราสามารถเรียกใช้คำสั่งเดิมในรายการนี้ได้ โดยใช้เครื่องหมาย ! ตามด้วยหมายเลขรายการ เช่น !4 เป็นการเรียกใช้คำสั่ง date ในลำดับที่ 4

itsci@ITSCI:~$  !4
Tue Apr 25 14:35:38 +07 2023

และหากต้องการล้างหน้าจอให้ใช้คำสั่ง clear หรือกดคีย์ ctrl+l

Lab 02 – Command Input และ Output

Standard Data Stream

คำสั่งของ Linux สามารถรับข้อมูลเข้าไปเพื่อทำการประมวลผลและมีการส่งผลลัพธ์นั้นออกมาแสดงเราเรียกว่า input และ output คำสั่งของ Linux จะมี 2 ช่องทางในการส่งข้อมูลได้แก่ Standard Input (การพิมพ์จากคีย์บอร์ด) และ Command Arguments โดย Standard Input จะมีหลายเลขประจำตัวเป็นเลข 0 และ Command Arguments แต่ไม่มีหมายเลขประจำผู้ใช้ต้องพิมพ์ต่อท้ายคำสั่งเองทุกครั้ง ส่วนในการส่งผลลัพธ์หรือที่เรียกว่า output ก็จะประกอบไปด้วย 2 ช่องทางได้แก่ Standard Output มีหลายเลขประจำตัวคือ 1 และ Standard Error มีหลายเลขประจำตัวคือ 2 ดังแสดงในรูป

อย่างไรก็ตามบางคำสั่งของ Linux อาจไม่รับ Standard Input (หมายเลข 0) เช่นคำสั่ง echo จะไม่มี Standard Input แต่จะรับข้อมูลเข้าช่องทางเดียวคือ Command Arguments ตัวอย่างเช่น

itsci@ITSCI:~$  echo Hello
Hello

ส่วนคำสั่ง cat จะมีครับทุกช่องทาง ตัวอย่างเช่น

itsci@ITSCI:~$  cat
Hello
Hello

จากตัวอย่างข้างต้นคำสั่ง cat รับ input เป็น “Hello” (รับ input ทางคีย์บอร์ดจะเป็น input หมายเลข 0) และแสดงผลลัพธ์ออกมาทางส่วนแสดงผลมาตรฐานในกรณีนี้ก็คือ Terminal ของเรานั่นเอง (output มาตรฐานจะเป็นหมายเลข

อีกตัวอย่างของคำสั่ง cat ในการรับ input โดยเป็นการรับ input จาก Command Arguments เช่น

itsci@ITSCI:~$  date 1> today.txt
itsci@ITSCI:~$  cat today.txt
Sun May 21 01:40:35 PM UTC 2023

ในกรณีที่เรามีข้อผิดพลาดเกิดขึ้นคำสั่งจะส่งข้อความ Error ออกมาอีกช่องทางเรียกว่า Standard Error ซึ่งจะเป็นหมายเลข 2 ตัวอย่างเช่น

itsci@ITSCI:~$  date asdfjkl
date: invalid data 'asdfjkl'

ตัวอย่างการใช้คำสั่งที่เป็น Standard Input หมายเลข 0 เช่น (เมื่อต้องการสิ้นสุดจากคำสั่งนี้ให้กดคีย์ ctrl+c)

itsci@ITSCI:~$  cat
Hello <== พิมพ์จากคีย์บอร์ด (หมายเลข 0)
Hello <== ผลลัพธ์ Standard Output (หมายเลข 1)

อีกตัวอย่างเป็นการรับค่า Input จาก Command Arguments เช่น

itsci@ITSCI:~$  cal 12 2023
   December 2023
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

ใน command arguments ประกอบไปด้วยสองส่วนคือ

  1. Option
  2. Argument

ตัวอย่างเช่น

itsci@ITSCI:~$  cal -A 1 -B 1 12 2023
   November 2023         December 2023          January 2024
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
          1  2  3  4                  1  2      1  2  3  4  5  6
 5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30 31
                      31

จากรูปด้านบน -A คือ option กำหนดให้มีค่าเท่ากับ 1 และ -B กำหนดค่าเท่ากับ 1 ส่วน 1 12 2023 คือ arguments

Command line สามารถส่งต่อ output ได้เรียกว่า Flow โดย Standard Input, Standard Output และ Standard Error จะเป็นแบบ “Standard Data Streams” (เหมือนการไหลของน้ำส่งต่อ ๆ กันไปได้) เราเรียกรวม ๆ ว่า Data streams โดยปกติลำดับการส่งต่อของข้อมูลจะเริ่มจาก Standard input ไปยัง Standard output แต่เราเปลี่ยนเส้นทางการไหลได้ ซึ่งโดยปกติแล้วค่า default ของ output stream คือ Terminal

Direction

เราสามารถส่งต่อ (redirect) standard output ของคำสั่งหนึ่งไปยัง standard input ของอีกคำสั่งหนึ่งได้ เรียกว่า “piping” ตัวอย่างเช่น การเปลี่ยน output stream (1) จาก Terminal ไปยังไฟล์

จะเห็นได้ว่าเราเปลี่ยนผลลัพธ์จากเดิมที่จะไปแสดงที่หมายเลข 1 (Terminal) ไปยังไฟล์ชื่อ output.txt แทน

เครื่องหมาย “>” เรียกว่า rediection หมายถึงการส่งผลลัพธ์ไปยังไฟล์ทุกครั้งที่เรียกคำสั่งใหม่ ข้อมูลใหม่ที่ได้จะทับข้อมูลเดิมที่อยู่ในไฟล์เสมอ

เครื่องหมาย “>>” จะทำงานเหมือนกับเครื่องหมาย “>” ทุกประการแต่ข้อมูลใหม่จะไม่ไปทับข้อมูลเดิมแต่จะไปต่อท้ายข้อมูลในไฟล์แทน เช่นเมื่อเราใช้คำสั่ง

itsci@ITSCI:~$  cat output.txt
Hello, ITSCI
itsci@ITSCI:~$  cat 1>> output.txt
Linux is amazing!
itsci@ITSCI:~$  cat output.txt
Hello, ITSCI
Linux is amazing!

ผลลัพธ์ในไฟล์ output.txt จะถูกต่อท้ายด้วยข้อมูลใหม่ดังแสดงต่อไปนี้เมื่อเราใช้คำสั่ง cat เพื่อตรวจสอบข้อมูลภายในไฟล์

Error Direction

ปกติเมื่อมี error ในคำสั่งข้อความที่แจ้งจะแสดงไปยัง Standard Error หมายเลข 2 เช่น

itsci@ITSCI:~$  cat --k bla
cat: unrecognized option '--k'
Try 'cat --help' for more information.

หากเราต้องการเปลี่ยนผลลัพธ์หมายเลข 2 (Standard Error) ไปยังไฟล์เราจะใช้คำสั่งดังนี้

itsci@ITSCI:~$  cat –k bla 2>> error.txt
itsci@ITSCI:~$  cat error.txt
cat: unrecognized option '--k'
Try 'cat --help' for more information.

อีกตัวอย่างเป็นการอ่านข้อมูลจากไฟล์แทนการพิมพ์จากคีย์บอร์ด (Standard Input หมายเลข 0)

itsci@ITSCI:~$  cat 1> input.txt
Hello World!

itsci@ITSCI:~$  cat 0< input.txt
Hello World!

จะเห็นได้ว่าเราจะใช้เครื่องหมาย redirection เป็น “<” เป็นการส่งข้อมูลจากไฟล์ไปยังคำสั่ง cat ในช่องทาง Standard input หมายเลข 0 แทนที่การพิมพ์จากคีย์บอร์ด

Lab Part 3 – แบบฝึกหัด

ให้นักศึกษาทดลองคำสั่งต่าง ๆ ดังต่อไปนี้

itsci@ITSCI:~$  cat 1> output.txt 2>> error.txt
itsci@ITSCI:~$  cat > output.txt 2>> error.txt
itsci@ITSCI:~$  cat > input.txt
itsci@ITSCI:~$  cat < input.txt > hello.txt
itsci@ITSCI:~$  cat 0< input.txt 1>> hello.txt

ให้นักศึกษาทำตามขั้นตอนดังต่อไปนี้

  1. ให้คำสั่ง ls แสดงข้อมูลใน directory /etc และ /run
  2. ให้คำสั่ง ls แต่เปลี่ยนเส้นทางแสดงข้อมูลไปที่ไฟล์ file1.txt แทน
  3. ทำแบบเดียวกับข้อ 2 แต่แสดงข้อมูลใน directory /run ไปที่ไฟล์ file2.txt
  4. ถึงตอนนี้เรามีไฟล์ file1.txt และ file2.txt
    • ให้ใช้คำสั่ง cat แสดงข้อมูลในไฟล์ file1.txt และ file2.txt ในคำสั่งเดียวและเก็บผลลัพธ์ไว้ไนไฟล์ชื่อ unsorted.txt
    • ให้ใช้คำสั่ง cat ทำแบบเดียวกับข้อก่อนหน้านี้ แสดงข้อมูลในไฟล์ file1.txt และ file2.txt ในคำสั่งเดียวแต่ให้เรียงจากมากไปหาน้อย โดยใช้คำสั่ง sort ด้วย option r เพื่อเรียงจากมากไปหาน้อย จากนั้นเก็บผลลัพธ์ไว้ไนไฟล์ชื่อ reversed.txt นักศึกษาจะต้องใช้คำสั่งต่าง ๆ ให้สำเร็จเพียงครั้งเดียว (one pipeline)
อ.ดร.วัชรินทร์ สาระไชย
อ.ดร.วัชรินทร์ สาระไชย

Hello! I’m Watcharin Sarachai, an enthusiastic and dedicated educator with a passion for advancing the field of computer science. I hold a Ph.D. in Computer Science from Chiang Mai University, where I focused on cutting-edge research in Machine Learning, Computer Programming, and Embedded Systems.

Articles: 19