วิธีจัดการกับชื่อไฟล์ที่มีช่องว่างใน Bash

Linux มีเชลล์เริ่มต้น Bash (หรือที่เรียกว่า Bourne shell อีกครั้ง) เพื่อดำเนินการคำสั่งสำหรับระบบ โปรแกรมเมอร์ส่วนใหญ่ชอบทุบตีมากกว่า cmd เพราะความยืดหยุ่นและล่ามบรรทัดคำสั่งที่มีประสิทธิภาพที่ทุบตีให้ อย่างไรก็ตามผู้ใช้ส่วนใหญ่จะยังคงมีปัญหาในขณะที่พยายามจัดการผ่านชื่อไฟล์ด้วยช่องว่างในทุบตี นี่เป็นเพราะช่องว่างไม่ถือว่าเหมือนกันในทุบตีตามที่อยู่ในชื่อไฟล์

ไฟล์ที่มีช่องว่างในชื่อ

ทำไม Bash ไม่รู้จักชื่อไฟล์พร้อมช่องว่าง?

ใน Bash หากคุณพิมพ์หลายคำโดยไม่มี escape character (\) หรือการ อ้างอิง มันจะพิจารณาคำทั้งหมดเป็นอาร์กิวเมนต์ ไม่ว่าคุณจะเปลี่ยนไดเรกทอรีด้วย ' cd ' หรือพยายามเข้าถึงไฟล์ด้วยคำสั่ง ' cat ' สิ่งที่คุณเขียนหลังจากใช้สิ่งเหล่านี้จะถือเป็นข้อโต้แย้ง ตัวอย่างเช่น:

 cat file name.txt 

การรันคำสั่งโดยไม่ใช้อักขระ escape หรือเครื่องหมายคำพูด

หมายเหตุ : ชื่อไฟล์ของคุณสามารถเป็นอะไรก็ได้ แต่สำหรับบทความนี้เราจะใช้“ file name.txt ” เป็นตัวอย่าง

ต่อไปนี้เป็นคำสั่ง ' cat ' จะพิจารณา ไฟล์ และ ชื่อ เป็นอาร์กิวเมนต์สองตัวแทนที่จะเป็นอาร์กิวเมนต์เดียว อย่างไรก็ตามหากคุณใช้อักขระตัวหลีกเลี่ยงหรือเครื่องหมายคำพูดแล้วเชลล์ทุบตีจะพิจารณาว่าเป็นอาร์กิวเมนต์เดี่ยวซึ่งจะเป็น“ ไฟล์ชื่อ . txt

ชื่อไฟล์ที่มีช่องว่างใน Bash

มีวิธีการบางอย่างที่สามารถใช้สำหรับช่องว่างในชื่อ แนวปฏิบัติที่เหมาะสมที่สุดคือการหลีกเลี่ยงช่องว่างสำหรับชื่อไฟล์ในอนาคต วิธีการง่ายๆคือเปลี่ยนชื่อไฟล์ที่คุณพยายามเข้าถึงและลบช่องว่าง วิธีการอื่นบางวิธีใช้การเสนอราคาเดียวหรือสองครั้งในชื่อไฟล์ที่มีช่องว่างหรือใช้สัญลักษณ์ยกเว้น (\) ก่อนช่องว่าง เราจะให้วิธีการพร้อมตัวอย่างที่ใช้เพื่อแสดงวิธีการทำงาน

วิธีที่ 1: ใช้ใบเสนอราคาเดียวและสองครั้ง

  1. กด ปุ่ม Ctrl + Alt ค้างแล้วกด T เพื่อเปิด Terminal
  2. ตอนนี้เปลี่ยนไดเรกทอรีเป็นที่ตั้งของไฟล์

    (คุณยังสามารถ ลาก และ วาง ไฟล์ในเทอร์มินัลหลังจากคำสั่ง ' cat ' ซึ่งจะใส่ใบเสนอราคาลงในพา ธ / ไดเรกทอรีของไฟล์โดยอัตโนมัติ)

     ซีดีตั้งโต๊ะ 

    การเปลี่ยนไดเรกทอรี

    หมายเหตุ : เดสก์ท็อปสามารถเปลี่ยนเป็นตำแหน่งที่คุณพยายามเข้าถึงได้

  3. พิมพ์คำสั่งต่อไปนี้เพื่ออ่านไฟล์ข้อความที่มีช่องว่างในชื่อ:
     cat 'file name.txt' 

    หรือ

     cat "file name.txt" 

    ใช้การเสนอราคาเพื่อหลีกเลี่ยงช่องว่างในข้อผิดพลาดของชื่อ
  4. ใบเสนอราคาเดียวและสองครั้งจะส่งผลเหมือนกัน ในบางกรณีคุณต้องลองทั้งคู่และดูว่าอันไหนใช้ได้

วิธีที่ 2: การใช้ Backlash Escape Character

  1. กด ปุ่ม Ctrl + Alt ค้างแล้วกด T เพื่อเปิด Terminal
  2. เปลี่ยนไดเร็กทอรีเป็นตำแหน่งที่ไฟล์อยู่โดยใช้คำสั่งต่อไปนี้
     ซีดีตั้งโต๊ะ 

    หมายเหตุ : ใส่ชื่อสถานที่ของคุณไว้ที่ Desktop

  3. ตอนนี้พิมพ์คำสั่งและใช้อักขระ escape ที่ใดก็ได้ที่มีช่องว่างในชื่อ:
     ไฟล์ cat \ name.txt 

    การใช้อักขระ escape เพื่อหลีกเลี่ยงข้อผิดพลาดของช่องว่าง

โบนัส: การใช้ใบเสนอราคาและ Escape

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

ความแตกต่างระหว่างใบเสนอราคาและตัวหนี

บทความที่น่าสนใจ