วันอังคารที่ 15 พฤศจิกายน พ.ศ. 2559

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

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

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

ดังนั้น ภาคสองที่กล่าวต่อไปนี้ เราจะเจาะลึกลงไปเกี่ยวกับเรื่องข้อมูลพื้นฐานของไฟล์ หรือ Metadata, สิทธิ์การเข้าถึงหรือ Permission, Timestamps, รวมถึงการใช้ทูลหรือโปรแกรมต่างๆ ที่มีการใช้งานบ่อย เช่น tee และ Vim เป็นต้น
  1. วิธีเรียกดูข้อมูลพื้นฐานของไฟล์หรือ Metadata เช่น ขนาด, Permission เป็นต้น
ใช้คำสั่ง ls เหมือนเดิม แต่ให้ใส่ออพชั่น –l (มาจาก long) เพิ่มเพื่อให้แสดง Metadata ของแต่ละไฟล์ในการแสดงผลด้วย ตัวอย่างดังรูปด้านล่าง
แต่ละบรรทัดจะระบุข้อมูล 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 ทั้งสามประเภทของไฟล์ที่ต้องการได้ดังรูปด้านล่าง
ในการเปลี่ยนเวลา 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 *
  1. หลังดาวน์ไฟล์ที่รันตัวเองได้ (Executable) แล้ว ทำไมถึงสั่งรันไฟล์ดังกล่าวไม่ได้?
บนลีนุกซ์ (และระบบตระกูล *nix อื่นๆ) การที่ไฟล์นั้นๆ จะสั่งรันตัวเองได้หรือไม่ ขึ้นอยู่กับ Permission เท่านั้น ไม่ได้ขึ้นกับสกุลไฟล์หรือเนื้อหาภายในไฟล์แต่อย่างใด นั่นคือเมื่อดาวน์โหลดไฟล์ลงมาที่เครื่อง ระบบไม่ทราบ Permission ของไฟล์ตั้งแต่แรก จึงตั้งค่า Permission เป็นแบบดีฟอลต์ให้ (สามารถตั้งค่า Permission ดีฟอลต์ของไฟล์ที่ถูกสร้างใหม่บนระบบได้ด้วยคำสั่ง umask)
ซึ่งถ้าผู้ใช้ต้องการจะสั่งรันไฟล์ที่เพิ่งดาวน์โหลดลงมาที่เครื่อง ก็จำเป็นต้องให้ Permission ให้สามารถสั่งรันได้ด้วยคำสั่ง chmod ตามที่เขียนไว้ในข้อ 14 ข้างต้น การที่ต้องมากำหนด Permission ด้วยตัวเองกับไฟล์ใหม่ทุกครั้งมีข้อดีตรงที่สามารถป้องกันไวรัส, เวิร์ม, และมัลแวร์อื่นๆ ไม่ให้ติดเชื้อบนระบบโดยที่คุณไม่รู้ตัวได้
  1. จะแสดงจำนวนบรรทัด, คำ, และขนาดข้อมูลในหน่วยไบต์ของแต่ละไฟล์ได้อย่างไร?
เราใช้คำสั่ง wc ในการแสดงจำนวนบรรทัด, คำ, และไบต์ข้อมูลที่นับได้จากไฟล์เป้าหมาย ตัวอย่างเช่น
จากการแสดงผลข้างต้นนั้น
เลข 5 แทนจำนวนบรรทัด
เลข 12 แทนจำนวนคำ
เลข 52 แทนจำนวนไบต์ข้อมูล
นอกจากนี้คุณยังสามารถใช้ออพชั่นต่างๆ เช่น -l, -w, และ -c เพื่อให้ระบุแค่จำนวนบรรทัด, จำนวนคำ, หรือไบต์ข้อมูล ตามลำดับในการแสดงผลได้
  1. วิธีเรียกดูปริมาณการใช้พื้นที่ดิสก์ของไฟล์และไดเรกทอรีต่างๆ
