การนำทาง (Navigation) และจัดการไฟล์และโฟลเดอร์ในระบบไฟล์เป็นทักษะสำคัญสำหรับการทำงานกับคอมพิวเตอร์ Linux โดยเฉพาะอย่างยิ่งบนเซิร์ฟเวอร์คลาวด์ที่ใช้คำสั่ง Linux เป็นหลัก บทความนี้จะช่วยแนะนำทักษะพื้นฐานในการใช้คำสั่งเหล่านี้ ผู้ใช้งานควรมีความเข้าใจเบื้องต้นเกี่ยวกับการทำงานในเทอร์มินัลและการใช้คำสั่ง Linux ซึ่งทางเราจะกล่าวถึงในบทความนี้ และคำแนะนำทั้งหมดสามารถทำได้ด้วยบัญชีผู้ใช้ทั่วไปที่ไม่มีสิทธิ์เป็นผู้ดูแลระบบ (non-root) หากต้องการทราบวิธีการตั้งค่าบัญชีผู้ใช้นี้ สามารถติดตามคำแนะนำเกี่ยวกับการตั้งค่าเริ่มต้นของเซิร์ฟเวอร์ในระบบปฏิบัติการที่คุณใช้ เช่น Ubuntu 20.04
การนำทางและสำรวจระบบไฟล์
ทักษะพื้นฐานที่สำคัญคือการเคลื่อนย้ายไฟล์ในระบบและตรวจสอบว่าในโฟลเดอร์ต่าง ๆ มีข้อมูลอะไรอยู่บ้าง เราจะใช้เครื่องมือและคำสั่งที่จำเป็นต่อการทำสิ่งเหล่านี้ในส่วนนี้
การหาตำแหน่งปัจจุบันด้วยคำสั่ง “pwd”
เมื่อคุณเข้าสู่เซิร์ฟเวอร์ ระบบจะพาคุณไปที่โฟลเดอร์หลักของบัญชีผู้ใช้ของคุณ โฟลเดอร์นี้เป็นพื้นที่สำหรับเก็บไฟล์และสร้างโฟลเดอร์ต่าง ๆ ของคุณ โดยสามารถหาตำแหน่งโฟลเดอร์ปัจจุบันได้ด้วยคำสั่ง pwd คำสั่งนี้จะแสดงเส้นทางของโฟลเดอร์ที่คุณอยู่ ณ ขณะนั้น เช่น
pwd
โฟลเดอร์หลักของคุณมักจะถูกตั้งชื่อเดียวกับชื่อบัญชีผู้ใช้ และอยู่ในโฟลเดอร์ที่เรียกว่า /home ซึ่งเป็นโฟลเดอร์ย่อยในระดับบนสุดที่เรียกว่า “root” แสดงด้วยเครื่องหมาย /
การดูข้อมูลในโฟลเดอร์ด้วย “ls”
เมื่อคุณทราบแล้วว่าคุณอยู่ในโฟลเดอร์ไหน คุณสามารถดูข้อมูลภายในโฟลเดอร์นั้นได้ ปัจจุบันโฟลเดอร์หลักของคุณอาจไม่มีไฟล์หรือโฟลเดอร์มากนัก ดังนั้นให้ลองเปลี่ยนไปที่โฟลเดอร์อื่นที่มีข้อมูลมากขึ้น โดยใช้คำสั่ง cd เพื่อนำทางไปยังโฟลเดอร์ใหม่ และใช้ pwd เพื่อยืนยันว่าคุณได้เคลื่อนที่สำเร็จ
cd /usr/share
pwd
จากนั้นลองใช้คำสั่ง ls เพื่อดูว่ามีไฟล์และโฟลเดอร์อะไรบ้างในโฟลเดอร์นี้
ls
คุณจะเห็นรายการไฟล์และโฟลเดอร์ต่าง ๆ ในโฟลเดอร์นี้ คุณสามารถเพิ่มออปชันต่าง ๆ เพื่อปรับการแสดงผลได้ เช่น ใช้ -l เพื่อแสดงผลในรูปแบบที่มีรายละเอียดมากขึ้น
ls -l
การแสดงผลนี้จะแสดงข้อมูลหลากหลาย เช่น ประเภทของไฟล์ (ถ้าตัวแรกในคอลัมน์เป็น “d” แสดงว่าเป็นโฟลเดอร์ และถ้าเป็น “-” แสดงว่าเป็นไฟล์ปกติ) สิทธิ์การเข้าถึงไฟล์ เจ้าของไฟล์ กลุ่มที่เป็นเจ้าของ ขนาดไฟล์ เวลาแก้ไขล่าสุด และชื่อของไฟล์หรือโฟลเดอร์นั้น ๆ
หากต้องการดูไฟล์ทั้งหมด รวมถึงไฟล์ซ่อน สามารถเพิ่มออปชัน -a เนื่องจากในโฟลเดอร์ /usr/share ไม่มีไฟล์ซ่อน ลองกลับไปที่โฟลเดอร์หลักของคุณแล้วใช้คำสั่งนี้
cd
ls -a
คุณจะเห็นไฟล์ว่าจะมีไฟล์ที่ถูกซ่อนไว้บางไฟล์ รวมถึงสัญลักษณ์พิเศษ . และ .. ซึ่งใช้สำหรับอ้างอิงถึงโฟลเดอร์ที่เกี่ยวข้อง โดยสัญลักษณ์จุดเดียว (.) หมายถึงโฟลเดอร์ปัจจุบัน และจุดคู่ (..) หมายถึงโฟลเดอร์ที่อยู่ระดับบนจากโฟลเดอร์ปัจจุบัน สัญลักษณ์เหล่านี้จะมีประโยชน์ในขั้นตอนต่อไป
การเคลื่อนย้ายไฟล์ไปรอบ ๆ ของระบบด้วยคำสั่ง “cd”
คุณได้ใช้คำสั่ง cd ในการเคลื่อนที่ไปยังไดเร็กทอรีอื่นเพื่อทดลองคำสั่ง ls ในส่วนที่แล้ว มาดูคำสั่งนี้ให้ละเอียดขึ้น เริ่มต้นโดยกลับไปที่ไดเร็กทอรี /usr/share อีกครั้ง
cd /usr/share
ตัวอย่างนี้เป็นการเปลี่ยนไดเร็กทอรีโดยใช้เส้นทางที่แน่นอน (absolute path) ในระบบ Linux ทุกไฟล์และโฟลเดอร์อยู่ใต้ไดเร็กทอรีระดับบนสุดที่เรียกว่า “root” หรือแสดงด้วยเครื่องหมาย “/” นำหน้า การใช้absolute path จะช่วยให้เราสามารถระบุตำแหน่งโฟลเดอร์ได้อย่างชัดเจนจากที่ใดก็ได้ในระบบไฟล์ โดยเส้นทางที่แน่นอนทั้งหมดจะต้องเริ่มต้นด้วยสแลช “/”
อีกวิธีหนึ่งคือการใช้เส้นทางสัมพัทธ์ (relative path) ซึ่งเป็นการอ้างอิงถึงไดเร็กทอรีในความสัมพันธ์กับโฟลเดอร์ปัจจุบันของเรา เช่น เราสามารถเข้าไปในโฟลเดอร์ locale ที่อยู่ใน /usr/share ได้โดยไม่ต้องใช้สแลช ’/’ นำหน้า
cd locale
เรายังสามารถเคลื่อนที่หลายระดับได้ในคราวเดียวโดยใช้เส้นทางสัมพัทธ์ จากตรงนี้เราสามารถไปที่โฟลเดอร์ LC_MESSAGES ใน en ได้โดยใช้คำสั่ง
cd en/LC_MESSAGES
หากต้องการกลับไปยังโฟลเดอร์ก่อนหน้า (ระดับบนสุดของโฟลเดอร์ปัจจุบัน) สามารถใช้สัญลักษณ์จุดคู่ .. ได้ ตัวอย่างเช่น ตอนนี้เราอยู่ในไดเร็กทอรี /usr/share/locale/en/LC_MESSAGES หากต้องการขึ้นไปหนึ่งระดับซึ่งก็คือ /usr/share/locale/en ให้พิมพ์
cd ..
นอกจากนี้ เราสามารถกลับไปยังไดเร็กทอรีหลักของเราได้เสมอโดยใช้คำสั่ง cd โดยไม่ต้องระบุชื่อโฟลเดอร์ หรือใช้เครื่องหมาย ~ เพื่อแทนไดเร็กทอรีหลัก
cd ~
pwd
การดูไฟล์
ในส่วนก่อนหน้า ได้เรียนรู้วิธีการเข้าถึงไฟล์ในระบบและน่าจะเห็นไฟล์บางไฟล์เมื่อใช้คำสั่ง ls ในโฟลเดอร์ต่าง ๆ ระบบปฏิบัติการ Linux มักใช้ไฟล์ข้อความธรรมดาเพื่อเก็บข้อมูลระบบวิธีการดูไฟล์ในบทนี้คือใช้คำสั่ง less ซึ่งเป็นเครื่องมือที่ช่วยให้เราเลื่อนดูเนื้อหาของไฟล์โดยไม่ปิดหน้าต่างคำสั่ง โดยใช้คำสั่ง less เพื่อเปิดไฟล์ /etc/services ซึ่งเป็นไฟล์กำหนดค่าของระบบ
less /etc/services
ไฟล์นี้จะเปิดใน less ให้คุณเห็นเนื้อหาที่พอดีกับหน้าต่างเทอร์มินัล ณ ขณะนั้น คุณสามารถเลื่อนขึ้นลงได้ด้วยปุ่มลูกศร หรือกด Space Bar เพื่อเลื่อนหน้าลง ใช้ปุ่ม Page Down หรือ Ctrl-f เพื่อเลื่อนลง
การเลื่อนขึ้นสามารถใช้ปุ่ม Page Up หรือ Ctrl-b หากต้องการค้นหาข้อความในเอกสาร ให้พิมพ์เครื่องหมายทับ “/” แล้วตามด้วยคำที่ต้องการค้นหา เช่น /mail เพื่อค้นหาคำว่า “mail” กด n เพื่อไปยังผลลัพธ์ถัดไป หรือกด N เพื่อย้อนกลับไปยังผลลัพธ์ก่อนหน้า และกด q เพื่อออกจากโปรแกรม less
q
นอกจากนี้ ยังมีคำสั่งอื่น ๆ สำหรับการดูไฟล์ อาทิเช่น คำสั่ง cat จะแสดงเนื้อหาของไฟล์แล้วกลับมาที่พรอมต์ในทันที คำสั่ง head จะแสดง 10 บรรทัดแรกของไฟล์ และ tail จะแสดง 10 บรรทัดสุดท้าย คำสั่งเหล่านี้เป็นประโยชน์เมื่อใช้กับการ “pipe” ไปยังโปรแกรมอื่น ซึ่งจะกล่าวถึงในภายหลัง
การสร้างและจัดการไฟล์และโฟลเดอร์
การสร้างไฟล์ด้วยคำสั่ง “touch”
มีหลายวิธีในการสร้างไฟล์ แต่คำสั่ง touch เป็นวิธีที่ง่ายที่สุด คำสั่งนี้จะสร้างไฟล์ว่างโดยใช้ชื่อและตำแหน่งที่ระบุ เริ่มต้นโดยตรวจสอบว่าคุณอยู่ในไดเร็กทอรีหลักของคุณ เพราะที่นี่เป็นตำแหน่งที่คุณมีสิทธิ์ในการบันทึกไฟล์ จากนั้นสร้างไฟล์ชื่อ filetest1 โดยพิมพ์
cd
touch filetest1
หากคุณดูรายการไฟล์ในไดเร็กทอรี คุณจะเห็นไฟล์ที่คุณสร้างขึ้นใหม่
ls
หากใช้คำสั่ง touch กับไฟล์ที่มีอยู่แล้ว มันจะอัปเดตเวลาการแก้ไขล่าสุด ซึ่งมีประโยชน์ในบางกรณี นอกจากนี้ คุณสามารถสร้างไฟล์หลายไฟล์พร้อมกัน และสามารถระบุเส้นทางแบบแน่นอนได้ด้วย ตัวอย่างเช่น
touch /home/john/filetest2 /home/john/filetest3
ls
การสร้างโฟลเดอร์ด้วยคำสั่ง “mkdir”
คล้ายกับคำสั่ง touch ที่ใช้ในการสร้างไฟล์ว่าง คำสั่ง mkdir ใช้ในการสร้างโฟลเดอร์ว่างเช่นกัน ตัวอย่างเช่น หากต้องการสร้างโฟลเดอร์ในไดเร็กทอรีหลักของคุณโดยใช้ชื่อว่า filetest ให้พิมพ์
cd
mkdir filetest
จากนั้นสามารถสร้างโฟลเดอร์ย่อยในโฟลเดอร์ filetest ชื่อ anotherex โดยพิมพ์
mkdir filetest/anotherex
คำสั่งด้านบนจะทำงานได้ก็ต่อเมื่อโฟลเดอร์ filetest มีอยู่แล้ว หากต้องการให้คำสั่ง mkdir สร้างโฟลเดอร์ทั้งหมดที่จำเป็นในเส้นทางที่คุณระบุ สามารถใช้ตัวเลือก -p เพื่อสร้างโฟลเดอร์ซ้อนกันหลายชั้นได้ในคำสั่งเดียว เช่น การสร้างโครงสร้างโฟลเดอร์ที่มีชื่อว่า some/other/directories โดยพิมพ์
mkdir -p some/other/directories
คำสั่งนี้จะสร้างโฟลเดอร์ some ก่อน จากนั้นจะสร้างโฟลเดอร์ other ภายในโฟลเดอร์นั้น สุดท้ายจะสร้างโฟลเดอร์ directories ภายในสองโฟลเดอร์ก่อนหน้า
การย้ายและเปลี่ยนชื่อไฟล์และโฟลเดอร์ด้วยคำสั่ง “mv”
สามารถย้ายไฟล์ไปยังตำแหน่งใหม่โดยใช้คำสั่ง mv ตัวอย่างเช่น หากต้องการย้ายไฟล์ filetest1 ไปยังโฟลเดอร์ filetest ให้พิมพ์
mv filetest1 filetest
หากต้องการย้ายไฟล์นั้นกลับมายังไดเร็กทอรีหลักของคุณ สามารถใช้เครื่องหมายจุด (.) เพื่ออ้างถึงโฟลเดอร์ปัจจุบัน ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเร็กทอรีหลัก จากนั้นรันคำสั่ง mv
cd
mv filetest/filetest1 .
คำสั่ง mv ยังสามารถใช้เพื่อเปลี่ยนชื่อไฟล์และโฟลเดอร์ได้ เพราะการย้ายและการเปลี่ยนชื่อเป็นเพียงการปรับเปลี่ยนตำแหน่งและชื่อของไฟล์หรือโฟลเดอร์ที่มีอยู่เช่น หากต้องการเปลี่ยนชื่อโฟลเดอร์ filetest เป็น test ให้พิมพ์
mv filetest test
หมายเหตุ: ก่อนจะเปลี่ยนชื่อโฟลเดอร์แนะนำให้ตรวจสอบก่อนว่ามีโฟล์เดอร์ชื่อเดียวกันอยู่หรือไหม่ เนื่องจากเทอร์มินัลจะไม่แจ้งเตือนเกี่ยวกับการกระทำที่อาจทำให้ข้อมูลสูญหายโดยไม่ได้ตั้งใจ ดังนั้น หากคุณเปลี่ยนชื่อไฟล์ไปเป็นชื่อที่มีอยู่แล้ว ไฟล์ก่อนหน้าจะถูกเขียนทับโดยไฟล์ที่คุณกำลังย้ายไป และยังไม่มีวิธีในการกู้คืนไฟล์ที่ถูกเขียนทับ
การคัดลอกไฟล์และโฟลเดอร์ด้วยคำสั่ง “cp”
คำสั่ง mv สามารถย้ายหรือเปลี่ยนชื่อไฟล์หรือโฟลเดอร์ได้ แต่ไม่สามารถทำสำเนา (copy) ได้ คำสั่ง cp สามารถใช้ในการทำสำเนาของไฟล์หรือโฟลเดอร์ที่มีอยู่ได้ ตัวอย่างเช่น หากต้องการคัดลอกไฟล์ filetest3 ไปเป็นไฟล์ใหม่ชื่อ filetest4 ให้พิมพ์
cp filetest3 filetest4
ต่างจากการใช้คำสั่ง mv ที่ไฟล์ filetest3 จะไม่อยู่ในที่เดิมอีกต่อไป ในการคัดลอกไฟล์ คุณจะมีทั้งไฟล์ filetest3 และ filetest4 อยู่
หมายเหตุ: เช่นเดียวกับคำสั่ง mv ถ้าคุณใช้ชื่อไฟล์ที่มีอยู่แล้ว ไฟล์เดิมจะถูกเขียนทับและข้อมูลเก่าจะหายไป ดังนั้น ควรตรวจสอบให้แน่ใจก่อนใช้คำสั่งนี้
หากต้องการคัดลอกโฟลเดอร์ทั้งหมด รวมถึงเนื้อหาภายใน ให้ใช้ตัวเลือก -r ซึ่งย่อมาจาก “recursive” เพื่อคัดลอกโฟลเดอร์และทุกอย่างในนั้น ตัวอย่างเช่น การคัดลอกโฟลเดอร์ some ไปเป็นโฟลเดอร์ใหม่ชื่อ thingnew ให้พิมพ์
cp -r some thingnew
หากคุณคัดลอกไปยังโฟลเดอร์ที่มีอยู่แล้ว เนื้อหาจะถูกคัดลอกเข้าไปในโฟลเดอร์เป้าหมาย เช่น การคัดลอก filetest1 เข้าไปในโฟลเดอร์ thingnew
cp filetest1 thingnew
คำสั่งนี้จะสร้างสำเนาใหม่ของ filetest1 และวางไว้ในโฟลเดอร์ thingnew
การลบไฟล์และโฟลเดอร์ด้วยคำสั่ง “rm” และ “rmdir”
หากต้องการลบไฟล์ สามารถใช้คำสั่ง rm
หมายเหตุ: ควรระวังเมื่อใช้คำสั่งที่สามารถลบข้อมูลได้อย่างถาวร เช่น rm เพราะคำสั่งนี้ไม่มีฟังก์ชัน “ยกเลิก” ดังนั้น อาจทำให้ไฟล์สำคัญถูกลบอย่างถาวร
การลบไฟล์ทั่วไป ให้พิมพ์
cd
rm filetest4
สำหรับการลบโฟลเดอร์ว่าง สามารถใช้คำสั่ง rmdir ซึ่งจะทำงานได้เฉพาะเมื่อโฟลเดอร์ไม่มีไฟล์หรือโฟลเดอร์ใด ๆ อยู่ข้างใน เช่น การลบไฟล์ example ภายในโฟลเดอร์ test
rmdir test/example
หากต้องการลบโฟลเดอร์ที่มีเนื้อหาข้างใน ให้ใช้คำสั่ง rm พร้อมกับตัวเลือก -r ซึ่งจะลบทุกอย่างภายในโฟลเดอร์และตัวโฟลเดอร์เองตัวอย่างเช่น การลบโฟลเดอร์ thingnew และทุกอย่างในนั้น
rm -r thingnew
การแก้ไขไฟล์
ตอนนี้เราก็ได้รู้วิธีจัดการไฟล์แล้ว แต่ยังไม่รู้วิธีแก้ไขเนื้อหาภายในไฟล์ nano เป็นหนึ่งในโปรแกรมแก้ไขข้อความบนเทอร์มินัลที่ใช้ง่ายและเหมาะสำหรับมือใหม่ ซึ่งทำงานคล้ายกับโปรแกรม less โดยจะครอบหน้าจอเทอร์มินัลในระหว่างที่คุณใช้งาน nano สามารถเปิดไฟล์ที่มีอยู่แล้วหรือสร้างไฟล์ใหม่ได้ หากคุณต้องการสร้างไฟล์ใหม่ สามารถตั้งชื่อไฟล์เมื่อเรียกใช้ nano หรือสามารถบันทึกชื่อไฟล์ทีหลังได้เมื่อคุณบันทึกเนื้อหาตัวอย่างเช่น การเปิดไฟล์ filetest1 เพื่อแก้ไข ให้พิมพ์
cd
nano filetest1
เมื่อเปิด nano อินเตอร์เฟซจะแสดงส่วนต่าง ๆ ดังนี้:
- ด้านบนจะแสดงชื่อโปรแกรมและชื่อไฟล์
- กลางหน้าจอจะแสดงเนื้อหาของไฟล์ (ปัจจุบันว่างอยู่)
- ด้านล่างจะแสดงปุ่มคำสั่ง โดยสัญลักษณ์ ^ หมายถึงปุ่ม CTRL
หากต้องการดูคำแนะนำ ให้กด Ctrl+G เมื่อเรียกดูคำแนะนำเสร็จแล้ว กด Ctrl+X เพื่อกลับไปที่เอกสาร สำหรับการทดสอบนี้ ให้ลองพิมพ์ข้อความอะไรก็ได้สักสองบรรทัด
Hello everyone
This is a final test
จากนั้นบันทึกไฟล์ โดยกด Ctrl+O คุณจะเห็นตัวเลือกด้านล่างเปลี่ยนไปตามสิ่งที่คุณทำ ในกรณีนี้ ให้กด Enter เพื่อยืนยันการบันทึกลงใน filetest1
หลังจากบันทึก หากคุณทำการเปลี่ยนแปลงเพิ่มขึ้นและต้องการออกจากโปรแกรม ให้กด Ctrl+X หากยังไม่ได้บันทึกการเปลี่ยนแปลง โปรแกรมจะถามว่าคุณต้องการบันทึกหรือไม่ โดยคุณสามารถกด Y เพื่อบันทึก N เพื่อไม่บันทึก หรือ Ctrl+C เพื่อยกเลิกการออกจากโปรแกรม หากเลือกบันทึก จะได้รับการยืนยันการบันทึกในไฟล์เดิม ให้กด Enter เพื่อบันทึกและออกจากโปรแกรมสามารถดูเนื้อหาในไฟล์ที่สร้างได้โดยใช้คำสั่ง cat เพื่อแสดงเนื้อหาทั้งหมด หรือ less เพื่อเปิดไฟล์ในโหมดดูอย่างเดียว อย่าลืมกด q เพื่อออกจาก less
less filetest1
หมายเหตุ: นอกจาก nano แล้วยังมีโปรแกรมแก้ไขข้อความที่คุณอาจเจอในคู่มืออื่นเช่น vim หรือ vi ซึ่งเป็นโปรแกรมที่มีประสิทธิภาพสูง แต่มีวิธีใช้งานที่ซับซ้อนกว่ามาก หากคุณไม่ชินกับ vim สามารถใช้ nano แทนได้เสมอ หากต้องการเรียนรู้วิธีใช้ vim สามารถอ่านคู่มือการเริ่มต้นใช้งาน vim ได้ที่นี่