คำสั่ง Linux rm: ทุกสิ่งที่คุณต้องรู้
เผยแพร่แล้ว: 2023-01-22 คำสั่ง Linux rm
จะลบไฟล์และไดเร็กทอรี ในการใช้เครื่องมือนี้อย่างปลอดภัย คุณต้องแน่ใจว่าจะเกิดอะไรขึ้นเมื่อคุณกด “Enter” นี่คือสิ่งที่คุณต้องรู้
คำสั่ง rm ใน Linux คืออะไร?
วิธีลบไฟล์ด้วย rm
การใช้สัญลักษณ์แทนด้วย rm
ใช้ rm แบบโต้ตอบ
การใช้ตัวเลือก rm Force
การลบไดเร็กทอรีด้วย rm
หลีกเลี่ยงข้อผิดพลาดเมื่อใช้ rm
อะไร PPE?
คำสั่ง rm ใน Linux คืออะไร?
คำสั่ง Linux rm
ใช้สำหรับลบไฟล์เป็นหลัก เป็นสิ่งที่คนส่วนใหญ่พบทันทีหลังจากเริ่มใช้ Linux เพียงแค่เป็นผู้ใช้ใหม่กับ Linux คุณก็มีโอกาสทำผิดพลาดได้ คุณจะสร้างหรือคัดลอกไฟล์โดยไม่ตั้งใจ หรือใช้ชื่อผิด หรือไปยังที่ที่ไม่ถูกต้อง ทั้งหมดนี้เป็นส่วนหนึ่งของเส้นโค้งการเรียนรู้ของบรรทัดคำสั่ง การดำเนินการล้างข้อมูลสำหรับข้อผิดพลาดดังกล่าวเกี่ยวข้องกับ rm
คำสั่ง rm
สามารถลบไฟล์ กลุ่มของไฟล์ ไดเร็กทอรี หรือแผนผังไดเร็กทอรีที่สมบูรณ์ นั่นเป็นเหตุผลที่ต้องใช้ด้วยความระมัดระวัง การใช้ rm
ไม่ใช่เรื่องยาก แต่ค่าปรับหากล้มเหลวนั้นสูง
เมื่อไฟล์ถูกลบด้วย rm
ไฟล์นั้นจะหายไป ไม่ได้ย้ายไปที่ถังขยะ จะถูกลบล้างทันที ไม่ได้หมายความว่าคุณควรหลีกเลี่ยงการใช้ rm
แต่หากต้องการใช้งานอย่างปลอดภัย คุณต้องตระหนักว่าสามารถทำอะไรได้บ้าง และตรวจสอบให้แน่ใจว่าคุณใช้อย่างถูกต้อง
เครื่องมือบางอย่างมีอันตรายมากกว่าเครื่องมืออื่นๆ และให้อภัยความผิดพลาดน้อยกว่ามาก นั่นเป็นเหตุผลที่ไม่เคยมีภาพยนตร์เรื่อง The Texas Wrench Massacre rm
ไม่ใช่ประแจ แต่เป็นเลื่อยไฟฟ้า
ผู้คนใช้เลื่อยยนต์ทุกวันทุกวัน และตราบใดที่พวกเขาใช้เลื่อยไฟฟ้าอย่างมีความรับผิดชอบและมีสติ ก็ไม่เป็นไร มันเป็นข้อตกลงเดียวกันกับ rm
เมื่อคุณดึง rm
ออกจากกระเป๋าเครื่องมือ คุณควรลดความเร็วลงและตรวจสอบ จากนั้นตรวจสอบอีกครั้งบรรทัดคำสั่งของคุณ
คำสั่ง rm
เป็นคำสั่งปฏิบัติการ ไม่ใช่ส่วนหนึ่งของเชลล์ แม้ว่าเราจะใช้ Bash ที่นี่ แต่มันเป็น Linux มาตรฐาน rm
ไม่ใช่ Bash rm
พิเศษ
ที่เกี่ยวข้อง: บรรทัดคำสั่ง: ทำไมผู้คนถึงยังกังวลกับพวกเขา
วิธีลบไฟล์ด้วย rm
วิธีที่ง่ายที่สุดในการใช้ rm
คือระบุชื่อไฟล์ที่คุณต้องการลบ
rm config.gc
คุณถูกส่งกลับไปยังบรรทัดคำสั่งอย่างเงียบ ๆ rm
ใช้ท่าทาง Linux แบบคลาสสิกที่ปิดสนิทซึ่งหากไม่บ่นเกี่ยวกับสิ่งใด ๆ คุณสามารถถือว่าเป็นไปตามที่คุณขอ การระบุชื่อไฟล์เช่นนี้ทำให้ rm
ค้นหาไฟล์ในไดเร็กทอรีการทำงานปัจจุบัน
คุณสามารถระบุชื่อไฟล์ได้หลายชื่อในบรรทัดคำสั่ง คุณยังสามารถระบุเส้นทางไดเร็กทอรีหากไฟล์ที่คุณต้องการลบไม่อยู่ในไดเร็กทอรีปัจจุบัน
rm memlog.sh /home/dave/dev-archive/config.gc
ไม่มีการรายงานอีกครั้งหาก rm
จัดการเพื่อลบไฟล์ที่ระบุ
ที่เกี่ยวข้อง: 37 คำสั่ง Linux ที่สำคัญที่คุณควรรู้
การใช้สัญลักษณ์แทนด้วย rm
สัญลักษณ์แทนช่วยให้คุณสามารถระบุกลุ่มหรือคอลเลกชันของไฟล์โดยไม่ต้องแสดงรายการแต่ละไฟล์ในบรรทัดคำสั่ง
เครื่องหมายดอกจัน “ *
” หมายถึงลำดับของอักขระใดๆ รวมทั้งไม่มี เครื่องหมายคำถาม “ ?
” หมายถึงอักขระเดี่ยวใดๆ
ในการตรวจสอบว่า wildcard ของคุณตรงกับสิ่งที่คุณคาดหวังหรือไม่ คุณสามารถใช้ wildcard กับ ls ก่อนที่จะใช้กับ rm
หากต้องการลบไฟล์ PNG ทั้งหมดในไดเร็กทอรีปัจจุบัน ให้ใช้ “*.png” ซึ่งหมายความว่าลำดับของอักขระที่ตามด้วย ".png" จะถูกจับคู่ เมื่อไฟล์ถูกลบ เราสามารถใช้ ls
เพื่อยืนยันว่าไฟล์เหล่านั้นหายไปแล้ว
ls *.png
rm *.png
ls *.png
ในคอมพิวเตอร์ทดสอบ เรามีไฟล์สองไฟล์ในไดเร็กทอรีปัจจุบันที่มีชื่อขึ้นต้นด้วย "config"
เราสามารถลบทั้งสองสิ่งนี้ได้โดยใช้สัญลักษณ์ดอกจัน ตรงกับทั้งสองไฟล์เนื่องจาก rm
ค้นหาชื่อไฟล์ที่ขึ้นต้นด้วย "config" ตามด้วยลำดับของอักขระ ในไฟล์เดียว ลำดับของอักขระนั้นคือ “.sl3” ซึ่งเป็นนามสกุลไฟล์ ชื่อไฟล์อื่นไม่มีอักขระตามหลัง "config" แต่เนื่องจากเครื่องหมายดอกจันตรงกับอักขระใดๆ หรือ ไม่มีอักขระ ใดๆ เลย จึงตรงกับชื่อไฟล์นั้นด้วย
ls กำหนดค่า*
การกำหนดค่า rm*
ls กำหนดค่า*
คุณสามารถใช้เครื่องหมายคำถามเป็นคู่ การดำเนินการนี้จะลบไฟล์ที่มีนามสกุลไฟล์สองอักขระพอดี
ลส *.??
rm *.??
ลส *.??
ที่เกี่ยวข้อง: 15 ตัวละครพิเศษที่คุณต้องรู้จักสำหรับ Bash
ใช้ rm แบบโต้ตอบ
วิธีที่ปลอดภัยในการใช้ rm
คือการบังคับให้ขอการยืนยันก่อนที่จะลบแต่ละไฟล์ ตัวเลือก -i
(แบบโต้ตอบ) ช่วยให้คุณทำสิ่งนี้ได้ เมื่อคุณเพิ่มตัวเลือกนี้ในบรรทัดคำสั่ง rm
จะแจ้งให้คุณทราบก่อนการลบแต่ละครั้ง ทำให้คุณมีโอกาสที่จะข้ามการกระทำที่คุณไม่ได้ตั้งใจ
เราจะใช้ตัวเลือก -i
(แบบโต้ตอบ) ในคำสั่งนี้ พยายามลบไฟล์ทั้งหมดที่มีนามสกุลไฟล์อักขระเดียว
rm -i *.?
แต่ละไฟล์ที่ตรงกันจะถูกนำเสนอตามลำดับ หากคุณตอบ “y” หรือ “Y” ไฟล์จะถูกลบ หากคุณตอบ “n” ไฟล์จะถูกเก็บไว้ ในความเป็นจริง หากคุณตอบด้วยสิ่งอื่นที่ไม่ใช่ "y" หรือ "y" ไฟล์นั้นจะถูกเก็บไว้ คุณสามารถกด "Enter" และไฟล์จะถูกเก็บไว้
คุณสามารถทำงานผ่านรายการไฟล์ได้อย่างรวดเร็ว ลบหรือข้ามไฟล์เพื่อเลือกไฟล์ที่คุณต้องการลบ ดังที่เราจะเห็นว่าคุณสามารถใช้ตัวเลือก i-
(โต้ตอบ) กับตัวเลือก rm
อื่นๆ ได้
คำสั่งลินุกซ์ | ||
ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · น้อยกว่า · chgrp · chown · rev · look · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพตช์ · แปลง · rclone · ฉีก · srm · scp · gzip · chattr · ตัด · ค้นหา · umask · wc | |
กระบวนการ | นามแฝง · หน้าจอ · ยอดนิยม · ดี · เรนิส · ความคืบหน้า · strace · systemd · tmux · chsh · ประวัติ · ที่ · ชุด · ฟรี · ซึ่ง · dmesg · chfn · usermod · ps · chroot · xargs · tty · พิ้งกี้ · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · นอนหลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · ปิดเครื่อง · passwd · lscpu · crontab · วันที่ · bg · fg · pidof · nohup · pmap | |
ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · ขุด · นิ้ว · nmap · ftp · curl · wget · ใคร · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ
การใช้ตัวเลือก rm Force
หากคุณพยายามลบไฟล์ที่เป็นแบบอ่านอย่างเดียว rm
จะแจ้งให้คุณยืนยันก่อนที่จะลบไฟล์นั้น นั่นเป็นเครือข่ายความปลอดภัยที่ดี แต่อาจกลายเป็นเรื่องน่าเบื่อหากคุณมีไฟล์จำนวนมากที่ต้องลบ
rm geonames.sl3
ตัวเลือก -f
(บังคับ) สั่งให้ rm
ไม่พร้อมท์ คุณกำลังบอกว่า “ใช่ ลบไฟล์ทั้งหมดที่คุณมักจะแจ้งให้ฉันทราบ” นอกจากนี้ยังป้องกันไม่ให้ rm
บ่นเกี่ยวกับไฟล์ที่ไม่มีอยู่จริง
rm -f geonames.sl3
ตัวเลือก -f
(บังคับ) มักใช้เมื่อคุณลบชุดไฟล์และไดเร็กทอรีที่ซ้อนกัน
การลบไดเร็กทอรีด้วย rm
คำสั่ง rm
สามารถเลือกที่จะลบไดเร็กทอรีพร้อมกับไฟล์ที่มีอยู่ ซึ่งคล้ายกับคำสั่ง rmdir
แต่ rmdir
ไม่สามารถลบไดเร็กทอรีที่มีไฟล์อยู่ภายในได้ จะลบไดเร็กทอรีที่ว่างเปล่าเท่านั้น คำสั่ง rm
สามารถลบไดเร็กทอรีที่มีไฟล์และไดเร็กทอรีอื่นได้อย่างง่ายดาย
การลบไดเร็กทอรีนั้นคล้ายกับการลบไฟล์ เราระบุชื่อไดเร็กทอรีในบรรทัดคำสั่ง เราจำเป็นต้องรวมตัวเลือก -d
(ไดเร็กทอรี) เช่นเดียวกับที่เราทำเมื่อเราลบไฟล์ เราสามารถระบุชื่อไดเร็กทอรีต่างๆ เราสามารถระบุพาธไปยังไดเร็กทอรีที่ไม่ได้อยู่ในไดเร็กทอรีการทำงานปัจจุบัน
rm -d โครงการเก่า
หากไดเร็กทอรีมีไฟล์ สิ่งนี้จะล้มเหลว
หากต้องการลบไดเร็กทอรี และ เนื้อหา ให้ใช้แฟล็ก -r
(recursive) ซึ่งจะลบไดเร็กทอรี ไฟล์ และไดเร็กทอรีที่ซ้อนอยู่ในไดเร็กทอรี
rm -d ไฟล์เก็บถาวร
rm -r ไฟล์เก็บถาวร
คำสั่งที่สองสำเร็จ
หากต้องการเปลี่ยน rm
เป็นโหมดเลื่อยไฟฟ้าแบบเต็ม เราสามารถรวมตัวเลือก -r
(เรียกซ้ำ) และ -f
(บังคับ) สิ่งนี้บอกให้ rm
ลบไฟล์และไดเร็กทอรีทั้งหมดในแผนผังไดเร็กทอรีแบบวนซ้ำ แม้ว่าไฟล์และไดเร็กทอรีจะเป็นแบบอ่านอย่างเดียวก็ตาม และไม่ต้องแจ้งเรา
ในคอมพิวเตอร์ทดสอบของเรา เรามีไดเร็กทอรีชื่อ "migrated code" ประกอบด้วยไฟล์และไดเร็กทอรีอื่นที่เรียกว่า “6502” ไดเร็กทอรี “6502” ยังมีไฟล์และไดเร็กทอรีอื่นที่เรียกว่า “ASM” มีไฟล์อยู่ในไดเร็กทอรีนั้นด้วย ไฟล์บางไฟล์เป็นแบบอ่านอย่างเดียว
เราจะรวมคำสั่ง -v
(verbose) เพื่อให้ rm
บอกเราว่ากำลังทำอะไรอยู่
rm -rfv ย้ายรหัส
ในเอาต์พุต เราจะเห็นว่าไฟล์ถูกลบออก และเมื่อไฟล์ว่างเปล่า ไดเร็กทอรีจะถูกลบด้วย
หลีกเลี่ยงข้อผิดพลาดเมื่อใช้ rm
ช่องว่างและอักขระแปลก ๆ ในชื่อไฟล์อาจทำให้เกิดปัญหาได้ ตัวอย่างเช่น ชื่อไฟล์ที่ขึ้นต้นด้วยยัติภังค์ “ -
” อาจถูกเข้าใจผิดว่าเป็นตัวเลือกบรรทัดคำสั่ง หากเรามีไฟล์ชื่อ “-contributors.txt” rm
จะพยายามประมวลผลชื่อเป็นลำดับของตัวเลือกบรรทัดคำสั่ง
เนื่องจาก rm
ไม่มีตัวเลือกที่เรียกว่า " -c
" การแยกวิเคราะห์บรรทัดคำสั่งจึงล้มเหลวและไฟล์จะไม่ถูกลบ หากต้องการลบไฟล์ คุณต้องนำหน้าด้วย "./" เพื่อระบุเส้นทางไปยังไฟล์นั้น
rm -contributors.txt
rm./-contributors.txt
ช่องว่างในชื่อไฟล์ก็มีปัญหาเช่นกัน อ้างชื่อไฟล์ทั้งหมด หรือใช้การเติมแท็บให้สมบูรณ์เพื่อแทรกชื่อไฟล์ลงในบรรทัดคำสั่งแทนคุณ หลีกเลี่ยงการเว้นวรรคเมื่อทำเช่นนั้น หากคุณไม่ได้ใช้ตัวเลือกเหล่านี้ rm
จะถือว่าแต่ละส่วนของชื่อไฟล์เป็นไฟล์เดียว
ที่นี่ เรามีไฟล์สองไฟล์ ไฟล์หนึ่งเรียกว่า "สำรองข้อมูล" และอีกไฟล์หนึ่งเรียกว่า "สำรองข้อมูลเพื่อลบ" เราสามารถแสดงปัญหากับชื่อไฟล์เหล่านี้ได้โดยใช้ ls
หากเราพยายามใช้ ls
ในไฟล์ "สำรองข้อมูลเพื่อลบ" และเราไม่หนีหรืออ้างชื่อไฟล์ คำสั่งจะล้มเหลว
ls -hl สำรองข้อมูลเพื่อลบ
ls
บ่นว่าไม่พบไฟล์ที่ชื่อว่า "to" หรือ "delete" แต่พบไฟล์ที่ชื่อว่า "backup" นั่นคือสิ่งที่ rm
จะทำเช่นกัน มันจะบ่นเกี่ยวกับไฟล์ที่หายไปสองไฟล์ จากนั้นมันก็จะลบไฟล์ที่เรียกว่า "สำรองข้อมูล" ซึ่งไม่ใช่ไฟล์ที่เราต้องการ
rm สำรองเพื่อลบ
rm
คิดว่ามันทำงานกับไฟล์สามไฟล์ "สำรอง" "ถึง" และ "ลบ" มันบ่นว่าไม่พบ "ถึง" และ "ลบ" แต่มันพบและลบ "ข้อมูลสำรอง" อย่างเงียบ ๆ
การอ้างอิงชื่อไฟล์ทำให้ rm
สามารถลบไฟล์ที่ถูกต้องได้
rm 'สำรองข้อมูลเพื่อลบ'
คุณยังสามารถเว้นช่องว่างด้วยเครื่องหมายแบ็กสแลช “ \
“ เช่นนี้:
rm สำรอง\ ถึง \ ลบ
หากคุณใช้การเติมแท็บให้สมบูรณ์เพื่อป้อนชื่อไฟล์ ระบบจะใช้ Escape โดยอัตโนมัติหากจำเป็น
อะไร PPE?
ซึ่งแตกต่างจากเลื่อยไฟฟ้าในโลกแห่งความเป็นจริง ไม่มีอุปกรณ์ป้องกันส่วนบุคคลที่คุณใช้กับ rm
ได้
สิ่งที่คุณทำได้คือตรวจสอบไวยากรณ์ของคุณด้วย ls
ก่อนลองด้วย rm
และใช้โหมดโต้ตอบเพื่อตัดสินใจว่าจะลบอะไร
นอกนั้นฝึกจนสบายใจและมั่นใจ วิธีที่ปลอดภัยที่สุดในการทำเช่นนั้นคือการคัดลอกไฟล์เสียสละจำนวนมากไปยังไดเร็กทอรีและฝึกฝนกับไฟล์เหล่านั้น
ที่เกี่ยวข้อง: ลบไฟล์ที่เก่ากว่า x วันบน Linux