ส่วนขยายใดที่จะใช้สำหรับไฟล์ข้อความ (Unix / Linux)


20

ฉันสังเกตเห็นว่าฉันสามารถอ่านไฟล์ข้อความโดยไม่มีนามสกุล.txtได้ มาทำไม ฉันควรบันทึกไฟล์เหล่านี้โดยมีหรือไม่มี.txtนามสกุลหรือไม่

นอกจากนี้.iniไฟล์เกี่ยวกับอะไร? ฉันมักจะใช้พวกเขาเช่นนี้config.iniฉันควรลบส่วนขยายที่นี่หรือไม่

แหล่งข้อมูลทั่วไปเกี่ยวกับวิธีที่ Linux จัดการกับส่วนขยายไฟล์จะมีประโยชน์

คำตอบ:


37

UNIX / Linux ไม่มี DOS / CP / M ที่สืบทอดกันมาตั้งแต่ต้นที่ Windows ใช้ ดังนั้นส่วนขยายจึงมีความสำคัญน้อยกว่าสำหรับยูทิลิตี้และเครื่องมือของ UNIX ส่วนใหญ่

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

แต่ความสะดวกดังกล่าวมักเป็นสิ่งสำคัญ หากconfig.iniอยู่ในรูปแบบ ".ini" มาตรฐานของ Microsoft ฉันจะปล่อยให้ส่วนขยายนั้นยืน ไฟล์ข้อความธรรมดาแบบเก่ามักไม่มีส่วนขยายใน Linux แต่ไฟล์นี้ไม่สามารถใช้ได้กับทุกไฟล์โปรแกรม โปรแกรมเมอร์มักจะตัดสินใจว่า

ฉันคิดว่า ".txt" มีประโยชน์ภายใต้ Linux หากคุณต้องการเน้นว่าไม่ใช่ไฟล์กำหนดค่าหรือเอกสารอื่นที่เครื่องอ่านได้ อย่างไรก็ตามในการแจกแจงแหล่งที่มาของการประชุมคือการตั้งชื่อไฟล์ดังกล่าวตัวพิมพ์ใหญ่ทั้งหมดโดยไม่มีนามสกุล (เช่น README, INSTALL, COPYING และอื่น ๆ )

มีมาตรฐานและแบบแผน แต่ไม่มีอะไรหยุดคุณจากการตั้งชื่ออะไรก็ได้ตามที่คุณต้องการเว้นแต่คุณจะแบ่งปันสิ่งต่าง ๆ กับผู้อื่น

ใน Windows การตั้งชื่อไฟล์.exeบ่งบอกถึงเชลล์ (โดยปกติexplorer.exe) ว่าเป็นไฟล์ที่ปฏิบัติการได้ UNIX สร้างความรู้นี้ในสิทธิ์ของระบบไฟล์ หากตั้งค่าxบิตที่เหมาะสม(ดูman chmod) มันจะถูกจดจำว่าสามารถใช้งานได้โดยเชลล์และฟังก์ชั่นเคอร์เนล (ฉันเชื่อ) นอกเหนือจากนี้ Linux ไม่สนใจเชลล์ส่วนใหญ่จะไม่สนใจและโปรแกรมส่วนใหญ่มองหาไฟล์เพื่อค้นหาว่าเป็น "ประเภท"

แน่นอนมีคำสั่งที่ดีfileที่สามารถวิเคราะห์ไฟล์และบอกคุณว่ามันคืออะไรกับระดับของความมั่นใจ ฉันเชื่อว่ามันไม่สามารถจับคู่ข้อมูลในไฟล์กับชนิดใด ๆ ที่รู้จักและถ้ามันมีเฉพาะอักขระ ASCII / Unicode ที่พิมพ์ได้ก็จะถือว่าไฟล์ข้อความของมัน


@Bruce Ediger ด้านล่างถูกต้องอย่างแน่นอน ไม่มีสิ่งใดในระดับเคอร์เนลหรือระบบไฟล์เช่น Linux เองบังคับใช้หรือดูแลว่าเนื้อหาของไฟล์จำเป็นต้องตรงกับชื่อของมันหรือโปรแกรมที่ควรจะเข้าใจ นี่ไม่ได้หมายความว่าเป็นไปไม่ได้ที่จะสร้างเชลล์หรือยูทิลิตีตัวเรียกใช้งานเพื่อทำสิ่งต่าง ๆ ตามชื่อไฟล์


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

