มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่ชื่อโฟลเดอร์จะมีจุด (.) แล้วชื่อไฟล์ที่มีหลายจุดล่ะ


28

บางครั้งการใช้ชื่อโฟลเดอร์ให้มีจุด (.) ที่เหมาะสม ตัวอย่างเช่นคุณกำลังเก็บข้อมูลสำหรับการทดสอบที่ดำเนินการที่ L = 0.5 ดังนั้นชื่อโฟลเดอร์อาจจะ:

experiment_L0.5

ปัญหาที่คล้ายกันอาจเกิดขึ้นสำหรับชื่อไฟล์ ตัวอย่างเช่น:

file_L0.5.txt

ทำงานในอูบุนตูนี่เป็นการฝึกฝนที่ไม่ดีใช่ไหม ถ้าแชร์ไดเรกทอรีเหล่านี้กับผู้ใช้ Windows ล่ะ

ขอบคุณ!


5
หากจุดเป็นตัวอักษรตัวแรกโฟลเดอร์จะถูกซ่อน นอกจากนั้นฉันไม่คิดว่ามันสำคัญ
user3121023

คำตอบ:


37

เท่าที่ฉันรู้ไม่มีปัญหากับการตั้งชื่อโฟลเดอร์และไฟล์ที่มีจุดเดียวหรือหลายจุด

Ubuntu โดยทั่วไปจะไม่ใช้จุดและตัวอักษรสามตัว (เช่น. txt) เพื่อระบุประเภทของไฟล์ ดังนั้นสิ่งนี้จึงไม่มีความหมายพิเศษในบริบทของอูบุนตู สิ่งนี้มีประโยชน์เมื่อแชร์ไฟล์กับ Windows Ubuntu ใช้Magic Numbersในช่วงแรก ๆ ของไฟล์เพื่อระบุประเภทของไฟล์ อย่างไรก็ตาม Nautilus ละเว้นหมายเลขเวทย์มนตร์หากส่วนขยายจุดและสามอักขระพร้อมใช้งานเพื่อระบุประเภทไฟล์ การตั้งค่านี้สามารถเปลี่ยนแปลงได้ ดูที่ บังคับให้หอยโข่งเพื่อเพิกเฉยต่อส่วนขยาย

ใน Ubuntu การเริ่มต้นไฟล์หรือชื่อโฟลเดอร์ด้วยจุดเช่น.experiment_L0.5ทำให้ไฟล์หรือโฟลเดอร์ถูกซ่อน คุณสามารถสลับการแสดงไฟล์ที่ซ่อนได้โดยกดCtrl+ Hใน Nautilus ใน Windows ชื่อไฟล์เริ่มต้นด้วย ไม่ได้ซ่อน ดังนั้นหากคุณถ่ายโอนไฟล์ที่ซ่อนชื่อ.experiment_L0.5ในระบบ Windows มันจะปรากฏชัดแจ้ง

ใน Ubuntu ชื่อไฟล์สามารถลงท้ายด้วยจุดได้เนื่องจากไม่มีความหมายพิเศษวางไว้ที่ท้าย อย่างไรก็ตามใน Windows จุดแบ่งชื่อไฟล์และนามสกุลและชื่อไฟล์ที่ลงท้ายด้วยจุด แต่ไม่อนุญาตนามสกุล เมื่อฉันพยายามสร้างไฟล์ดังกล่าวใน Windows ฉันได้รับไฟล์ที่มีชื่อไม่มีจุดไม่มีส่วนขยาย

การอ้างอิง: Wiki บนชื่อไฟล์

หวังว่านี่จะช่วยได้


4
สิ่งนี้ถูกต้อง หากคุณแชร์ไฟล์กับ windows คุณต้องหลีกเลี่ยงเครื่องหมายโคลอน:โคล, เถื่อนในชื่อไฟล์ windows ซึ่งจะสร้างปัญหา ( และมันจะ ) ดูที่นี่ด้วย
Rmano

ขอบคุณ @Rmano ฉันได้เพิ่มลิงค์ไปยังวิกิในคำตอบของฉัน
user68186

1
เมื่อพูดถึงความเข้ากันได้ฉันคิดว่าfname.ไม่อนุญาตให้ใช้จุดต่อท้าย (เหมือน) ใน Windows
Rmano

ขอบคุณอีกครั้ง @Rmano ฉันรันการทดสอบอย่างรวดเร็วสองสามครั้งและไม่สามารถสร้างไฟล์ที่ชื่อtest.ใน Windows ฉันจะอัปเดตคำตอบของฉัน
user68186

1
เพื่อเพิ่มความคิดเห็นของ Rmano - นี่อาจเป็นปัญหาใน Ubuntu หากคุณมีไดรฟ์ Windows ติดตั้งผ่านทาง VirtualBox การพยายาม mkdir ชื่อที่มีจุดต่อท้ายล้มเหลวด้วย 'ข้อผิดพลาดของโปรโตคอล'
bvanlew

11

