หน้าแรก Applications คู่มือคอมมานด์ไลน์บนลีนุกซ์ ฉบับมือใหม่ ตอนที่ 2 (จบ)

คู่มือคอมมานด์ไลน์บนลีนุกซ์ ฉบับมือใหม่ ตอนที่ 2 (จบ)

แบ่งปัน

แม้คอมมานด์ไลน์จะดูโบราณในยุคปัจจุบัน โดยเฉพาะเมื่อเทียบกับระบบปฏิบัติการรุ่นใหม่ในท้องตลาด แต่คอมมานด์ไลน์ก็ยังเป็นอินเทอร์เฟซที่ยืดหยุ่นและทรงพลังที่สุดในการทำงานต่างๆ บนลีนุกซ์

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

สามารคลิกดูตอนที่ 1 คู่มือคอมมานด์ไลน์บน Linux ฉบับมือใหม่ ได้ที่นี่เลยครับ 

ดังนั้น ภาคสองที่กล่าวต่อไปนี้ เราจะเจาะลึกลงไปเกี่ยวกับเรื่องข้อมูลพื้นฐานของไฟล์ หรือ Metadata, สิทธิ์การเข้าถึงหรือ Permission, Timestamps, รวมถึงการใช้ทูลหรือโปรแกรมต่างๆ ที่มีการใช้งานบ่อย เช่น tee และ Vim เป็นต้น

  1. วิธีเรียกดูข้อมูลพื้นฐานของไฟล์หรือ Metadata เช่น ขนาด, Permission เป็นต้น

ใช้คำสั่ง ls เหมือนเดิม แต่ให้ใส่ออพชั่น l (มาจาก long) เพิ่มเพื่อให้แสดง Metadata ของแต่ละไฟล์ในการแสดงผลด้วย ตัวอย่างดังรูปด้านล่าง

glci1

แต่ละบรรทัดจะระบุข้อมูล Metadata ที่เกี่ยวข้องกับไฟล์หรือไดเรกทอรีย่อยนั้นๆ ที่อยู่ในไดเรกทอรีปัจจุบัน ซึ่งข้อมูลแต่ละบรรทัดนี้สามารถแบ่งได้ออกเป็น 8 ส่วน คือ

d  rwx  r-x  r-x    3   himanshu himanshu 4096 Jul 3 14:26 Desktop

d                      คือชนิดไฟล์/ไดเรกทอรี
rwx                   เป็นสิทธิ์การเข้าถึงสำหรับเจ้าของไฟล์
r-x                    เป็นสิทธิ์การเข้าถึงสำหรับกลุ่มผู้ใช้เดียวกัน
r-x                    กลุ่มสุดท้าย เป็นสิทธิ์การเข้าถึงสำหรับผู้ใช้อื่นทุกคน
3                      จำนวน Hard Link (อย่าเพิ่งสนใจตอนนี้)
himanshu         คำแรก แทนชื่อเจ้าของไฟล์
himanshu         คำถัดมา แทนชื่อกลุ่มผู้ใช้ที่ไฟล์นี้อยู่
4096                ขนาดของไฟล์
Jul 3 14:26       คือวันเวลาที่มีการเปลี่ยนแปลงไฟล์หรือไดเรกทอรีนั้นล่าสุด
Desktop           คือชื่อไฟล์หรือไดเรกทอรีนั้นๆ

โดยตัวอักษรตัวแรกที่แสดงประเภทของไฟล์ มีความหมายต่างๆ เช่น d คือไดเรกทอรี, คือไฟล์ปกติ, s คือไฟล์ซ็อกเก็ต, l คือไฟล์ลิงค์หรือชอร์ทคัทไปไฟล์อื่น เป็นต้น

