วันอังคารที่ 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 ในการเรียนรู้เพิ่มเติมในคำสั่งต่างๆ ครับผม

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

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

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...