คำตอบสั้น ๆ

  • Windows ไม่อนุญาตให้ใช้อักขระต่อไปนี้: <>:"/\|?*( แหล่งที่มา )
  • อักขระอื่น ๆ ที่ท้อแท้คือ: space และ dot .( source )
    • เครื่องมือบรรทัดคำสั่งนั้นยากต่อการใช้งานเมื่อคุณมีช่องว่างในชื่อ (ยากกว่านั้นเป็นไปไม่ได้)
    • มีการใช้จุดใน RegEx (เช่นเมื่อคุณต้องการใช้grep) จุดนำทำให้ไฟล์ถูกซ่อนโดยการประชุมใน Linux ใน Windows มีการใช้จุดในส่วนขยายของไฟล์ซึ่งใช้สำหรับการตรวจจับประเภทไฟล์
  • ของ Windows ยังจะไม่อนุญาตให้ชื่อไฟล์CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, และLPT8 LPT9(ที่มา )
  • อักขระเท่านั้นที่ไม่ได้รับอนุญาตในระบบไฟล์ Unix ที่ฉันรู้จักคือ/และ null (null null \0)
  • ดูเพิ่มเติมที่: ขีด จำกัด ของระบบไฟล์ (ฉันไม่รู้ว่าคุณต้องการใช้งาน Windows รุ่นไหน)

คำตอบที่ยาว

พื้นหลังทางเทคนิค: ระบบไฟล์

Ubuntu ใช้ประโยชน์จากext4ระบบไฟล์ ระบบไฟล์ติดตามว่าไฟล์ถูกเก็บไว้ในที่เก็บข้อมูลพื้นฐาน (ดิสก์หรือ SSD หรืออะไรก็ตาม) การอนุญาตในรูปแบบของเจ้าของ / กลุ่ม / อื่น ๆ สามารถอ่าน / เขียน / ดำเนินการประทับเวลาชื่อ

ระบบไฟล์จัดโครงสร้างหน่วยความจำที่มีอยู่ บล็อกแรกเรียกว่า "superblock" บล็อกนี้ใช้เพื่อเมานต์ระบบไฟล์ เท่าที่ฉันรู้ทุกระบบไฟล์ที่ทันสมัยแบ่งเป็นพื้นที่ในบล็อก ฉันคิดว่า (และฉันก็ไม่แน่ใจเหมือนกัน) ว่าระบบไฟล์ส่วนใหญ่มีขนาดบล็อกคงที่แม้ว่าขนาดบล็อกนั้นสามารถกำหนดค่าได้เมื่อสร้างระบบไฟล์ ext4 (และ ext2 และ ext3) ใช้ประโยชน์จากสิ่งที่เรียกว่า "inodes" สำหรับไฟล์และไดเรกทอรี inodes เหล่านั้นมีตัวชี้ไปยังบล็อกอื่น ๆ (ซึ่งอาจเป็น inodes หรือเป็น "data block") และ inode "แรก" ของไฟล์ที่มีข้อมูลทั้งหมดที่ฉันกล่าวถึงข้างต้น

ข้อมูลอื่นหนึ่งคือ "ประเภท" ของไฟล์ "Type" สามารถ:

  • ไฟล์ปกติ
  • ไดเรกทอรี
  • ไฟล์อุปกรณ์ (อุปกรณ์บล็อกหรือตัวละคร)
  • ...

ที่จริงแล้วคุณยังสามารถเปิดไดเรกทอรีด้วยเครื่องมือแก้ไข:

vim /home

เป็นไดเรกทอรีไม่ได้มีเส้นทางแบบเต็ม /แต่เพียงชื่อของเนื้อหาที่ผมไม่เห็นเหตุผลว่าทำไมไฟล์ไม่สามารถมี ฉันคิดว่ามันอาจจะสะดวก (ไม่มีใครรู้ว่าทำไม/ไม่ได้รับอนุญาต?)

อย่างไรก็ตามสิ่งต่าง ๆ สำหรับระบบไฟล์อื่น FAT16 และ FAT32 ใช้ชื่อ "ตารางการจัดสรรไฟล์" ซึ่งหมายความว่ามีตารางที่มีไฟล์ทั้งหมดที่เก็บไว้ในไฟล์ของคุณซึ่ง "คลัสเตอร์" จะเริ่มและที่กลุ่มที่พวกเขาสิ้นสุดเป็นรายการเชื่อมโยงโดยลำพัง

สิ่งสำคัญที่ฉันต้องการจะบอกคุณก็คืออักขระที่ไม่อนุญาตอาจขึ้นอยู่กับระบบไฟล์

พื้นหลังทางเทคนิค: ประเภทไฟล์

  • Windows ใช้นามสกุลไฟล์เพื่อตรวจจับประเภทไฟล์
  • Linux ใช้ "Magic Bytes" เพื่อตรวจหาประเภทไฟล์ Bytes Magicเป็นส่วนหนึ่งของเนื้อหาของไฟล์และจึงเป็นอิสระจากชื่ออย่างสมบูรณ์ ไบต์เหล่านี้เป็นส่วนหนึ่งของข้อมูลจำเพาะของประเภทไฟล์ (ดูข้อมูลจำเพาะ pngเป็นตัวอย่าง) นอกจากนี้ยังใช้ส่วนขยายชื่อไฟล์สำหรับไฟล์ที่มีคาถาไบต์เดียวกันเช่น.txtหรือ.html(ทั้งคู่เป็นไฟล์ข้อความ)

