เช่นเดียวกับระบบปฏิบัติการส่วนใหญ่ Linux รองรับชื่อไฟล์ที่มีช่องว่างอยู่ในนั้น แต่การใช้ชื่อไฟล์เหล่านี้บนบรรทัดคำสั่งนั้นไม่ตรงไปตรงมาเสมอไป นี่คือหลายวิธีที่คุณสามารถจัดการชื่อไฟล์ที่มีช่องว่าง
ชื่อไฟล์ที่ต่ำต้อย
เหตุใดช่องว่างในชื่อไฟล์ Linux จึงเป็นความเจ็บปวด
วิธีการอ้างและหลบหนีช่องว่าง
วิธีแก้ไขปัญหาพื้นที่ที่แหล่งกำเนิด
การขยายแท็บทำให้การจัดการกับช่องว่างเป็นเรื่องง่าย
วิธีใช้ชื่อไฟล์ที่มีช่องว่างในสคริปต์ทุบตี
เว้นระยะห่าง แต่ไม่สม่ำเสมอ
ชื่อไฟล์ที่ต่ำต้อย
ทุกอย่างที่เก็บไว้ในคอมพิวเตอร์ของคุณ ฮาร์ดไดรฟ์ ต้องมีชื่อ หากไม่มีชื่อจะไม่มีไฟล์ แอปพลิเคชันและ daemons ทั้งหมดที่เปิดตัวเมื่อคอมพิวเตอร์ของคุณบูทและซอฟต์แวร์ทั้งหมดที่คุณใช้จะต้องมีการระบุและเก็บไว้ในระบบไฟล์ บัตรประจำตัวนั้นเป็นชื่อของไฟล์ '
สิ่งเดียวกันนี้ใช้กับไฟล์ที่คุณสร้างหรือติดตั้ง เอกสารรูปภาพและเพลงทั้งหมดของคุณต้องการชื่อไฟล์ หากไม่มีชื่อไฟล์ไม่มีสินทรัพย์ดิจิทัลของคุณอยู่ เนื่องจากชื่อไฟล์มีความสำคัญมาก Linux จึงพยายามอย่างหนักที่จะกำหนดกฎบางอย่างเกี่ยวกับองค์ประกอบของพวกเขาเท่าที่จะทำได้
บน Linux ชื่อไฟล์อาจมีตัวละครใด ๆ นอกเหนือจาก Slash ไปข้างหน้า”
/
” และตัวละครโมฆะ
0x00
. อักขระ NULL ใช้เพื่อทำเครื่องหมายจุดสิ้นสุดของสตริงดังนั้นจึงไม่สามารถแสดงได้ในสตริงเองหรือ Linux จะตัดชื่อไฟล์ที่ตำแหน่งของอักขระ NULL “
/
” Forward Slash ถูกใช้เป็นตัวคั่นในเส้นทางไดเรกทอรี
ชื่อไฟล์เป็นตัวพิมพ์ใหญ่ และสามารถยาวถึง 255 ไบต์ รวมถึงตัวละครว่าง เส้นทางไดเรกทอรีสามารถมีความยาวสูงถึง 4096 ไบต์รวมถึงตัวละครว่าง โปรดทราบว่านี่คือความยาวของพวกเขา ไบต์ ซึ่งอาจไม่เท่ากับโดยตรงกับ ตัวละคร . ตัวอย่างเช่นอักขระ Unicode 16 บิตใช้สองไบต์แต่ละตัว
ผู้ที่ชื่นชอบการคำนวณย้อนยุคและผู้ที่มีความทรงจำยาวจะรู้ว่าในยุคแรก ๆ ของคอมพิวเตอร์ส่วนบุคคล ระบบปฏิบัติการดิสก์ของ Microsoft , dos, เป็นตัวพิมพ์ใหญ่และมีขีด จำกัด ชื่อไฟล์แปดตัวอักษรรวมทั้งสามตัวอักษร ส่วนขยาย .
คุณต้องมีความคิดและบางครั้งก็สร้างสรรค์เมื่อคุณตั้งชื่อไฟล์ จากการเปรียบเทียบเสรีภาพที่เรามีในวันนี้หมายความว่าเราสามารถตั้งชื่อไฟล์ได้ทุกอย่างที่เราต้องการด้วยความคิดเล็ก ๆ น้อย ๆ นอกเหนือจากคำอธิบายที่เราสร้างขึ้นสำหรับไฟล์นั้น
แต่ด้วยชื่อไฟล์สิ่งที่ทำให้เรามักจะไม่ใช่ตัวละครที่เราพิมพ์มันเป็นช่องว่างระหว่างพวกเขา
เหตุใดช่องว่างในชื่อไฟล์ Linux จึงเป็นความเจ็บปวด
เชลล์เช่น Bash จะตีความสตริงคำที่คั่นด้วยอวกาศเป็นอาร์กิวเมนต์คำสั่งของแต่ละบุคคลไม่ใช่อาร์กิวเมนต์เดียว นี่คือตัวอย่างโดยใช้
สัมผัส
ถึง
สร้างไฟล์ใหม่
เรียกว่า "file.txt ใหม่ของฉัน"
อย่างที่เราเห็น
LS
แสดงให้เราเห็นว่ามีสามไฟล์ที่สร้างขึ้นหนึ่งชื่อเรียกว่า "ของฉัน", อีกอันที่เรียกว่า "ใหม่" และอีกหนึ่งเรียกว่า "file.txt"
โปรดทราบว่า
สัมผัส
ไม่ได้บ่นหรือโยนข้อผิดพลาด มันดำเนินการในสิ่งที่คิดว่าเรากำลังขอให้ทำ ดังนั้นมันจึงส่งคืนเราไปยังบรรทัดคำสั่งอย่างเงียบ ๆ หากเราไม่ได้มีแรงบันดาลใจในการตรวจสอบเราจะไม่ทราบว่าสิ่งต่าง ๆ ไม่ได้หายไปตามแผน
ในการสร้างไฟล์ที่เราต้องการเราต้องอ้างหรือหลบหนี
วิธีการอ้างและหลบหนีช่องว่าง
หากเราอ้างชื่อไฟล์ทั้งหมด
สัมผัส
รู้ว่าจำเป็นต้องปฏิบัติต่อข้อความที่ยกมาเป็นอาร์กิวเมนต์เดียว
เวลานี้เราได้รับไฟล์เดียวที่เราคาดหวัง
เราสามารถรับผลลัพธ์เดียวกันได้หากเราใช้อักขระ backslash”
\
” เพื่อหลบหนีช่องว่าง โดย“ หลบหนี” ช่องว่างที่พวกเขาไม่ได้รับการปฏิบัติเหมือนเป็นตัวละครพิเศษนั่นคือตัวแยกอาร์กิวเมนต์ - พวกเขาถือว่าเป็นพื้นที่เก่า ๆ ธรรมดา
มันใช้งานได้ แต่การหลบหนีพื้นที่ทำให้การพิมพ์ชื่อไฟล์ช้าลงและผิดพลาดได้ง่าย สิ่งต่าง ๆ อาจน่าเกลียดถ้าคุณมีชื่อไดเรกทอรีที่มีช่องว่างอยู่ในนั้นเช่นกัน
คำสั่งนั้นคัดลอกไฟล์ข้อความเดียวจากไดเรกทอรีที่เรียกว่า "Dir One" ไปยังไดเรกทอรีที่เรียกว่า "Dir Two" และบันทึกสำเนาเป็นไฟล์ BAK และเป็นตัวอย่างที่ค่อนข้างง่าย
วิธีแก้ไขปัญหาพื้นที่ที่แหล่งกำเนิด
หากพวกเขาเป็นไฟล์ของคุณเองคุณสามารถตัดสินใจนโยบายที่จะไม่ใช้พื้นที่และสร้าง (หรือ การเปลี่ยนชื่อกลุ่ม ) ชื่อไฟล์เช่นนี้
เป็นที่ยอมรับว่าเป็นวิธีแก้ปัญหาที่แข็งแกร่ง แต่ก็ยังน่าเกลียด มีตัวเลือกที่ดีกว่าเช่นการใช้ขีด "
-
” หรือเน้นย้ำ”
_
” เพื่อแยกคำพูดของคุณ
ทั้งสองอย่างนี้จะก้าวเท้าหลีกเลี่ยงปัญหาและสามารถอ่านได้ หากคุณไม่ต้องการเพิ่มอักขระพิเศษลงในชื่อไฟล์ของคุณคุณสามารถใช้งานได้ อูฐ เพื่อให้ชื่อไฟล์ของคุณอ่านได้เช่นนี้:
การขยายแท็บทำให้การจัดการกับช่องว่างเป็นเรื่องง่าย
แน่นอนว่าการใช้การตั้งชื่อการประชุมและการยึดติดกับมันจะช่วยได้ก็ต่อเมื่อคุณจัดการกับไฟล์ของคุณเอง ไฟล์ที่มาจากที่อื่นไม่น่าจะเป็นไปตามอนุสัญญาการตั้งชื่อของคุณ
คุณสามารถใช้การขยายแท็บเพื่อช่วยให้คุณ“ กรอก” ชื่อไฟล์สำหรับเราได้อย่างถูกต้อง มาบอกว่าเราต้องการ
ลบ
ไฟล์ BAK ที่เราสร้างขึ้นใน“ Dir Two” โดยใช้
RM
.
เราเริ่มต้นด้วยการพิมพ์“ RM DIR” เพราะเราใช้ไฟล์
RM
คำสั่งและเรารู้ว่าชื่อไดเรกทอรีเริ่มต้นด้วย“ dir”
การกดปุ่ม“ แท็บ” ทำให้ทุบตีสแกนสำหรับการจับคู่ในไดเรกทอรีปัจจุบัน
มีสองไดเรกทอรีที่เริ่มต้นด้วย“ dir” และในทั้งสองกรณีตัวละครถัดไปคือพื้นที่ ดังนั้น Bash จึงเพิ่มตัวละคร backslash”
\
” และพื้นที่ ทุบตีรอให้เราจัดหาตัวละครต่อไป มันต้องการอักขระถัดไปเพื่อแยกความแตกต่างระหว่างการจับคู่ที่เป็นไปได้ทั้งสองในไดเรกทอรีนี้
เราจะพิมพ์“ T” สำหรับ“ สอง” จากนั้นกด“ แท็บ” อีกครั้ง
Bash เสร็จสิ้นชื่อไดเรกทอรีสำหรับเราและรอให้เราพิมพ์จุดเริ่มต้นของชื่อไฟล์
เรามีไฟล์เดียวในไดเรกทอรีนี้ดังนั้นการพิมพ์ตัวอักษรตัวแรกของชื่อไฟล์“ M” ก็เพียงพอที่จะแจ้งให้ Bash รู้ว่าไฟล์ที่เราต้องการใช้ การพิมพ์“ M” และกด“ แท็บ” เสร็จสิ้นชื่อไฟล์สำหรับเราและ“ Enter” จะดำเนินการคำสั่งทั้งหมด
การขยายแท็บทำให้ง่ายต่อการให้แน่ใจว่าคุณได้รับชื่อไฟล์ที่ถูกต้องและยังช่วยเพิ่มความเร็วในการนำทางและการพิมพ์บนบรรทัดคำสั่งโดยทั่วไป
ที่เกี่ยวข้อง: ใช้แท็บเสร็จสมบูรณ์เพื่อพิมพ์คำสั่งเร็วขึ้นในระบบปฏิบัติการใด ๆ
วิธีใช้ชื่อไฟล์ที่มีช่องว่างในสคริปต์ทุบตี
ไม่น่าแปลกใจเลย สคริปต์ มีปัญหาเดียวกันกับช่องว่างในชื่อไฟล์เช่นเดียวกับบรรทัดคำสั่ง หากคุณผ่านชื่อไฟล์เป็นตัวแปรให้แน่ใจว่าคุณอ้างชื่อตัวแปร
สคริปต์เล็ก ๆ นี้ตรวจสอบไดเรกทอรีปัจจุบันสำหรับไฟล์ที่ตรงกับรูปแบบไฟล์“*.txt” และจัดเก็บไว้ในตัวแปรที่เรียกว่า
file_list
.
อัน
สำหรับ
วง
ใช้เพื่อดำเนินการง่ายๆในแต่ละครั้ง
คัดลอกข้อความนี้ลงในตัวแก้ไขและบันทึกลงในไฟล์ที่เรียกว่า "files.sh." จากนั้นใช้
ที่
chmod
สั่งการ
เพื่อให้สามารถทำงานได้
เรามีไฟล์บางไฟล์ในไดเรกทอรีนี้ หนึ่งมีชื่อไฟล์ง่าย ๆ และอีกสองใช้ขีดล่าง "
_
” หรือประ”
-
” แทนที่จะเป็นช่องว่าง นี่คือสิ่งที่เราเห็นเมื่อเราเรียกใช้สคริปต์
ดูเหมือนว่าจะทำงานได้ดี แต่ลองเปลี่ยนไฟล์ในไดเรกทอรีสำหรับไฟล์ที่มีช่องว่างในชื่อของพวกเขา
ทุกคำในแต่ละชื่อไฟล์ได้รับการจัดการราวกับว่ามันเป็นชื่อไฟล์ด้วยตัวเองและสคริปต์จึงล้มเหลว แต่สิ่งที่เราต้องทำเพื่อให้สคริปต์จัดการช่องว่างในชื่อไฟล์คือการเสนอราคา
$ ไฟล์
ตัวแปรภายใน
สำหรับ
วนรอบ
โปรดทราบว่าเครื่องหมายดอลลาร์“
$
” อยู่ในคำพูด เราทำการเปลี่ยนแปลงนั้นและบันทึกไว้ในไฟล์สคริปต์“ files.sh” เวลานี้ชื่อไฟล์ได้รับการจัดการอย่างถูกต้อง
ที่เกี่ยวข้อง: วิธีประมวลผลไฟล์ทีละบรรทัดในสคริปต์ Linux Bash
เว้นระยะห่าง แต่ไม่สม่ำเสมอ
การหลีกเลี่ยงช่องว่างในชื่อไฟล์ของคุณเองจะพาคุณไปไกล เป็นสิ่งที่หลีกเลี่ยงไม่ได้ที่คุณจะพบไฟล์จากแหล่งข้อมูลอื่นที่มีชื่อที่มีช่องว่าง โชคดีที่หากคุณต้องการจัดการไฟล์เหล่านั้นในบรรทัดคำสั่งหรือในสคริปต์มีวิธีง่าย ๆ ในการทำเช่นนั้น