ตัวอักษรอีก 9 ตัวถัดมาแสดงถึงสิทธิ์การเข้าถึง หรือ Permission ของผู้ใช้กลุ่มต่างๆ โดยตัวอักษร r คือ read (อ่านข้อมูลได้), w คือ write (เขียนข้อมูลได้), และ x คือ execute (สั่งรันการทำงานได้) ซึ่งแบ่งกลุ่ม Permission แต่ละกลุ่มเป็นตัวอักษรกลุ่มละตัว เรียงกันเป็น rwx ถ้าสิทธิ์ไหนไม่ให้สิทธิ์นั้น ก็จะเขียนเป็นเครื่องหมาย – แทน เช่น จากตัวอย่างข้างต้น

ตัวอักษรสามตัวกลุ่มแรก rwx ซึ่งเป็น Permission สำหรับเจ้าของไฟล์/ไดเรกทอรี ระบุว่ามีสิทธิ์ทั้งการอ่าน เขียน และรันการทำงาน

ตัวอักษรกลุ่มถัดมา r-x ซึ่งเป็น Permission ของผู้ใช้ในกลุ่มเดียวกัน ระบุให้มีสิทธิ์เฉพาะการอ่านข้อมูล และรันการทำงาน แต่ไม่มีสิทธิ์แก้ไขเนื้อหา

เช่นเดียวกับตัวอักษรกลุ่มสุดท้าย r-x ซึ่งเป็น Permission ของผู้ใช้รายอื่นๆ ที่ได้สิทธิ์เหมือนกับผู้ใช้ในกลุ่มข้างต้น

เทคนิคพิเศษ: ใส่ออพชั่น –h เพิ่มคู่กับ –l (สามารถเขียนติดกันเป็น –lh) เพื่อแสดงขนาดไฟล์ในหน่วยที่อ่านง่ายขึ้น (เช่น ถ้าขนาดไฟล์ใหญ่เป็นหลัก KB หรือ MB ก็จะย่อตัวเลขโดยใส่ K หรือ M กำกับให้อ่านง่าย เป็นต้น)

  1. เราจะเปลี่ยน Permission ของไฟล์ได้อย่างไร?

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

a มาจาก all แทนกลุ่มผู้ใช้ทุกคน (ทั้งกลุ่มเจ้าของ, กลุ่มผู้ใช้เดียวกัน, และผู้ใช้รายอื่นๆ)

u มาจาก owner แทนเจ้าของไฟล์หรือไดเรกทอรี

g มาจาก group แทนกลุ่มผู้ใช้

o มาจาก others แทนผู้ใช้รายอื่นๆ

+ แทนการเพิ่มสิทธิ์

แทนการลบสิทธิ์

= แทนการกำหนดสิทธิ์ (พร้อมกันทั้ง r w x)

ตัวอย่างเช่น คำสั่ง chmod u=rwx somefile จะเป็นการกำหนด Permission ให้ทำได้ทั้งการอ่าน, เขียน, และรันไฟล์ สำหรับเจ้าของไฟล์ บนไฟล์ที่ชื่อ somefile นี้

คำสั่ง chmod o+w somefile จะเป็นการเพิ่มสิทธิ์การแก้ไขข้อมูลให้แก่ผู้ใช้รายอื่นๆ

chmod g-r somefile เป็นการดึงสิทธิ์การอ่านข้อมูลออกจากกลุ่มผู้ใช้ที่ไฟล์นี้อยู่ภายใน

chmod a+x somefile เป็นการให้สิทธิ์การรันการทำงานให้แก่ผู้ใช้ทุกคน (ทุกกลุ่ม) เป็นต้น

โดยที่ถ้าเราไม่ระบุกลุ่มผู้ใช้ เช่น การสั่ง chmod +x somefile หรือ chmod –r somefile จะเหมือนกับการกำกับกลุ่มผู้ใช้เป็น a คือ มีผลกับกลุ่มผู้ใช้ทุกกลุ่ม

ส่วนการกำหนด Permission แบบที่สอง คือการกำหนดด้วยตัวเลข โดยใช้ตัวเลขแทนสิทธิ์ประเภทต่างๆ ได้แก่