ที่เกี่ยวข้อง


การเดาของคุณเกี่ยวกับวิธีการจัดเก็บชื่อไฟล์ของ FAT นั้นค่อนข้างไม่ถูกต้อง: en.wikipedia.org/wiki/FAT32#File_Allocation_Table - "FAT" จริงเก็บรายชื่อของกลุ่มในขณะที่ไดเรกทอรีเก็บรายการชื่อไฟล์ด้วยตัวชี้ไปยังกลุ่มแรกของ ไฟล์คล้ายกับที่คุณอธิบาย ext4 :) นอกจากนี้.txtและ.htmlไฟล์ไม่แน่นอนมีที่แตกต่างกัน "ค่าวิเศษ" - ลองเปลี่ยนชื่อไฟล์ html ให้และทำงานtest.txt file test.txtมันไม่ได้มีความเกี่ยวข้องกับคำถามเดิมมากนัก แต่ก็ยังคง :)
Sergey

1
ขอบคุณฉันได้ลบส่วนที่ไม่ถูกต้องเกี่ยวกับ FAT เกี่ยวกับค่าเวทย์มนตร์และfile: fileไม่เพียง แต่ใช้ค่าเวทย์มนตร์เพื่อกำหนดประเภทของไฟล์ ทุกไฟล์ HTML ที่ถูกต้องเป็นไฟล์ข้อความ (ในแง่ที่ว่ามันมีตัวอักษรที่อ่านได้) แต่ไม่ใช่ทุกไฟล์ข้อความที่ถูกต้องเป็นไฟล์ HTML ที่ถูกต้อง (ในแง่ที่ว่ามันตรวจสอบกับ W3C ตรวจสอบ) ประเภทของไฟล์ค่อนข้างมาก (html, xml, csv, js, php, c, h, cpp, ... ) ที่จริงแล้วเป็นไฟล์ข้อความ ไฟล์ไบนารีเท่านั้นที่มีเมจิกไบต์ที่อยู่ในตำแหน่งที่กำหนดไว้อย่างดี ไฟล์ทั้งหมดที่ฉันตั้งชื่อข้างต้นสามารถมีช่องว่างตามอำเภอใจก่อนเนื้อหา
Martin Thoma

5

เพื่อความสมบูรณ์ของชื่อที่ประกอบด้วยเพียงจุดเดียว.หรือสองจุด..เป็นพิเศษ:

  • . อ้างถึงไดเรกทอรีปัจจุบัน
  • .. อ้างถึงไดเรกทอรีหลัก

รายการเหล่านี้จะเพิ่มโดยอัตโนมัติและอยู่เสมอดังนั้นคุณจึงไม่สามารถมีไฟล์ชื่อหรือ...


จุดดี. สิ่งนี้ใช้ได้กับทั้ง Windows และ Ubuntu
user68186

1

สิ่งนี้ไม่สำคัญไม่ใช่ใน linux หรือใน windows

เป็นเรื่องธรรมดาที่จะมีโฟลเดอร์ชื่อ "program.d" - เพื่อบันทึกการกำหนดค่าและรายการต่าง ๆ สำหรับโปรแกรม (ดูในไดเรกทอรี / etc)


0

การตั้งชื่อไฟล์นั้นยืดหยุ่นมากใน Unix, ระบบไฟล์ Linux ชื่อไฟล์เดียวที่คุณไม่สามารถมีได้คือตัวละครnullหรือ/ชื่อที่มีชื่อนั้น แต่มันจะเป็นการปฏิบัติที่ดีที่จะหลีกเลี่ยงการใช้ตัวอักษรที่ถูกห้าม / สงวนไว้ในระบบอื่นจากมุมมองชื่อพอร์ตแบบพกพา เช่นคุณไม่ควรใช้" * : < > ? \ / |อักขระใด ๆ(จำกัด โดย NTFS) ในชื่อไฟล์ของคุณหากคุณต้องการเข้าถึงไฟล์ในระบบ Windows

และเกี่ยวกับการใช้.(จุด) ในชื่อไฟล์ฉันคิดว่ามันน่าจะดีเพราะมันดูเหมือนจะไม่เป็นตัวอักษร"สงวน"ในระบบใด ๆ (ยกเว้น OpenVMS, MS-DOS และ Windows ที่ใช้ใน อนุญาตให้ใช้ชื่อไฟล์ / ไดเรกทอรี แต่การเกิดขึ้นครั้งสุดท้ายจะถูกตีความว่าเป็นตัวแยกส่วนขยายใน VMS, MS-DOS และ Windows) ตามที่กล่าวไว้ในลิงก์ Wikipedia ซึ่งมีดังนี้:

ในระบบอื่นมักจะถือว่าเป็นส่วนหนึ่งของชื่อไฟล์และอาจอนุญาตมากกว่าหนึ่งช่วงเวลา ใน Unix ช่วงเวลานำหมายถึงไฟล์หรือโฟลเดอร์ถูกซ่อนอยู่ตามปกติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.