บทที่แล้วคุณเดินไปมาในเครื่องได้แล้ว — บทนี้จะลงมือ “ทำของจริง” คือ สร้าง คัดลอก ย้าย ลบไฟล์ ดูเนื้อหาข้างใน ค้นหาข้อความ และบีบอัดไฟล์เป็นก้อนเดียว เหมือนเรียนรู้ที่จะหยิบจับข้าวของในบ้านได้คล่อง
🌱 บทนี้เขียนเพื่อคนที่ไม่เคยแตะ Linux มาก่อนเลยลองนึกว่า Linux ก็เหมือนบ้านหลังหนึ่ง บทที่แล้ว (M1) คุณเรียนรู้ที่จะ เดินไปมาในห้องต่างๆ ได้แล้ว — รู้ว่าตัวเองอยู่ห้องไหน (pwd) เปิดดูว่าในห้องมีอะไร (ls) แล้วเดินไปห้องอื่น (cd)
บทนี้คุณจะได้ ลงมือจับข้าวของจริงๆ ในบ้าน:
งานในข้อสอบ RHCSA แทบทุกข้อต้องแตะไฟล์ — สร้างไฟล์ตั้งค่า แก้ข้อความ คัดลอกไฟล์ไปวางที่ถูกที่ การจัดการไฟล์จึงเป็น “ทักษะพื้นฐานที่สุด” ที่ต้องทำได้โดยไม่ต้องคิดนาน
เริ่มจากเรื่องง่ายที่สุดก่อน — การสร้างของใหม่ขึ้นมา มี 2 คำสั่งหลัก: ตัวหนึ่งสร้างไฟล์ อีกตัวสร้างโฟลเดอร์
คำสั่ง touch ใช้สร้าง ไฟล์ว่างๆ ขึ้นมา 1 ไฟล์ (ถ้าไฟล์มีอยู่แล้ว มันจะแค่ไปอัปเดตเวลาแก้ไขล่าสุดให้ ไม่ลบเนื้อหาทิ้ง)
[student@server1 ~]$ touch notes.txt [student@server1 ~]$ ls Desktop Documents notes.txt
พิมพ์ touch notes.txt แล้วไฟล์ notes.txt ก็โผล่มาในโฟลเดอร์ทันที — ยังเป็นไฟล์เปล่าไม่มีอะไรข้างใน ไว้ค่อยใส่ข้อความทีหลัง
ย่อมาจาก “make directory” = สร้างโฟลเดอร์ใหม่
[student@server1 ~]$ mkdir project [student@server1 ~]$ ls Desktop Documents notes.txt project
ได้โฟลเดอร์ใหม่ชื่อ project เรียบร้อย
ถ้าอยากสร้างโฟลเดอร์ซ้อนกันหลายชั้น เช่น a/b/c ปกติต้องสร้างทีละชั้น แต่ option -p ช่วยสร้างให้ครบทุกชั้นในคำสั่งเดียว (p = parents = สร้างโฟลเดอร์แม่ที่ยังไม่มีให้ด้วย)
[student@server1 ~]$ mkdir a/b/c mkdir: cannot create directory 'a/b/c': No such file or directory [student@server1 ~]$ mkdir -p a/b/c (ไม่มี error — สร้างครบทั้ง a, a/b และ a/b/c ให้เลย)
mkdir a/b/cerror เพราะยังไม่มีโฟลเดอร์ a และ a/b มันเลยสร้าง c ไม่ได้mkdir -p a/b/cสร้างให้ครบทุกชั้นเลย ไม่ต้องเตรียมโฟลเดอร์แม่ก่อนบน Linux ควรตั้งชื่อไฟล์/โฟลเดอร์โดยไม่มีช่องว่าง เพราะ shell มองช่องว่างเป็นตัวคั่นคำ ถ้าจะใช้คำหลายคำ ให้ใช้ขีดล่าง my_project หรือขีดกลาง my-project แทน จะทำงานง่ายกว่ามาก
สามคำสั่งนี้คือ “มือไม้” ที่คุณใช้จัดการไฟล์ทุกวัน — คัดลอก ย้าย และลบ
รูปแบบคือ cp ต้นทาง ปลายทาง = เอาไฟล์ต้นทางไปทำสำเนาไว้ที่ปลายทาง (ต้นฉบับยังอยู่)
[student@server1 ~]$ cp notes.txt backup.txt [student@server1 ~]$ ls backup.txt notes.txt project [student@server1 ~]$ cp project project2 cp: -r not specified; omitting directory 'project' [student@server1 ~]$ cp -r project project2 (คัดลอกทั้งโฟลเดอร์รวมของข้างในเรียบร้อย)
cp notes.txt backup.txtทำสำเนา notes.txt เป็นไฟล์ใหม่ชื่อ backup.txtcp -rต้องใส่ -r (recursive) เมื่อคัดลอก โฟลเดอร์ เพราะต้องตามเข้าไปลอกของข้างในด้วยcp เฉยๆ คัดลอกได้แค่ไฟล์เดี่ยว ถ้าจะลอกทั้งโฟลเดอร์ (และของข้างใน) ต้องเติม -r เสมอ ไม่งั้นมันจะบ่นและไม่ทำให้
คำสั่ง mv ทำได้สองหน้าที่ในตัวเดียว: ย้ายไฟล์ไปที่อื่น และ เปลี่ยนชื่อ — ต่างจาก cp ตรงที่ของเดิมจะหายไปจากที่เก่า (ย้ายไม่ใช่ก๊อป)
[student@server1 ~]$ mv backup.txt project/ (ย้าย backup.txt เข้าไปอยู่ในโฟลเดอร์ project) [student@server1 ~]$ mv notes.txt mynotes.txt (เปลี่ยนชื่อ notes.txt เป็น mynotes.txt)
mv ไฟล์ โฟลเดอร์/ย้ายไฟล์เข้าไปในโฟลเดอร์ (ปลายทางเป็นโฟลเดอร์ที่มีอยู่)mv ชื่อเก่า ชื่อใหม่เปลี่ยนชื่อไฟล์ (ปลายทางเป็นชื่อไฟล์ใหม่ในที่เดิม)cp = ถ่ายเอกสาร — ได้สำเนาเพิ่มมา ต้นฉบับยังอยู่บนโต๊ะ
mv = หยิบเอกสารจากโต๊ะนี้ไปวางอีกโต๊ะ — มีแค่ใบเดียว ย้ายไปแล้วก็ไม่เหลือที่เก่า
ลบไฟล์ใช้ rm ลบโฟลเดอร์ว่างๆ ใช้ rmdir ส่วนลบโฟลเดอร์ที่มีของข้างในต้องใช้ rm -r
[student@server1 ~]$ rm mynotes.txt (ลบไฟล์ทิ้ง) [student@server1 ~]$ rmdir emptyfolder (ลบได้เฉพาะโฟลเดอร์ที่ว่างเปล่าเท่านั้น) [student@server1 ~]$ rm -r project2 (ลบทั้งโฟลเดอร์รวมของข้างในทั้งหมด)
rm ไฟล์ลบไฟล์เดี่ยวrmdir โฟลเดอร์ลบโฟลเดอร์ — ได้เฉพาะโฟลเดอร์ ว่างเปล่าrm -r โฟลเดอร์ลบโฟลเดอร์ที่มีของข้างใน (recursive — ลบลึกลงไปทุกชั้น)บน Linux เมื่อสั่งลบด้วย rm ไฟล์จะ หายไปเลยทันที — ไม่มีถังขยะ (Recycle Bin) ให้กู้คืนเหมือน Windows และมันจะ ไม่ถามยืนยันซ้ำ
ตัวที่อันตรายที่สุดคือ rm -rf — -r ลบลงลึกทุกชั้น และ -f (force) สั่งให้ลบทันทีโดยไม่ถามอะไรเลย ถ้าพิมพ์ path ผิดเพียงนิดเดียว อาจลบของสำคัญหายเกลี้ยง
และที่ อันตรายเป็นพิเศษคือตอนเป็น root (เห็น # ใน prompt) — root ลบได้ทุกอย่างในเครื่องโดยไม่มีใครห้าม ดังนั้นก่อนกด Enter กับ rm -rf ให้อ่าน path ที่จะลบทวนอีกรอบเสมอ
rm -rf / หมายถึง “ลบทุกอย่างตั้งแต่รากของเครื่อง” = ทำลายระบบทั้งเครื่อง อย่าพิมพ์เล่นเด็ดขาด! ในห้องสอบหรือเครื่องจริง ให้ระวังการเว้นวรรคผิดที่ เช่นตั้งใจพิมพ์ rm -rf /tmp/x แต่เผลอเว้นวรรคเป็น rm -rf / tmp/x ก็พังได้
สร้างไฟล์เป็นแล้ว ทีนี้จะเปิดดูข้างในยังไง? มีหลายคำสั่งให้เลือกตามความยาวของไฟล์
ย่อมาจาก “concatenate” — แต่ใช้บ่อยสุดเพื่อ เทเนื้อหาไฟล์ออกมาบนจอทั้งหมด เหมาะกับไฟล์สั้นๆ
[student@server1 ~]$ cat notes.txt บรรทัดแรกของไฟล์ บรรทัดที่สอง บรรทัดที่สาม
เนื้อหาทั้งไฟล์โผล่ออกมาเลย — แต่ถ้าไฟล์ยาวเป็นพันบรรทัด มันจะวิ่งผ่านจอจนตามอ่านไม่ทัน ตอนนั้นให้ใช้ less แทน
เปิดไฟล์ขึ้นมาแบบ เลื่อนขึ้นลงได้ทีละหน้า ไม่เลื่อนหายไปเอง เหมาะกับไฟล์ยาวๆ เช่น log หรือไฟล์ตั้งค่า
[student@server1 ~]$ less /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...
เมื่ออยู่ในหน้า less ใช้ปุ่มเหล่านี้:
Spaceเลื่อนลงทีละหน้า↑ ↓เลื่อนทีละบรรทัด/คำค้นหาคำในไฟล์qกดออก — เหมือนตอนออกจาก man ในบทที่แล้วเป๊ะจำได้ไหมว่าบทที่แล้วออกจาก man ด้วยปุ่ม q? นั่นเพราะ man ใช้ less เปิดคู่มือให้นั่นเอง วิธีเลื่อน/ค้นหา/ออก จึงเหมือนกันทุกอย่าง — เรียนรู้ครั้งเดียวใช้ได้ทั้งคู่
head แสดง บรรทัดบนสุด ของไฟล์ ส่วน tail แสดง บรรทัดล่างสุด โดยปกติให้มา 10 บรรทัด ใช้ option -n เพื่อกำหนดจำนวนเองได้
[student@server1 ~]$ head -n 3 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin [student@server1 ~]$ tail -n 2 /etc/passwd student:x:1000:1000::/home/student:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
head ไฟล์ดู 10 บรรทัดบนสุดhead -n 3 ไฟล์ดู 3 บรรทัดบนสุดtail -n 2 ไฟล์ดู 2 บรรทัดล่างสุดoption -f (follow) ทำให้ tail ค้างอยู่ที่ท้ายไฟล์และอัปเดตให้เห็นทันทีที่มีบรรทัดใหม่เข้ามา — สุดยอดเครื่องมือสำหรับดู log ของเซิร์ฟเวอร์ตอนกำลังทำงาน
[student@server1 ~]$ tail -f /var/log/messages Jun 16 10:00:01 server1 systemd: Started Session 12. Jun 16 10:00:05 server1 sshd: Accepted password for student _ (ค้างรออยู่ตรงนี้ — มีบรรทัดใหม่เมื่อไหร่ก็โผล่ขึ้นมาเอง)
หน้าจอจะค้างรอ ไม่กลับมาที่ prompt — เพราะมันกำลัง “เฝ้าดู” อยู่ กด Ctrl+C เพื่อหยุดและกลับมาพิมพ์คำสั่งต่อ
tail -f เหมือนการ นั่งดูสายพานลำเลียงของในโรงงาน — คุณจ้องที่ปลายสายพาน พอมีของชิ้นใหม่ไหลมาถึง คุณก็เห็นมันทันที ไม่ต้องเดินไปเดินมาคอยเช็ก
บางทีเราไม่อยากพิมพ์ชื่อไฟล์ทีละอัน เช่นมีไฟล์ .txt อยู่ 50 อันแล้วอยากทำกับทั้งหมดพร้อมกัน — นี่คือหน้าที่ของ wildcards (ตัวแทนชื่อ) หรือที่เรียกว่า globbing
| สัญลักษณ์ | หมายถึง |
|---|---|
* | แทนตัวอักษร กี่ตัวก็ได้ (รวมถึงไม่มีเลย) |
? | แทนตัวอักษร 1 ตัวพอดี |
[student@server1 ~]$ ls a.txt b.txt notes.txt report1.log report2.log photo.jpg [student@server1 ~]$ ls *.txt a.txt b.txt notes.txt [student@server1 ~]$ ls report?.log report1.log report2.log
*.txtไฟล์ทุกตัวที่ลงท้ายด้วย .txt (ชื่อข้างหน้าจะยาวแค่ไหนก็ได้)report?.logตรงกับ report1.log, report2.log เพราะ ? แทนได้แค่ 1 ตัว* เหมือนพูดว่า “เอาเสื้อ สีอะไรก็ได้” ส่วน ? เหมือนพูดว่า “เอาเสื้อที่ชื่อยาวเท่านี้เป๊ะ ต่างกันแค่ตัวเดียว” — ใช้ร่วมกับ cp, mv, rm ได้หมด เช่น rm *.tmp ลบไฟล์ขยะ .tmp ทั้งหมดทีเดียว
การใช้ * ร่วมกับ rm ทรงพลังแต่อันตราย ก่อนลบให้ลองเปลี่ยนเป็น ls *.tmp ดูก่อนว่าตรงกับไฟล์อะไรบ้าง พอแน่ใจแล้วค่อยเปลี่ยนเป็น rm — โดยเฉพาะอย่าเผลอเว้นวรรคเป็น rm * .tmp เพราะ * เดี่ยวๆ แปลว่า “ทุกไฟล์ในโฟลเดอร์นี้”!
หัวข้อนี้สำคัญมากและทำให้ command line ทรงพลังกว่าการคลิกเมาส์เยอะ — มันคือการ เปลี่ยนทางเดินของผลลัพธ์ ปกติคำสั่งจะพ่นผลลัพธ์ออกจอ แต่เราเปลี่ยนให้มันไหลลงไฟล์ หรือไหลต่อเข้าอีกคำสั่งได้
เครื่องหมาย > สั่งให้ผลลัพธ์ที่ปกติออกจอ ไหลลงไฟล์แทน — แต่ระวัง มันจะ ลบเนื้อหาเดิมของไฟล์ทิ้งทั้งหมด แล้วเขียนทับ
[student@server1 ~]$ echo "บรรทัดแรก" > list.txt [student@server1 ~]$ cat list.txt บรรทัดแรก [student@server1 ~]$ echo "เขียนใหม่" > list.txt [student@server1 ~]$ cat list.txt เขียนใหม่
สังเกตว่ารอบสองที่ใช้ > อีกครั้ง คำว่า “บรรทัดแรก” หายไปเลย เพราะ > เขียนทับทั้งหมด (echo = คำสั่งพ่นข้อความออกมา)
ถ้าอยาก เพิ่มบรรทัดต่อท้าย โดยไม่ลบของเดิม ให้ใช้ >> (สองตัว)
[student@server1 ~]$ echo "บรรทัด A" > list.txt [student@server1 ~]$ echo "บรรทัด B" >> list.txt [student@server1 ~]$ cat list.txt บรรทัด A บรรทัด B
>เขียนทับ — ของเดิมหายหมด>>ต่อท้าย — ของเดิมอยู่ครบ เพิ่มบรรทัดใหม่ไว้ข้างล่างมือใหม่พลาดเรื่องนี้บ่อยมาก — ตั้งใจจะเพิ่มข้อมูลแต่พิมพ์ > ตัวเดียว ผลคือไฟล์เดิมที่อุตส่าห์ทำมาหายเกลี้ยง จะต่อท้ายต้องใช้ >> สองตัวเสมอ
เครื่องหมาย | (อ่านว่า “ไพป์”) คือพระเอกของบทนี้ — มันเอา ผลลัพธ์จากคำสั่งซ้ายมือ ส่งต่อเข้าไปเป็น “วัตถุดิบ” ให้คำสั่งขวามือ ทำงานต่อ
นึกถึง ท่อส่งน้ำต่อกันเป็นทอดๆ — น้ำ (ผลลัพธ์) ไหลออกจากคำสั่งแรก ผ่านท่อ | เข้าเครื่องที่สอง แล้วไหลต่อผ่านอีกท่อเข้าเครื่องที่สามได้เรื่อยๆ แต่ละเครื่องทำหน้าที่กรอง/แปลง/นับ น้ำที่ไหลผ่าน
[student@server1 ~]$ ls /etc | head -n 5 adjtime aliases bashrc crontab fstab
คำสั่งนี้อ่านว่า: เอาผลลัพธ์ของ ls /etc (ไฟล์เยอะมาก) ส่งผ่านท่อ | เข้า head -n 5 เพื่อตัดให้เหลือแค่ 5 บรรทัดแรก — เหมือนเอาน้ำจากก๊อกใหญ่ ส่งผ่านท่อไปเข้าเครื่องกรองที่ปล่อยออกมาแค่ 5 หยด
grep คือเครื่องมือ ค้นหาคำ ที่คุณจะใช้บ่อยมาก — มันอ่านไฟล์แล้วพ่นออกมา เฉพาะบรรทัดที่มีคำที่คุณค้นหา
รูปแบบคือ grep คำที่หา ไฟล์
[student@server1 ~]$ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
แสดงทุกบรรทัดในไฟล์ /etc/passwd ที่มีคำว่า root อยู่ — บรรทัดที่ไม่มีคำนี้ถูกซ่อนไปหมด ช่วยให้หาเจอเร็วในไฟล์ยาวๆ
[student@server1 ~]$ grep -i error log.txt (เจอทั้ง error, Error, ERROR — ไม่สนตัวเล็กใหญ่) [student@server1 ~]$ grep -r "password" /etc (ค้นหาคำว่า password ในทุกไฟล์ทั้งโฟลเดอร์ /etc)
grep -iไม่สนตัวพิมพ์เล็ก–ใหญ่ (i = ignore case)grep -rค้นหาในทุกไฟล์ทั้งโฟลเดอร์และโฟลเดอร์ย่อย (r = recursive)grep เจิดจรัสที่สุดเมื่อใช้คู่กับ pipe | — เอาผลลัพธ์ยาวๆ จากคำสั่งอื่นมา “กรอง” ให้เหลือเฉพาะบรรทัดที่สนใจ
[student@server1 ~]$ ps aux | grep ssh root 1042 0.0 0.2 /usr/sbin/sshd -D student 2310 0.0 0.0 grep --color ssh
ps aux แสดง โปรเซสที่รันอยู่ทั้งหมด (ยาวมากเป็นร้อยบรรทัด) แล้วส่งผ่านท่อ | เข้า grep ssh เพื่อกรองเอาเฉพาะบรรทัดที่เกี่ยวกับ ssh — เป็นวิธียอดฮิตในการเช็กว่าโปรแกรมที่ต้องการกำลังทำงานอยู่หรือไม่
บรรทัดที่สองในตัวอย่างคือตัว grep เองที่กำลังทำงาน (มันก็มีคำว่า ssh ในคำสั่งเลยติดมาด้วย) เป็นเรื่องปกติ ไม่ต้องตกใจ
เวลาจะส่งไฟล์หลายๆ อันหรือทั้งโฟลเดอร์ การ มัดรวมเป็นก้อนเดียวแล้วบีบให้เล็กลง จะสะดวกกว่ามาก เครื่องมือมาตรฐานของ Linux ชื่อ tar
tar เหมือนการ เอาของหลายชิ้นใส่กล่องแล้วปิดเทป ให้เป็นพัสดุก้อนเดียว ส่วน z (gzip) เหมือนการดูดอากาศออกให้กล่องแบนลง ขนง่ายขึ้น — ปลายทางก็แค่แกะเทปออก (extract) ก็ได้ของครบเหมือนเดิม
[student@server1 ~]$ tar -czf out.tar.gz project/ (มัดโฟลเดอร์ project แล้วบีบอัดเป็นไฟล์ out.tar.gz) [student@server1 ~]$ tar -tzf out.tar.gz project/ project/notes.txt project/backup.txt [student@server1 ~]$ tar -xzf out.tar.gz (แตกไฟล์ออกมา ได้โฟลเดอร์ project กลับมาครบ)
tar -czfสร้างและบีบอัด (c = create)tar -tzfดูว่าข้างในมีอะไรบ้าง โดยยังไม่แตก (t = list)tar -xzfแตกไฟล์ออกมา (x = extract)ตัวอักษรหลัง - แต่ละตัวมีความหมายเฉพาะ จำ 4 ตัวนี้พอ:
c = create (สร้าง) • x = extract (แตก) • t = list (ดูรายการ)
z = ใช้ gzip บีบอัด • f = file บอกว่าชื่อไฟล์คืออะไร (ตัว f ต้องอยู่ท้ายสุดเสมอ ตามด้วยชื่อไฟล์)
ถ้าอยากบีบ ไฟล์เดียว (ไม่ใช่มัดหลายไฟล์) ใช้ gzip ไฟล์ ได้ไฟล์ .gz ออกมา และคลายกลับด้วย gunzip ไฟล์.gz — ส่วน tar ใช้เมื่อต้องมัดหลายไฟล์/ทั้งโฟลเดอร์เข้าด้วยกัน
> ทับไฟล์เดิมหายหมด: ตั้งใจจะเพิ่มข้อมูลต่อท้าย แต่พิมพ์ > ตัวเดียว ผลคือเนื้อหาเก่าถูกลบเกลี้ยง — จะต่อท้ายต้อง >> สองตัวเสมอ-r ตอน cp โฟลเดอร์: cp project project2 จะ error เพราะ project เป็นโฟลเดอร์ ต้องใช้ cp -r ถึงจะลอกทั้งโฟลเดอร์ได้rm -rf ผิดที่: ลบถาวรไม่มีถังขยะ ไม่ถามซ้ำ — ก่อน Enter ให้อ่าน path ทวนทุกครั้ง โดยเฉพาะตอนเป็น root (เห็น #)rm *.tmp แต่เผลอเว้นเป็น rm * .tmp ทำให้ * หมายถึง “ทุกไฟล์” — ลบหมดโฟลเดอร์less: เปิดไฟล์ยาวด้วย less หรือ man แล้วออกไม่เป็น — จำไว้ว่ากด qtail -f ไม่ยอมกลับมา: มันค้างเฝ้า log อยู่ ไม่ใช่ค้าง — กด Ctrl+C เพื่อหยุดและกลับมาที่ prompt| คำสั่ง | ทำอะไร |
|---|---|
touch ไฟล์ | สร้างไฟล์เปล่า |
mkdir โฟลเดอร์ | สร้างโฟลเดอร์ |
mkdir -p a/b/c | สร้างโฟลเดอร์หลายชั้นรวดเดียว |
cp ต้นทาง ปลายทาง | คัดลอกไฟล์ |
cp -r | คัดลอกทั้งโฟลเดอร์ |
mv ต้นทาง ปลายทาง | ย้าย หรือ เปลี่ยนชื่อ |
rm ไฟล์ | ลบไฟล์ (ถาวร ไม่มีถังขยะ) |
rm -r โฟลเดอร์ | ลบทั้งโฟลเดอร์รวมของข้างใน |
rmdir โฟลเดอร์ | ลบโฟลเดอร์ว่างเปล่า |
cat ไฟล์ | เทเนื้อหาไฟล์ออกจอ (ไฟล์สั้น) |
less ไฟล์ | เปิดอ่านแบบเลื่อนได้ (กด q ออก) |
head -n N ไฟล์ | ดู N บรรทัดบนสุด |
tail -n N ไฟล์ | ดู N บรรทัดล่างสุด |
tail -f ไฟล์ | เฝ้าดู log สดๆ (กด Ctrl+C หยุด) |
* / ? | wildcard: กี่ตัวก็ได้ / 1 ตัว |
> ไฟล์ | เขียนทับลงไฟล์ |
>> ไฟล์ | เขียนต่อท้ายไฟล์ |
คำสั่ง | คำสั่ง | pipe: ส่งผลลัพธ์ต่อให้คำสั่งถัดไป |
grep คำ ไฟล์ | ค้นหาบรรทัดที่มีคำนั้น |
grep -i | ค้นหาไม่สนตัวเล็กใหญ่ |
grep -r | ค้นหาทั้งโฟลเดอร์ |
tar -czf out.tar.gz dir/ | มัด + บีบอัดเป็นก้อนเดียว |
tar -tzf out.tar.gz | ดูว่าในก้อนมีอะไร |
tar -xzf out.tar.gz | แตกไฟล์ออกมา |
สร้างไฟล์/โฟลเดอร์ (touch, mkdir) → คัดลอก ย้าย ลบได้ปลอดภัย (cp, mv, rm) → เปิดดูเนื้อหาไฟล์ทั้งสั้นและยาว (cat, less, tail -f) → กรองและค้นหาข้อความด้วย pipe กับ grep (ps aux | grep ssh) → และมัด/แตกไฟล์ด้วย tar ได้ เท่านี้คุณก็จัดการไฟล์บน Linux ได้คล่องแล้ว!