สิทธิ์ r แทนด้วยเลข 4

สิทธิ์ w แทนด้วยเลข 2

สิทธิ์ x แทนด้วยเลข 1

ซึ่งตัวเลขที่กำหนดเป็นอากิวเมนต์ จะเป็นสามหลัก ที่แต่ละหลักหมายถึงสิทธิ์สำหรับกลุ่มผู้ใช้แต่ละกลุ่ม คือ เจ้าของ, กลุ่มผู้ใช้, และผู้ใช้รายอื่นตามลำดับ ตัวเลขแต่ละหลักนี้มาจากการบวกรวมกันระหว่าง 4+2+1 ตามสิทธิ์ที่จะกำหนดให้กับผู้ใช้กลุ่มนั้นๆ

ตัวอย่างเช่น การสั่งคำสั่ง chmod 761 somefile จะเป็นการกำหนดสิทธิ์ rwx, rw, และ r ให้แก่เจ้าของ, กลุ่มผู้ใช้, และผู้ใช้รายอื่นตามลำดับ ทั้งนี้เนื่องจาก

7 = 4+2+1 = rwx

6 = 4+2+0 = rx-

1 = 0+0+1 = –x

 

  1. เราจะเปลี่ยนข้อมูล Timestamp ของไฟล์ได้อย่างไร?

ให้ใช้คำสั่ง touch เพื่อแก้ไข Timestamp ของไฟล์ ซึ่งข้อมูล Timestamp หรือเวลากำกับในที่นี้มีอยู่สามประเภทได้แก่ เวลาที่มีการเข้าถึงล่าสุด (Access time), เวลาที่มีการแก้ไขเนื้อหาไฟล์ล่าสุด (Modification time), และเวลาที่มีการเปลี่ยนข้อมูลกำกับไฟล์ล่าสุด (Change time) ซึ่งเวลาประเภทที่สามนี้หมายถึงเวลาที่มีการเปลี่ยนข้อมูลจำเพาะเกี่ยวกับไฟล์หรือ Inode รวมถึงข้อมูล Metadata ล่าสุด นอกจากนี้เราสามารถใช้คำสั่ง stat เพื่อเรียกดู Timestamp ทั้งสามประเภทของไฟล์ที่ต้องการได้ดังรูปด้านล่าง

glci2ในการเปลี่ยนเวลา Access time ให้เป็นเวลา ณ ปัจจุบัน ให้ใช้คำสั่ง touch พร้อมออพชั่น –a เช่น touch -a somefile เช่นเดียวกับการเปลี่ยน Modification time ให้เป็นเวลาปัจจุบัน ให้ใช้ออพชั่น –m แทน

ส่วนการเปลี่ยน Timestamp โดยระบุเวลาที่นอกเหนือจากเวลาในปัจจุบันนั้น ให้ใช้ออพชั่นต่างๆ ได้แก่

 -t เพื่อระบุอากิวเมนต์เป็นตัวเลขติดกันที่ใช้แทน ปี(4 หลัก)-เดือน(2 หลัก)-วัน(2 หลัก)-เวลาในหน่วยชั่วโมง(2 หลัก)-เวลาหน่วยนาที(2 หลัก)-(คั่นด้วย .)-เวลาในหน่วยวินาที(2 หลัก) เช่น touch –t 201407020900.01 –a somefile จะเป็นการเปลี่ยนเวลา Access time ของไฟล์ชื่อ  Somefile เป็น 2014/07/02 09:00:01

 d ใช้กำหนดเวลาในลักษณะที่เข้าใจได้ง่าย ดังเช่น

touch -d “2013-01-10 10:00:07” -a somefile

touch -d “next sunday” -m somefile

touch -d “3 hours ago” -a somefile

  1. เราจะดูประเภทของไฟล์ได้อย่างไร?

