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



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

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



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



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

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



ชื่อไฟล์ cat.txt

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

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

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



ชื่อไฟล์ที่มี Spaces ใน Bash

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

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

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

    ซีดีเดสก์ท็อป

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

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

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

    หรือ

    cat 'file name.txt'

    การใช้ใบเสนอราคาเพื่อหลีกเลี่ยงการเว้นวรรคในข้อผิดพลาดของชื่อ

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

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

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

    บันทึก : ใส่ชื่อสถานที่ของคุณแทนเดสก์ท็อป

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

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

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

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

ความแตกต่างระหว่างเครื่องหมายคำพูดและอักขระหลีก

2 นาทีอ่าน