9
คุณควรเน้นว่าชื่อไฟล์ Linux ไม่มี "ส่วนขยาย" - ส่วน ".txt" ของชื่อไฟล์ที่มีชื่อเป็นเพียงซับสตริง คุณควรเน้นด้วยว่าการจัดระเบียบไฟล์ภายใน (สตริงที่ลงท้ายด้วย LF, สตริงที่ลงท้ายด้วย LF-CR, เรคคอร์ดขนาดคงที่ ฯลฯ ) ไม่เกี่ยวข้องกับชื่อจาง ๆ และไม่เป็น "แอพ" ที่รู้เกี่ยวกับไฟล์ที่เกี่ยวข้อง .
Bruce Ediger

2
ฉันคิดว่าเฉพาะรายการไดเรกทอรี FAT16 8.3 ภายใต้ DOS มีฟิลด์ 3 ไบต์แยกต่างหากสำหรับส่วนขยาย FAT32 เก็บข้อมูล 8.3 สำหรับการทำงานร่วมกัน แต่จริง "ชื่อแฟ้มยาว" เป็นสตริงที่ไม่มีข้อมูลที่แยกต่างหากขยายแยกกับรายการไดเรกทอรีหลาย (กfandecheng.com/personal/interests/ewindows/nuhelp/lfnspec.htm )
LawrenceC

23

ไม่เหมือนกับ Windows ในระบบ UNIX ไฟล์จะไม่ถูกกำหนดโดยส่วนขยาย นามสกุลไฟล์เป็นและเป็นเพียงตัวบ่งชี้ภาพสำหรับมนุษย์ คุณสามารถตั้งชื่อ JPEG foo.c และเปิดใน Gimp ข้อแตกต่างจาก Windows ก็คือในระบบ UNIX คุณต้องใช้ชื่อไฟล์ทั้งหมดในขณะที่ Windows มักจะดูแลให้คุณ (เช่นทำงานexplorerกับ vs. explorer.exe) บน UNIX foo.shจะต้องเรียกว่าเป็นไม่เพียงfoo.shfoo

โดยการประชุมคนมักจะใช้ชุดส่วนขยายทั่วไป การปฏิบัตินี้ในขณะที่ไม่จำเป็นอาจเป็นประโยชน์ต่อมนุษยชาติโดยรวม


7
+1 สำหรับThis practice…is probably beneficial for humanity at large
Ulrich Dangel

น่าเสียดายที่ความหลากหลายของบรรจุภัณฑ์ทำให้ mime จัดการอย่างหนักในบางครั้ง (เช่นใน KDE จากประสบการณ์ของฉัน) แต่ฉันไม่รู้ว่าทำไมโปรแกรมไม่ถอยกลับไปตรวจสอบไบต์วิเศษ
lynxlynxlynx

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

1
@bahamat ไม่ใช่ไบต์ แต่มีส่วนหนึ่งของไฟล์ที่เรียกว่า " หมายเลขมายากล " ที่ควรจะกำหนดสิ่งที่ไฟล์มี มันคือสิ่งที่fileคำสั่งมอง ( #!เป็นหมายเลขมายากลสำหรับสคริปต์ sh เป็นต้น)
Izkata

1
@lzkata ถูกต้องอย่างที่ฉันบอกว่า: "รู้จักไฟล์ชนิดที่มีเอกสารและโครงสร้างที่ดีพอที่จะตรวจจับได้อย่างน่าเชื่อถือด้วยความมั่นใจระดับสูง"
บาฮามาต

7

โดยทั่วไปแล้วฉันพบว่าการจัดประชุมแบบเข้มงวดอธิบายและตั้งชื่อจะมีประโยชน์มาก คุณไม่ต้องการส่วนขยายใน Unix แต่ฉันต้องการเก็บไว้ด้วยสองเหตุผล:

1) หากไฟล์นั้นจะถูกอ่านโดยเครื่อง windows จะเป็นการเปิดได้ง่ายกว่าการพยายามหา "open with ... "