เราจะใช้คำสั่ง file ในการเรียกดูประเภทของไฟล์ ดังแสดงในตัวอย่างตามรูปด้านล่างนั้น คำสั่งนี้ต้องการอากิวเมนต์เป็นชื่อไฟล์ที่ต้องการเรียกดูประเภท นอกจากนี้ยังสามารถใช้ไวลด์การ์ด * ในชื่อไฟล์ได้ เช่นการเรียนดูประเภทของไฟล์ของทุกไฟล์บนไดเรกทอรีปัจจุบันจะใช้คำสั่ง file *

glci3

  1. หลังดาวน์ไฟล์ที่รันตัวเองได้ (Executable) แล้ว ทำไมถึงสั่งรันไฟล์ดังกล่าวไม่ได้?

บนลีนุกซ์ (และระบบตระกูล *nix อื่นๆ) การที่ไฟล์นั้นๆ จะสั่งรันตัวเองได้หรือไม่ ขึ้นอยู่กับ Permission เท่านั้น ไม่ได้ขึ้นกับสกุลไฟล์หรือเนื้อหาภายในไฟล์แต่อย่างใด นั่นคือเมื่อดาวน์โหลดไฟล์ลงมาที่เครื่อง ระบบไม่ทราบ Permission ของไฟล์ตั้งแต่แรก จึงตั้งค่า Permission เป็นแบบดีฟอลต์ให้ (สามารถตั้งค่า Permission ดีฟอลต์ของไฟล์ที่ถูกสร้างใหม่บนระบบได้ด้วยคำสั่ง umask)

ซึ่งถ้าผู้ใช้ต้องการจะสั่งรันไฟล์ที่เพิ่งดาวน์โหลดลงมาที่เครื่อง ก็จำเป็นต้องให้ Permission ให้สามารถสั่งรันได้ด้วยคำสั่ง chmod ตามที่เขียนไว้ในข้อ 14 ข้างต้น การที่ต้องมากำหนด Permission ด้วยตัวเองกับไฟล์ใหม่ทุกครั้งมีข้อดีตรงที่สามารถป้องกันไวรัส, เวิร์ม, และมัลแวร์อื่นๆ ไม่ให้ติดเชื้อบนระบบโดยที่คุณไม่รู้ตัวได้

  1. จะแสดงจำนวนบรรทัด, คำ, และขนาดข้อมูลในหน่วยไบต์ของแต่ละไฟล์ได้อย่างไร?

เราใช้คำสั่ง wc ในการแสดงจำนวนบรรทัด, คำ, และไบต์ข้อมูลที่นับได้จากไฟล์เป้าหมาย ตัวอย่างเช่น

glci4

จากการแสดงผลข้างต้นนั้น

เลข 5 แทนจำนวนบรรทัด

เลข 12 แทนจำนวนคำ

เลข 52 แทนจำนวนไบต์ข้อมูล

นอกจากนี้คุณยังสามารถใช้ออพชั่นต่างๆ เช่น -l, -w, และ -c เพื่อให้ระบุแค่จำนวนบรรทัด, จำนวนคำ, หรือไบต์ข้อมูล ตามลำดับในการแสดงผลได้

  1. วิธีเรียกดูปริมาณการใช้พื้นที่ดิสก์ของไฟล์และไดเรกทอรีต่างๆ

คุณสามารถใช้คำสั่ง du เพื่อแสดงปริมาณการใช้พื้นที่บนดิสก์ของไฟล์และไดเรกทอรีที่ต้องการได้ ดังตัวอย่างต่อไปนี้

 

glci5หมายเหตุ – ออพชั่น -h นี้ ใช้แสดงปริมาณพื้นที่บนดิสก์ในหน่วยที่มนุษย์เข้าใจง่าย (Human format) เช่น หน่วย K, M

