ทำไมชื่อไฟล์ที่ขึ้นต้นด้วยจุดถูกซ่อนอยู่? ฉันสามารถซ่อนไฟล์โดยไม่ใช้จุดเป็นตัวอักษรตัวแรกได้หรือไม่?


15

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


หรือ "ทำไมชื่อไฟล์ที่ซ่อนทั้งหมดเริ่มต้นด้วยจุด" ถ้าคุณต้องการ
JMCF125

2
ใช่มันเป็นแบบแผนทำไมถึงเลือกผู้รู้ไปถามผู้บุกเบิก UNIX มันเป็นแบบแผนเก่า
terdon

4
อ่านบทความ Wikipedia ที่เกี่ยวข้องเกี่ยวกับไฟล์ที่ซ่อนอยู่และ plus.google.com/101960720994009339267/posts/R58WgWwNNjjpสำหรับแง่มุมประวัติ มันไม่สามารถเปลี่ยนแปลงได้
jofel

ฉันคิดว่า Linux สามารถปรับแต่งได้อย่างเต็มที่ ...
JMCF125

1
@ JMCF125 จริง ๆ แล้วความคิดเห็นออกมาประชดประชันมากกว่าที่ฉันตั้งใจขอโทษด้วย คุณกำลังถามจริง: 'ฉันสามารถซ่อนไฟล์โดยไม่เปลี่ยนชื่อไฟล์ได้หรือไม่' - หากเป็นกรณีนี้คุณควรแก้ไขให้เป็นคำถามของคุณ
evilsoup

คำตอบ:


26

ตามที่วิกิพีเดีย ,

ความคิดที่ว่าชื่อไฟล์นำหน้าด้วย ควรถูกซ่อนไว้เป็นผลมาจากข้อผิดพลาดของซอฟต์แวร์ในวันแรก ๆ ของ Unix เมื่อรายการพิเศษ.และ..ไดเร็กทอรีถูกเพิ่มในระบบไฟล์จะมีการตัดสินใจว่าคำสั่ง ls ไม่ควรแสดง แต่โปรแกรมที่ถูกเขียนผิดพลาดที่จะไม่รวมไฟล์ใด ๆ ที่มีชื่อเริ่มต้นด้วย.ตัวอักษรมากกว่าชื่อที่แน่นอนหรือ...

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

นอกจากนี้ยังมีความจริงที่ว่าการใช้พฤติกรรมที่แตกต่างกันจะสร้างการกระจายตัวของจำนวนมากยิ่งขึ้นไปยังโลก * ซึ่งเป็นสิ่งสุดท้ายที่ทุกคนต้องการ

มีวิธีอื่นสำหรับการซ่อนไฟล์ที่ไม่เกี่ยวข้องกับการเปลี่ยนชื่อไฟล์แต่ใช้งานได้กับตัวจัดการไฟล์ GUI เท่านั้น (และมันไม่เป็นที่นิยมในหมู่เหล่านั้น - ลินุกซ์รายใหญ่ใช้มัน แต่ฉันไม่คิดว่า Finder Finder ของ OSX ทำ ตัวจัดการไฟล์ลินุกซ์เฉพาะกลุ่มมีแนวโน้มที่จะรองรับพฤติกรรมนี้น้อยลง): คุณสามารถสร้างไฟล์ชื่อ.hiddenและใส่ชื่อไฟล์ที่คุณต้องการซ่อนไว้ภายในไฟล์หนึ่งไฟล์ต่อหนึ่งบรรทัด lsและเปลือก globs จะไม่เคารพสิ่งนี้ แต่อาจเป็นประโยชน์กับคุณ


การซ่อนตัวนั้นไม่สามารถใช้กับ Unity ได้ แต่เมื่อคุณตอบคำถามทุกข้อโดยตรงฉันจะทำเครื่องหมายว่านี่เป็นคำตอบที่ยอมรับได้ (แม้ว่าฉันจะตอบคำถามทั้งคู่)
JMCF125