2) ส่วนขยายช่วยให้คุณผู้ใช้ทราบว่าไฟล์กำลังทำอะไร ในแล็บของเรา: .txt = ไฟล์ข้อความ. sgi = irix ที่คอมไพล์ไบนารี. ลินุกซ์ = ลินุกซ์ที่คอมไพล์แล้ว

หากคุณต้องใช้เครื่องยูนิกซ์รุ่นเก่า (เรายังคงใช้ IRIX) โปรดจำไว้ว่า carriage return นั้นแตกต่างกันในเครื่อง * nix และโปรแกรมอาจไม่พอใจถ้าคุณลองเปิดไฟล์ที่มี windows carriage return


6

คุณอาจต้องการที่จะอ่านข้อมูลเบื้องต้นเกี่ยวกับระบบปฏิบัติการ Unix


3

มีคำตอบที่ดีหลายอย่าง ฉันต้องการจะตอบคำถามเดิมเพิ่มเติม: "แหล่งข้อมูลทั่วไปเกี่ยวกับวิธีที่ Linux จัดการกับส่วนขยายไฟล์จะมีประโยชน์"

เป็นไปได้ที่จะลงทะเบียนส่วนขยายเพื่อให้ Linux เปิดส่วนขยายบางอย่างกับโปรแกรมบางโปรแกรมเสมอ สถานที่นี้จะเรียกว่าbinfmt

binfmt_misc เป็นความสามารถของเคอร์เนล Linux ที่อนุญาตให้รู้จักรูปแบบไฟล์ที่สามารถเรียกใช้งานได้ตามอำเภอใจและส่งผ่านไปยังแอปพลิเคชันพื้นที่ผู้ใช้บางอย่างเช่นอีมูเลเตอร์และเครื่องเสมือน รูปแบบที่ปฏิบัติการได้ถูกลงทะเบียนผ่านอินเตอร์เฟสของระบบไฟล์วัตถุประสงค์พิเศษ (คล้ายกับ / proc) การแจกแจงแบบอิงเดเบียนมอบฟังก์ชันการทำงานผ่านแพ็คเกจเสริม binfmt-support

แต่ละรูปแบบมีรายการไฟล์ที่เกี่ยวข้องในไดเร็กทอรี / proc / sys / fs / binfmt_misc ซึ่งสามารถอ่านได้เพื่อรับข้อมูลเกี่ยวกับรูปแบบไฟล์ที่กำหนด


-2

.txt สามารถเปิดได้ผ่านแอพพลิเคชั่นต่าง ๆ แต่สิ่งสำคัญคือมันถูกใช้เพื่อจัดประเภทไฟล์ในบางประเภท คุณสามารถดูว่าเราบันทึกไฟล์เดียวกันโดยใช้. html ไฟล์พยายามเปิดใน internet explorer หรือไม่ แอปพลิเคชั่นนั้นถูกสร้างขึ้นเพื่อรองรับไฟล์ประเภทนั้น ๆ หากคุณใช้. html ด้านบนคอมไพเลอร์จะพยายามค้นหาแอตทริบิวต์ html ที่อยู่ในนั้นและแสดงผลลัพธ์ตามนั้น เหมือนกับส่วนขยายอื่น ๆ ไฟล์. ini สามารถอ่านเป็นข้อความได้ แต่ส่วนขยายจัดเป็นไฟล์การกำหนดค่าดังนั้นคอมไพเลอร์จึงถือว่าเป็นไฟล์กำหนดค่าไม่ใช่ไฟล์ข้อความธรรมดาเนื่องจากไฟล์ข้อความเป็นเพียงชุดของบันทึกและไม่มีฟังก์ชั่นเฉพาะเป็นของ ini.hence คุณไม่ต้องการเปลี่ยนส่วนขยายของ ini เป็นข้อความ


6
อาจเป็นกรณีบน Windows แต่ (ตามที่อธิบายไว้ในคำตอบอื่น ๆ ) สิ่งนี้ไม่เกี่ยวข้องในระบบปฏิบัติการ UN * X-ish
Piskvor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.