สำหรับคนที่สงสัยว่าพื้นที่ดิสก์ที่ใช้ต่างจากขนาดไฟล์อย่างไรนั้น นั่นคือข้อมูลที่ได้จากคำสั่ง du เป็นขนาดของพื้นที่บนดิสก์ที่ไฟล์นั้นๆ ต้องการจริงๆ ซึ่งต่างจากขนาดไฟล์ดั้งเดิมที่ได้จากสั่ง ls -l ซึ่งเหตุผลที่แตกต่างกันนี้อาจเป็นได้ทั้งเพราะ Slack Space (การกินที่คร่อมหน่วยพื้นที่ย่อยที่สุดบนระบบ) หรือ Sparse File (การกระจายข้อมูลของตัวเองบนดิสก์ ให้สามารถเข้าถึงหรือทำงานได้สะดวกขึ้น)

แต่ถ้าต้องการดูขนาดพื้นที่ที่ใช้ของไดเรกทอรีเป้าหมาย รวมทั้งไดเรกทอรีย่อยภายในนั้นทั้งหมดด้วย ให้ใช้ออพชั่น -s (มาจาก Sum) แต่ถ้าพิมพ์ออพชั่นเป็นตัวพิมพ์ใหญ่ –S จะเป็นการแยกแสดงแต่ละขนาดแจงมาให้ ส่วนการเรียกดูพื้นที่ดิสก์ที่ว่างเหลืออยู่บนระบบ ที่อยู่บนไดเรกทอรีหรือไฟล์เป้าหมายนั้น ให้ใช้คำสั่ง df แทน

 

glci6เช่นเดียวกับกรณีข้างต้น ออพชั่น –h ใช้แสดงหน่วยขนาดพื้นที่ในหน่วยที่มนุษย์เข้าใจง่าย คำสั่ง df นี้ ถ้าสั่งโดยไม่ใส่ชื่อไฟล์หรือไดเรกทอรีใดๆ เป็นอากิวเมนต์แล้ว จะแสดงผลเป็นพื้นที่ดิสก์ที่มีใช้ทั้งหมดบนระบบแทน

glci7

  1. จะเปรียบเทียบความแตกต่างระหว่างสองไฟล์ได้อย่างไร?

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

glci8

คำสั่ง cat (มาจาก concatenate หรือการจัดเรียงข้อมูลให้เป็นระเบียบเพื่อแสดงผล) ตามด้วยชื่อไฟล์นี้ เป็นคำสั่งสำหรับแสดงเนื้อหาภายในไฟล์เป้าหมาย ดังนั้นรูปด้านบนจึงแสดงเนื้อหาของไฟล์ somefile และ anotherfile ตามลำดับ ซึ่งจะเห็นความแตกต่างตรงบรรทัดสุดท้าย ดังนั้นเมื่อเราใช้คำสั่ง diff กับสองไฟล์ดังกล่าว จะได้การแสดงผลดังรูปด้านล่าง

glci9

5c5 แปลว่า บรรทัดที่ 5 ของไฟล์ somefile (ไฟล์ที่ป้อนเป็นอากิวเมนต์แรก) มีการเปลี่ยนแปลง (changed) เป็นตามบรรทัดที่ 5 ของไฟล์ anotherfile (ไฟล์ที่ป้อนเป็นอากิวเมนต์ที่สอง) โดยเนื้อหาในบรรทัดที่กล่าวถึงในไฟล์แรกจะขึ้นต้นด้วยเครื่องหมาย < ขณะที่บรรทัดของไฟล์ที่สองที่อ้างถึงจะขึ้นต้นด้วยเครื่องหมาย >

หมายเหตุ – นอกจากตัวอักษร c ที่ระบุถึงข้อความที่มีการเปลี่ยนแปลงแล้ว ยังมีตัวอักษรอื่นอีกได้แก่

a มาจาก added หมายถึงการที่มีบรรทัดเนื้อหาเพิ่มขึ้นในไฟล์ที่สอง

d มาจาก deleted หมายถึงบรรทัดที่ถูกลบไปในไฟล์ที่สอง