3
หน้า Wikipedia ไม่มีข้อมูลเกี่ยวกับสิ่งนี้อีกต่อไป อย่างไรก็ตาม Rob Pike ทำงานกับ UNIX ที่ Bell Labs และโพสต์สั้น ๆ เกี่ยวกับหัวข้อ: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander

" OS X " ไม่ใช่ "OSX"
Peter Mortensen

14

ไฟล์ที่ขึ้นต้นด้วยจุดจะถูกละเว้นโดยค่าเริ่มต้นโดยคำสั่ง "ls" ซึ่งมีผลเหมือนกันกับไฟล์ "ซ่อน" มากขึ้นหรือน้อยลง แต่ไม่เหมือนกัน (คำสั่งอื่นอาจเลือกที่จะทำแบบเดียวกันหรือไม่ก็ได้) ไฟล์ที่ขึ้นต้นด้วยจุดไม่ใช่ "ซ่อน" เพราะ "ซ่อน" ไม่ได้เป็นหนึ่งในคุณสมบัติ ไม่เหมือนกับใน DOS / Windows "hidden" ไม่ใช่แอตทริบิวต์ใน Unix มีคุณสมบัติมากมายใน Unix ("man chattr" จะบอกคุณทั้งหมด) แต่การซ่อนไม่ใช่หนึ่งในนั้น

เหตุผลที่ dot-files ถูกละเว้นโดย "ls" นั้นค่อนข้างตลก / น่าอาย มันไม่ได้ตัดสินใจการออกแบบ แต่ผลมาจากข้อผิดพลาดของซอฟต์แวร์ในวันแรกของยูนิกซ์ เมื่อพิเศษแล้ว และ .. รายการไดเร็กทอรีถูกเพิ่มไปยังระบบไฟล์มันถูกตัดสินใจแล้วว่าคำสั่ง ls ไม่ควรแสดงมันเพราะพวกเขาได้รับในทาง อย่างไรก็ตามโปรแกรมดังกล่าวถูกเขียนขึ้นอย่างเร่งรีบเพื่อยกเว้นไฟล์ที่มีชื่อขึ้นต้นด้วย ตัวละครมากกว่าชื่อที่แน่นอน "." หรือ "..". และมันได้สร้างแบบอย่างที่ถูกติดตามมาตั้งแต่นั้นมาใน Unix ขันพอเมื่อพวก Unix ย้ายไปสร้างแผน 9 พวกเขาไม่ได้ใส่จุดไฟล์ในไว้ในวัตถุประสงค์


ฉันลองman chattrแล้วแม้ว่าฉันคิดว่าบางทีฉันอาจต้องมีแพ็คเกจหรือโปรแกรมเฉพาะเพื่อให้สามารถซ่อนไฟล์อื่นได้
JMCF125

0

ไม่ว่าคุณจะสามารถซ่อนไฟล์ได้หรือไม่และขึ้นอยู่กับเงื่อนไขใดนั้นขึ้นอยู่กับระบบไฟล์ที่คุณใช้และไดรเวอร์ ระบบไฟล์ Unix แบบดั้งเดิมไม่มีคุณลักษณะ "ซ่อน" สำหรับไฟล์

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

(นี่เป็นวิธีที่รูทคิทสามารถซ่อนไฟล์ได้: พวกมันเชื่อมโยงกับการเรียกระบบที่สร้างรายชื่อไดเรกทอรีและกรองไฟล์ที่พวกเขาต้องการซ่อน)

ยกตัวอย่างเช่นในระบบไฟล์คลัสเตอร์ออราเคิลมกอชไดเรกทอรี<filesystem mountpoint>/.ACFS/ถูกซ่อนไว้อย่างแท้จริง: ls -aมันก็จะไม่ได้รับการจดทะเบียนที่ทุกคนไม่ได้มี แต่ถ้าคุณรู้ว่ามันอยู่ตรงนั้นคุณสามารถเข้าถึงได้เลย

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

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