Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash

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

วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash

เหตุใด Bash จึงไม่รู้จักชื่อไฟล์ที่มีช่องว่าง

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

cat file name.txt
วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash

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

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

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

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

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

  1. กด Ctrl + Alt . ค้างไว้ ปุ่มและกด T เพื่อเปิด เทอร์มินัล .
  2. ตอนนี้เปลี่ยนไดเร็กทอรีไปยังตำแหน่งของไฟล์
    (คุณยังสามารถ ลาก และ ดรอป ไฟล์ในเทอร์มินัลหลังจากคำสั่ง 'cat ' ซึ่งจะใส่ใบเสนอราคาบนเส้นทางไฟล์/ไดเรกทอรีโดยอัตโนมัติ)

    cd Desktop
    วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash

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

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

    หรือ

    cat "file name.txt"
    วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash
  4. ใบเสนอราคาเดี่ยวและคู่จะส่งผลให้เหมือนกัน ในบางกรณี คุณต้องลองทั้งสองอย่างและดูว่าอันไหนใช้ได้ผล

วิธีที่ 2:การใช้อักขระ Backlash Escape

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

    หมายเหตุ :ใส่ชื่อตำแหน่งของคุณแทนเดสก์ท็อป

  3. พิมพ์คำสั่งแล้วใช้ escape ตัวอักษรที่ใดก็ได้ที่มีช่องว่างในชื่อ:
    cat file\ name.txt
    วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash

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

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

วิธีจัดการกับการส่งชื่อไฟล์ด้วย Spaces ใน Bash