คุณสามารถศึกษาคำสั่ง diff เพิ่มเติมนี้ได้จาก http://www.linuxdevcenter.com/pub/a/linux/lpt/28_01.html

  1. เราจะเรียกดูเนื้อหาเฉพาะช่วงบรรทัดแรกๆ และบรรทัดท้ายๆ ของไฟล์ได้อย่างไร?

ใช้คำสั่ง head และ tail เพื่อเรียกดูข้อความไม่กี่บรรทัดช่วงเริ่มต้น และช่วงท้ายไฟล์ที่ต้องการตามลำดับ ซึ่งมีประโยชน์เวลาที่คุณต้องการส่องดูเนื้อหาคร่าวๆ ตัวอย่างเช่น คำสั่ง head –n2 somefile จะแสดงเนื้อหา 2 บรรทัดแรกของไฟล์ที่ชื่อ somefile ขณะที่คำสั่ง tail –n3 somefile จะแสดงเนื้อหา 3 บรรทัดสุดท้ายของไฟล์

ไม่เพียงแค่จำนวนบรรทัดเท่านั้น คุณยังสามารถเรียกดูเป็นจำนวนไบต์ที่ต้องการได้ด้วย โดยใช้ออพชั่น –c แทน –n แต่ปกติแล้ว ถ้าไม่ได้ใส่ออพชั่นกำหนดจำนวนบรรทัดหรือไบต์อย่างเจาะจง คำสั่งทั้งสองข้างต้นจะแสดงเอาต์พุตอยู่ที่ 10 บรรทัดโดยดีฟอลต์

  1. จะจัดเก็บเนื้อหาเอาต์พุตของคำสั่งลงไฟล์ พร้อมกับให้แสดงเนื้อหาดังกล่าวพร้อมกันได้อย่างไร?

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

คำสั่ง tee นี้ นอกจากนิยมใช้ในการจัดเก็บและวิเคราะห์ log ต่างๆ ไปพร้อมกันแล้ว ยังสามารถเร่งความเร็วในการทำงานของคุณด้วยการลดขั้นตอนได้ด้วย เช่น การใช้คำสั่ง echo “Linux command line” | tee file1 > file2 จะเป็นการเขียนเนื้อหาข้อความในเครื่องหมายคำพูด บันทึกลงเป็นไฟล์ชื่อ file1 และ file2 ได้พร้อมกัน เป็นต้น

  1. การบีบอัดหรือขยายไฟล์ที่ถูกบีบอัดนี้ทำอย่างไรบ้าง?

การทำงานบนลีนุกซ์จำเป็นต้องเกี่ยวข้องกับไฟล์ที่บีบอัดไว้หรือ Archive ไม่ว่าจะเป็นสกุล .tar, .tar.gz, bz2 เป็นต้น ซึ่งการสร้างไฟล์บีบอัด หรือการขยายไฟล์กลับสำหรับไฟล์ตระกูลข้างต้นนี้ เราจะใช้คำสั่งเดียวกันคือ คำสั่ง tar

ตัวอย่างเช่น คำสั่ง tar –cvf practice.tar practice/ จะเป็นการสั่งบีบอัดโฟลเดอร์ practice ลงในไฟล์สกุล .tar ที่ชื่อ practice.tar โดยออพชั่นต่างๆ มีความหมายดังนี้

c มาจาก create เพื่อให้คำสั่ง tar รู้ว่าครั้งนี้เป็นการสร้างไฟล์บีบอัดใหม่

-v มาจาก view สำหรับให้แสดงรายการไฟล์ต่างๆ ที่ถูกบีบอัดลงมา

f มาจาก filename เป็นการระบุชื่อไฟล์บีบอัดที่ต้องการ