คุณสามารถใช้คำสั่ง du เพื่อแสดงปริมาณการใช้พื้นที่บนดิสก์ของไฟล์และไดเรกทอรีที่ต้องการได้ ดังตัวอย่างต่อไปนี้
หมายเหตุ – ออพชั่น -h นี้ ใช้แสดงปริมาณพื้นที่บนดิสก์ในหน่วยที่มนุษย์เข้าใจง่าย (Human format) เช่น หน่วย K, M
สำหรับคนที่สงสัยว่าพื้นที่ดิสก์ที่ใช้ต่างจากขนาดไฟล์อย่างไรนั้น นั่นคือข้อมูลที่ได้จากคำสั่ง du เป็นขนาดของพื้นที่บนดิสก์ที่ไฟล์นั้นๆ ต้องการจริงๆ ซึ่งต่างจากขนาดไฟล์ดั้งเดิมที่ได้จากสั่ง ls -l ซึ่งเหตุผลที่แตกต่างกันนี้อาจเป็นได้ทั้งเพราะ Slack Space (การกินที่คร่อมหน่วยพื้นที่ย่อยที่สุดบนระบบ) หรือ Sparse File (การกระจายข้อมูลของตัวเองบนดิสก์ ให้สามารถเข้าถึงหรือทำงานได้สะดวกขึ้น)
แต่ถ้าต้องการดูขนาดพื้นที่ที่ใช้ของไดเรกทอรีเป้าหมาย รวมทั้งไดเรกทอรีย่อยภายในนั้นทั้งหมดด้วย ให้ใช้ออพชั่น -s (มาจาก Sum) แต่ถ้าพิมพ์ออพชั่นเป็นตัวพิมพ์ใหญ่ –S จะเป็นการแยกแสดงแต่ละขนาดแจงมาให้ ส่วนการเรียกดูพื้นที่ดิสก์ที่ว่างเหลืออยู่บนระบบ ที่อยู่บนไดเรกทอรีหรือไฟล์เป้าหมายนั้น ให้ใช้คำสั่ง df แทน
เช่นเดียวกับกรณีข้างต้น ออพชั่น –h ใช้แสดงหน่วยขนาดพื้นที่ในหน่วยที่มนุษย์เข้าใจง่าย คำสั่ง df นี้ ถ้าสั่งโดยไม่ใส่ชื่อไฟล์หรือไดเรกทอรีใดๆ เป็นอากิวเมนต์แล้ว จะแสดงผลเป็นพื้นที่ดิสก์ที่มีใช้ทั้งหมดบนระบบแทน
  1. จะเปรียบเทียบความแตกต่างระหว่างสองไฟล์ได้อย่างไร?
เราใช้คำสั่ง diff ในการเทียบกันระหว่างไฟล์สองไฟล์ โดยคำสั่งนี้จะตรวจสอบเนื้อหาของทั้งสองไฟล์ แล้วแสดงผลให้คุณรู้ว่า จำเป็นต้องแก้ไขเนื้อหาในไฟล์อย่างไรเพื่อให้ทั้งสองไฟล์นี้มีเนื้อหาตรงกันทั้งหมด คำสั่งนี้ต้องการชื่อไฟล์ทั้งสองไฟล์เป็นอากิวเมนต์ ลองดูตัวอย่างตามรูปด้านล่างก่อนครับ
คำสั่ง cat (มาจาก concatenate หรือการจัดเรียงข้อมูลให้เป็นระเบียบเพื่อแสดงผล) ตามด้วยชื่อไฟล์นี้ เป็นคำสั่งสำหรับแสดงเนื้อหาภายในไฟล์เป้าหมาย ดังนั้นรูปด้านบนจึงแสดงเนื้อหาของไฟล์ somefile และ anotherfile ตามลำดับ ซึ่งจะเห็นความแตกต่างตรงบรรทัดสุดท้าย ดังนั้นเมื่อเราใช้คำสั่ง diff กับสองไฟล์ดังกล่าว จะได้การแสดงผลดังรูปด้านล่าง
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 ดังในรูป
เมื่อแก้ไขเนื้อหาไฟล์เสร็จเรียบร้อยแล้ว คุณต้องกดปุ่ม ESC เพื่อออกจากโหมด Insert มาอยู่ในโหมด Command เหมือนเดิม ก่อนที่จะกดบันทึกไฟล์ได้

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

สำหรับการออกจากโปรแกรม ให้พิมพ์ว่า :q แล้วกด Enter หรือจะพิมพ์เป็น :wq เพื่อบันทึกไฟล์แล้วออกจากโปรแกรมพร้อมกัน
หมายเหตุ – การคัดลอกหรือลบเนื้อหาทั้งบรรทัดนั้น ให้เปลี่ยนออกมาอยู่ในโหมด Command แล้วเลื่อนเคอเซอร์มาอยู่บนบรรทัดที่ต้องการ จากนั้นพิมพ์ว่า yy หรือ dd ตามลำดับ สำหรับการปล่อยเนื้อหาหรือ Paste นั้น ให้กดปุ่ม p ในโหมดคอมมานด์เช่นกัน
บทสรุป
แต่ละคำสั่งที่กล่าวถึงในบทความนี้ มีการใช้งานที่ลงลึกและซับซ้อนในแต่ละคำสั่งอีกมากมาย แต่เนื้อหาที่กล่าวถึงจะทำให้คุณใช้งานเบื้องต้นได้อย่างครอบคลุมพอสมควร คุณสามารถใช้คำสั่ง man ในการเรียนรู้เพิ่มเติมในคำสั่งต่างๆ ครับผม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Laravel

  Laravel Framework คือ PHP Framework ตัวหนึ่งที่ถูกออกแบบมาเพื่อพัฒนาเว็บแอพพลิเคชั่นต่างๆ ในรูปแบบ MVC (Model Views Controller) ซึ่งมีการแ...