8 การพิมพ์ผิดที่คุณต้องหลีกเลี่ยงบน Linux
เผยแพร่แล้ว: 2023-01-15บรรทัดคำสั่งของ Linux มอบพลังที่ยอดเยี่ยม ปัญหาคือการใช้พลังที่ถูกต้องนั้นขึ้นอยู่กับความแม่นยำในการพิมพ์ของคุณ ต่อไปนี้คือข้อผิดพลาดแปดประการที่คุณไม่ต้องการทำ
ลินุกซ์บรรทัดคำสั่ง
1. อย่าลืม -a
2. การใช้ตัวระบุไดรฟ์ที่ไม่ถูกต้องด้วย dd
3. การใช้ตัวระบุไดรฟ์ที่ไม่ถูกต้องด้วย mkfs
4. อย่าลบไฟล์ crontab ของคุณ
5. ประวัติซ้ำ
6. หายนะแห่งอวกาศ
7. การใช้ > แทน >>
8. การเปลี่ยนเส้นทางในทิศทางที่ไม่ถูกต้อง
วิธีหลีกเลี่ยงการพิมพ์ผิดบรรทัดคำสั่ง
ลินุกซ์บรรทัดคำสั่ง
บรรทัดคำสั่งของ Linux เป็นพอร์ทัลที่นำไปสู่พลังที่ยิ่งใหญ่ แต่พิมพ์ผิดเพียงคำเดียวก็เพียงพอแล้วที่พลังนั้นจะต่อต้านคุณ เราเคยได้ยินเกี่ยวกับคำสั่งที่คุณไม่ควรเรียกใช้ สิ่งที่เรากำลังพูดถึงนี้คือคำสั่งที่คุณต้องการเรียกใช้ แต่การพลาดพลั้งอาจหมายถึงหายนะ
เมื่อคุณกด “Enter” ทุกสิ่งที่คุณพิมพ์จะถูกประมวลผลโดยเชลล์ มีการขยายนามแฝงและตัวแปร มีการระบุคำสั่ง ตัวเลือก และพารามิเตอร์ สิ่งนี้เรียกว่าการแยกวิเคราะห์ ขั้นตอนต่อไปจะส่งอินพุตที่แยกวิเคราะห์ของคุณไปยังคำสั่งที่จะดำเนินการตามคำแนะนำของคุณ
หากคุณทำผิดพลาดเมื่อคุณพิมพ์คำสั่งของคุณ คำสั่งนั้นอาจติดอยู่ในข้อผิดพลาดทางไวยากรณ์ แต่ถ้าความผิดพลาดของคุณสร้างบรรทัดคำสั่งอื่นที่ถูกต้อง คำสั่งนั้นจะถูกดำเนินการ
การพิมพ์ผิดง่าย ๆ สามารถทำลายล้างได้อย่างแท้จริง ระดับการทำลายขึ้นอยู่กับคำสั่งและความผิดพลาด คุณอาจจะเสียเวลา คุณอาจสูญเสียไฟล์ คุณอาจสูญเสียระบบไฟล์ทั้งหมด
ที่เกี่ยวข้อง: Bash Shell คืออะไร และเหตุใดจึงสำคัญกับ Linux
1. อย่าลืม -a
คุณอาจต้องเพิ่มคนลงในกลุ่มเพื่อให้พวกเขาใช้ซอฟต์แวร์บางชิ้นได้ ตัวอย่างเช่น VirtualBox กำหนดให้ผู้ใช้เป็นส่วนหนึ่งของกลุ่ม "vboxusers" เราสามารถทำได้ด้วย usermod
คำสั่ง groups
แสดงรายการกลุ่มของผู้ใช้
กลุ่ม
เราจะเพิ่มผู้ใช้ dave
ลงในกลุ่มใหม่ -a
(ต่อท้าย) เพิ่มกลุ่มใหม่ในรายการของกลุ่มที่มีอยู่ซึ่งผู้ใช้อยู่ ตัวเลือก -G
(กลุ่ม) ระบุกลุ่ม
sudo usermod -a -G vboxusers เดฟ
กลุ่มใหม่จะปรากฏหลังจากที่ผู้ใช้เข้าสู่ระบบและออกจากระบบ
กลุ่ม
ตอนนี้เขาอยู่ในกลุ่ม "vboxusers" อย่างไรก็ตาม หากคุณลืมใช้ตัวเลือก -a
(ต่อท้าย) กลุ่มที่มีอยู่ทั้งหมดของผู้ใช้จะถูกลบออก กลุ่มเดียวที่พวกเขาจะเข้าร่วมคือกลุ่มใหม่
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
sudo usermod -G vboxusers เดฟ
เมื่อเข้าสู่ระบบต่อไปจะพบพวกเขาอยู่เพียงกลุ่มเดียว
กลุ่ม
ถ้าคุณมีผู้ใช้ที่กำหนดค่าไว้คนเดียว และคุณทำเช่นนี้กับพวกเขา คุณจะมีปัญหาร้ายแรง ประการหนึ่ง ผู้ใช้ไม่ได้เป็นสมาชิกของกลุ่ม "sudo" อีกต่อไป ดังนั้นคุณจึงไม่สามารถใช้ sudo
เพื่อเริ่มแก้ไขสิ่งต่างๆ ได้
ที่เกี่ยวข้อง: เพิ่มผู้ใช้ลงในกลุ่ม (หรือกลุ่มที่สอง) บน Linux
2. การใช้ตัวระบุไดรฟ์ที่ไม่ถูกต้องด้วย dd
คำสั่ง dd
เขียนบล็อกข้อมูลไปยังระบบไฟล์ มักใช้ในการเขียนอิมเมจ ISO ไปยังหน่วยความจำ USB
รูปแบบการตั้งชื่อ Linux สำหรับอุปกรณ์เก็บข้อมูลใช้ตัวอักษรตัวเดียวในการระบุตัวตน ฮาร์ดไดรฟ์ตัวแรกมีชื่อว่า “/dev/sda” ตัวที่สองคือ “/dev/sdb” ตัวที่สามคือ “/dev/sdc” และอื่นๆ พาร์ติชันระบุด้วยหมายเลข พาร์ติชั่นแรกของฮาร์ดไดรฟ์ตัวแรกคือ “/dev/sda1” พาร์ติชั่นที่สองคือ “/dev/sda2” และอื่นๆ
หากคุณเขียนภาพลงในแท่งหน่วยความจำ USB คุณจำเป็นต้องทราบตัวระบุไดรฟ์ของแท่งหน่วยความจำ USB เราจะพบว่าโดยการ lsblk
ผ่าน grep
มองหารายการที่มี "sd" อยู่ในนั้น
lsblk | เกรป เอสดี
เราจะเห็นว่าฮาร์ดไดรฟ์ “/dev/sda” เป็นไดรฟ์ขนาด 32GB ที่มีสามพาร์ติชั่น พาร์ติชันหนึ่งคือพาร์ติชัน "/boot" และพาร์ติชัน "/dev/sda3" ติดตั้งอยู่ที่ "/" ซึ่งเป็นรากของระบบไฟล์
ฮาร์ดไดรฟ์ “/dev/sdb” ถูกรายงานเป็นไดรฟ์ขนาด 7.5GB ติดตั้งอยู่ที่ “/media/dave/Pink” ไดรฟ์ “/dev/sda” คือฮาร์ดไดรฟ์หลักในคอมพิวเตอร์เครื่องนี้ และ “/dev/sdb” คือแท่งหน่วยความจำ USB
คำสั่งในการเขียนไฟล์ ISO ที่อยู่ในไดเร็กทอรี “~/Downloads” ไปยังหน่วยความจำ USB ของเราคือ:
sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sdb conv=fdatasync status=progress
เราได้รับแจ้งให้ใส่รหัสผ่าน จากนั้น dd
ก็ลงมือปฏิบัติ ไม่มี "คุณแน่ใจหรือไม่" คำเตือนหรือโอกาสที่จะกลับออกไป การเขียนเริ่มต้นทันที
อย่างไรก็ตาม หากคุณพิมพ์ตัวอักษรระบุไดรฟ์ผิดและตรงกับฮาร์ดไดรฟ์ที่มีอยู่ คุณจะเขียนทับไดรฟ์นั้นแทนเมมโมรี่สติ๊ก
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sda conv=fdatasync status=progress
เราบอกให้ dd
ใช้ “/dev/sd a ” มันก็เลยใช้ การดำเนินการเขียนนั้นเร็วกว่ามาก แต่จบลงด้วยคำเตือน คุณเพิ่งทิ้งการติดตั้ง Linux ของคุณไปอย่างไร้ประโยชน์
ตรวจสอบและตรวจสอบตัวระบุไดรฟ์อีกครั้งก่อนกด "Enter"
ที่เกี่ยวข้อง: วิธีเขียนไฟล์ ISO ลงในไดรฟ์ USB ใน Linux
3. การใช้ตัวระบุไดรฟ์ที่ไม่ถูกต้องด้วย mkfs
มีคำสั่งอื่นๆ ที่ใช้ตัวระบุไดรฟ์เป็นส่วนหนึ่งของบรรทัดคำสั่ง เช่น เครื่องมือ mkfs
ไดรฟ์รูปแบบเหล่านี้โดยการสร้างระบบไฟล์บนพาร์ติชัน
ในคอมพิวเตอร์เครื่องนี้เรามีไดรฟ์ 25GB และไดรฟ์ 10GB
หากเราต้องการสร้างระบบไฟล์ Ext4 บนพาร์ติชันแรกของไดรฟ์ขนาด 10GB เราจะใช้คำสั่งเหล่านี้
sudo umount /dev/sdb1
sudo mkfs.ext4 /dev/sdb1
แต่ถ้าเราทำผิดพลาดโดยใช้ "a" แทน "b" ในตัวระบุไดรฟ์ เราจะลบพาร์ติชั่นหนึ่งในไดรฟ์ 25GB และทำให้คอมพิวเตอร์ของเราไม่สามารถบู๊ตได้
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
sudo umount /dev/sda1
sudo mkfs.ext4 /dev/sda1
จดหมายเล็ก ๆ น้อย ๆ นั้นอัดแน่นไปด้วยพลัง ดังนั้นตรวจสอบให้แน่ใจว่าคุณกดไดรฟ์ที่ถูกต้อง
ที่เกี่ยวข้อง: วิธีใช้คำสั่ง mkfs บน Linux
4. อย่าลบไฟล์ crontab ของคุณ
cron
daemon รันงานตามเวลาที่กำหนดไว้สำหรับคุณ ใช้การกำหนดค่าจากไฟล์ crontab
ผู้ใช้แต่ละคนรวมถึงรูทสามารถมีไฟล์ crontab
ได้ หากต้องการแก้ไข crontab
ให้ใช้คำสั่งนี้:
crontab -e
ไฟล์ crontab
เปิดในเอดิเตอร์ คุณสามารถเปลี่ยนแปลงและเพิ่มคำสั่งใหม่ได้
แต่ถ้าคุณพิมพ์คำสั่งผิดและกด “r” แทน “e” คุณจะลบไฟล์ crontab
เช่นเดียวกับใน Delete
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
crontab -r
ครั้งต่อไปที่คุณใช้คำสั่ง crontab -e
คุณจะเห็นไฟล์เปล่าที่เป็นค่าเริ่มต้น
นี่เป็นข้อผิดพลาดที่เกิดขึ้นได้ง่าย เนื่องจาก "e" และ "r" อยู่ติดกันในแป้นพิมพ์ส่วนใหญ่ การสร้างไฟล์ crontab
ที่ซับซ้อนขึ้นมาใหม่ไม่ใช่เรื่องสนุก
ที่เกี่ยวข้อง: งาน Cron คืออะไรและคุณใช้มันอย่างไร?
5. ประวัติซ้ำ
การใช้คำสั่ง history
นั้นยอดเยี่ยมเมื่อคุณพยายามลดการกดแป้นพิมพ์และประหยัดเวลา หากคุณสามารถดึงคำสั่งที่ยืดเยื้อออกจากประวัติศาสตร์ได้ คุณจะได้รับความเร็วและความแม่นยำ ตราบใดที่คุณเลือกคำสั่งที่ถูกต้องจากประวัติของคุณ
คำสั่ง history
แสดงรายการคำสั่งก่อนหน้าของคุณในหน้าต่างเทอร์มินัล พวกเขามีหมายเลข หากต้องการใช้คำสั่งซ้ำ ให้ใส่เครื่องหมายอัศเจรีย์นำหน้าตัวเลข " !
“ และกดปุ่ม “Enter”
ประวัติศาสตร์
สมมติว่าเราได้โคลนที่เก็บ Git เข้าไปยุ่งกับมัน แล้วลบทิ้ง เราต้องโคลนมันอีกครั้ง เมื่อเลื่อนหน้าต่างเทอร์มินัล เราจะเห็นคำสั่ง git clone
ในไม่ช้า เราสามารถรันใหม่ได้โดยพิมพ์ว่า
!60
แต่ถ้าเราเพียงแต่มองที่หน้าจอและอ่านตัวเลขผิด เราอาจเลือกหมายเลขถัดไปด้วยความผิดพลาด:
!61
ที่เรียกใช้คำสั่งถัดไปในรายการ rm *
ซึ่งจะลบไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันของคุณ
คุณยังสามารถใช้ " !
” เครื่องหมายอัศเจรีย์พร้อมข้อความ คำสั่งการจับคู่แรกจะดำเนินการให้คุณ มันไม่แสดงขึ้นมา เพื่อให้คุณตรวจสอบได้ว่ามันคือสิ่งที่คุณกำลังคิดอยู่ มันถูกดำเนินการทันที
ลองนึกภาพสถานการณ์ที่คุณมีสคริปต์ชื่อ “restart.sh” สคริปต์นี้กำหนดค่าเริ่มต้นให้กับชุดของไฟล์กำหนดค่าสำหรับซอฟต์แวร์บางตัวที่คุณกำลังเขียน ในขณะที่คุณพัฒนาและทดสอบเป็นระยะ คุณต้องล้างกระดานชนวนให้สะอาด ดังนั้นคุณจึงเรียกสคริปต์ของคุณ
คำสั่งนี้ควรจะเพียงพอที่จะค้นหาและจับคู่คำสั่งในประวัติของคุณ และเพื่อดำเนินการ
!อีกครั้ง
แต่ถ้าคุณใช้คำสั่ง reboot
ตั้งแต่ครั้งล่าสุดที่คุณใช้สคริปต์ คำสั่ง reboot
จะถูกพบและดำเนินการทันที
บนคอมพิวเตอร์ที่บ้านแบบผู้ใช้รายเดียวของคุณ นั่นอาจเป็นเรื่องที่น่ารำคาญใจ บนเซิร์ฟเวอร์ที่ใช้ร่วมกันก็สร้างความรำคาญให้กับคนอื่นๆ ด้วยเช่นกัน
ที่เกี่ยวข้อง: วิธีใช้คำสั่ง history บน Linux
6. หายนะแห่งอวกาศ
ช่องว่างในชื่อไฟล์และเส้นทางไดเร็กทอรีอาจทำให้เกิดความเสียหายได้ นั่นเป็นเหตุผลที่ควรหลีกเลี่ยงหรือยกมาเสมอ
ปัญหาเกี่ยวกับช่องว่างสามารถหลีกเลี่ยงได้โดยใช้การเติมแท็บ กดปุ่ม "Tab" เมื่อคุณพิมพ์ชื่อไฟล์หรือพาธไดเร็กทอรี และเชลล์จะเติมพาธหรือชื่อไฟล์ให้สมบูรณ์โดยอัตโนมัติเท่าที่ทำได้ คุณอาจต้องพิมพ์ตัวอักษรเพื่อแยกความแตกต่างระหว่างไฟล์ที่คุณต้องการและไฟล์อื่นๆ ที่ใช้ชื่อเดียวกัน แต่การกดปุ่ม “Tab” อีกครั้งจะทำให้ชื่อไฟล์ที่เหลือสมบูรณ์สำหรับคุณ
การดำเนินการนี้จะช่วยประหยัดการกดแป้นพิมพ์ ป้องกันการเว้นวรรคจากการเล็ดลอดเนื่องจากการพิมพ์ผิด และหลีกเว้นการเว้นวรรคอย่างถูกต้องเพื่อไม่ให้เกิดปัญหา
สมมติว่าเรามีไดเร็กทอรี "Development" ที่มีไดเร็กทอรีอื่นอีก 2 ไดเร็กทอรี ได้แก่ "geocoder" และ "bin" นอกจากนี้ยังมีไดเร็กทอรี "bin" ภายในไดเร็กทอรี "geocoder"
หากต้องการลบไฟล์ในไดเร็กทอรี “geocoder/bin” และลบไดเร็กทอรี คุณต้องใช้คำสั่งนี้
rm -r geocoder/ถัง
ลองนึกภาพว่าคุณเพิ่มช่องว่างหลัง "geocoder/" โดยไม่ได้ตั้งใจ แบบนี้
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
rm -r geocoder/ ถังขยะ
บูม ไดเร็กทอรี "การพัฒนา" ว่างเปล่า ไดเร็กทอรี “Development/geocoder”, “Development/geocoder/bin” และ “Development/bin” ได้ถูกลบออกทั้งหมด
อย่าลืมว่าการทำแท็บให้เสร็จคือเพื่อนของคุณ
ที่เกี่ยวข้อง: ใช้การเสร็จสิ้นแท็บเพื่อพิมพ์คำสั่งได้เร็วขึ้นในระบบปฏิบัติการใด ๆ
7. การใช้ > แทน >>
การเปลี่ยนเส้นทางจะส่งผลลัพธ์ของกระบวนการไปยังไฟล์ เราใช้เครื่องหมายมากกว่า “ >
” เพื่อจับเอาต์พุตจากกระบวนการ หากมีไฟล์อยู่ ไฟล์นั้นจะถูกทำให้ว่างเปล่าก่อน
สมมติว่าเรากำลังตรวจสอบการรั่วไหลของหน่วยความจำ เรามีสคริปต์ชื่อ “memlog.sh” จะแสดงสถิติหน่วยความจำครั้งต่อวินาที เราจะเปลี่ยนเส้นทางไปยังไฟล์ชื่อ “memory.txt” เพื่อการวิเคราะห์ในภายหลัง
memlog.sh > memory.txt
head memory.txt
ในวันถัดไป เราต้องการดำเนินการตรวจสอบของเราต่อไป และเริ่มสคริปต์ใหม่ คราวนี้เราต้องใช้เครื่องหมายมากกว่า สอง ตัว “ >>
” เพื่อให้ข้อมูลใหม่ถูก ต่อท้าย ไฟล์
memlog.sh >> memory.txt
หากเราใช้เครื่องหมายมากกว่า “>” ตัวเดียว เราจะสูญเสียข้อมูลของเมื่อวานเนื่องจากไฟล์ว่างเปล่าก่อน
ที่เกี่ยวข้อง: stdin, stdout และ stderr บน Linux คืออะไร
8. การเปลี่ยนเส้นทางในทิศทางที่ไม่ถูกต้อง
การเปลี่ยนเส้นทางสามารถใช้เนื้อหาของไฟล์เป็นข้อมูลเข้าไปยังโปรแกรม
เรามีไฟล์ชื่อ “placenames.sql” ที่เราต้องการนำเข้าสู่ sqlite3
ไฟล์สคีมาอธิบายวิธีสร้างตารางฐานข้อมูลใหม่ นอกจากนี้ยังเก็บข้อมูลที่เราต้องการเก็บไว้ในฐานข้อมูล ด้วยขนาด 1.3GB และมากกว่า 11 ล้านบรรทัด จึงเป็นไฟล์ขนาดใหญ่
ls -hl placenames.sql
wc placenames.sql
เราสามารถสร้างฐานข้อมูลใหม่ชื่อ “places.sqlite3” ด้วยคำสั่งนี้
sqlite3 place.sqlite3 < placenames.sql
บ่อยกว่านั้น เมื่อเราเปลี่ยนเส้นทาง เราจะใช้อักขระ “>” คุณต้องตั้งสมาธิเพื่อหลีกเลี่ยงการพิมพ์ ">" จนเป็นนิสัย หากคุณทำเช่นนั้น เอาต์พุตที่ sqlite3
สร้างขึ้นจะถูกเขียนลงในไฟล์สคีมาของคุณ และลบล้างมัน
นี่เป็นคำสั่งที่ ไม่ถูกต้อง :
sqlite3places.sqlite3 > placenames.sql
ไฟล์สคีมาของเราถูกทำลาย ถูกเขียนทับด้วยข้อความต้อนรับจากเชลล์ sqlite3
cat placenames.sql
ลาก่อนข้อมูล 1.3GB
วิธีหลีกเลี่ยงการพิมพ์ผิดบรรทัดคำสั่ง
มีนิสัยที่ดีที่คุณสามารถนำมาใช้เพื่อช่วยหลีกเลี่ยงการทำผิดพลาดประเภทนี้
ใช้แท็บเสร็จสิ้นเท่าที่เป็นไปได้ คุณจะหลีกเลี่ยงปัญหาเกี่ยวกับช่องว่างในเส้นทางไดเร็กทอรีและชื่อไฟล์
สร้างนามแฝงที่สั้นและน่าจดจำของคุณเองสำหรับคำสั่งที่ยาวและซับซ้อนซึ่งคุณจำเป็นต้องใช้เป็นครั้งคราว ด้วยวิธีนี้ คุณจะไม่สับสนโดยใช้ตัวเลือกและพารามิเตอร์ที่ไม่ถูกต้อง
การพิสูจน์อักษรของคุณเองเป็นเรื่องยากอย่างฉาวโฉ่ แต่นั่นคือสิ่งที่คุณต้องทำในบรรทัดคำสั่ง อ่านสิ่งที่มีอยู่จริง อย่าเพียงแค่เหลือบมองและคิดว่ามันบอกว่าคุณตั้งใจจะพิมพ์อะไร มันพูดอะไรจริงๆ? เพราะนั่นคือสิ่งที่จะทำจริงๆ
ที่เกี่ยวข้อง: 8 คำสั่งร้ายแรงที่คุณไม่ควรเรียกใช้บน Linux