สำหรับการขยายไฟล์ที่ถูกบีบอัดในสกุล .tar อย่างในตัวอย่างข้างต้นนั้น จะใช้คำสั่ง tar –xvf practice.tar โดยออพชั่น –x (มาจาก extract) เป็นการระบุให้คำสั่ง tar ขยายไฟล์ออกมากจากไฟล์ที่ถูกบีบอัด ซึ่งคำสั่งข้างต้นนี้จะเป็นการขยายไฟล์แตกออกมาอยู่ที่ไดเรกทอรีปัจจุบัน ซึ่งคุณสามารถใช้ออพชั่น –C เพิ่มสำหรับระบุไดเรกทอรีเป้าหมายในการแตกไฟล์อื่นๆ ได้

ส่วนการสร้างไฟล์บีบอัดในสกุล .tar.gz และ .tar.bz2 นั้น ให้ใส่ออพชั่น –z หรือ –j เพิ่มในคำสั่งตามลำดับ ส่วนกรณีขยายแตกไฟล์สกุลเหล่านี้ก็สามารถใช้คำสั่ง tar แบบเดียวกับตัวอย่างในย่อหน้าที่แล้วได้ คุณสามารถใช้ออพชั่น –t (พร้อมกับ v และ f คือระบุเป็น -tvf) ในกรณีที่แค่อยากดูรายการไฟล์ในไฟล์บีบอัดที่ต้องการเท่านั้น

เทคนิค – ถ้าต้องการทำงานกับไฟล์บีบอัดตระกูล .zip ให้ใช้คำสั่ง zip แทน

  1. ถ้าต้องการแก้ไขเนื้อหาไฟล์โดยใช้โปรแกรม Vim ใช้งานอย่างไรได้บ้าง?

ทูลแก้ไขเนื้อหาไฟล์ชื่อ Vim นี้เป็นตัวแก้ไขไฟล์ข้อความบนคอมมานด์ไลน์ที่มีประสิทธิภาพมากที่สุด แต่ก็ใช้ปุ่มลัดหลายอย่างที่ควรเรียนรู้ไว้ แต่ในการใช้งานเบื้องต้นนั้นค่อนข้างเรียบง่ายและสะดวกสบายมากครับ

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

มีการทำงานใน Vim อยู่สองโหมดคือ โหมด Command และโหมด Insert โดยตัวอก้ไขไฟล์จะเปิดไฟล์ในโหลด Command โดยดีฟอลต์ ซึ่งคุณสามารถเลื่อนเคอเซอร์โดยใช้ปุ่มลูกศรบนคีย์บอร์ดได้ แต่ไม่สามารถแก้ไขเนื้อหาได้จนกว่าจะกดปุ่ม i (มาจาก insert) เพื่อเปิดโหมด Insert ดังในรูป

glci10

เมื่อแก้ไขเนื้อหาไฟล์เสร็จเรียบร้อยแล้ว คุณต้องกดปุ่ม ESC เพื่อออกจากโหมด Insert มาอยู่ในโหมด Command เหมือนเดิม ก่อนที่จะกดบันทึกไฟล์ได้

 

glci11การจะบันทึกไฟล์ ให้พิมพ์ :w แล้วกด Enter

 

glci12สำหรับการออกจากโปรแกรม ให้พิมพ์ว่า :q แล้วกด Enter หรือจะพิมพ์เป็น :wq เพื่อบันทึกไฟล์แล้วออกจากโปรแกรมพร้อมกัน

หมายเหตุ – การคัดลอกหรือลบเนื้อหาทั้งบรรทัดนั้น ให้เปลี่ยนออกมาอยู่ในโหมด Command แล้วเลื่อนเคอเซอร์มาอยู่บนบรรทัดที่ต้องการ จากนั้นพิมพ์ว่า yy หรือ dd ตามลำดับ สำหรับการปล่อยเนื้อหาหรือ Paste นั้น ให้กดปุ่ม p ในโหมดคอมมานด์เช่นกัน

บทสรุป

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

ที่มา : http://www.techspot.com/guides/844-linux-command-line-part-ii/