test
ผมอยากจะสร้างไฟล์ชื่อ บังเอิญผมทำงานแทนmkdir test
touch test
เป็นไปได้ไหมที่จะแปลงtest
สารบบในไฟล์ชื่อtest
?
สิ่งที่เกี่ยวกับการแปลงไฟล์ชื่อtest
เป็นไดเรกทอรีที่มีชื่อเดียวกัน?
test
ผมอยากจะสร้างไฟล์ชื่อ บังเอิญผมทำงานแทนmkdir test
touch test
เป็นไปได้ไหมที่จะแปลงtest
สารบบในไฟล์ชื่อtest
?
สิ่งที่เกี่ยวกับการแปลงไฟล์ชื่อtest
เป็นไดเรกทอรีที่มีชื่อเดียวกัน?
คำตอบ:
สิ่งนี้เป็นไปไม่ได้สำหรับ Unix หรือ Linux ใด ๆ ที่ฉันเคยสัมผัส
ภายใต้ Unixes ที่เก่ากว่าไดเรกทอรีคือไฟล์ที่ทำเครื่องหมายเป็นพิเศษ แต่ยังคงไฟล์ คุณเคยสามารถอ่านไดเรกทอรีด้วยcat
ภายใต้ SunOS เป็นต้น ระบบไฟล์ที่ทันสมัยจำนวนมากอาจมีไดเรกทอรีเป็นต้นไม้ B + หรือโครงสร้างข้อมูลบนดิสก์อื่น ๆ ดังนั้นการเปลี่ยนไฟล์ให้เป็นไดเรกทอรีหรือในทางกลับกันจะต้องมีการลบและการสร้างใหม่ด้วยชื่อเดียวกัน
ไม่มีคำสั่งดังกล่าวเพราะจะไม่มีจุดในนั้น คำถามของคุณเป็นเหมือนขอวิธีแปลงกล่องเป็นสี่เหลี่ยมแบน คุณจะทำอะไรกับสิ่งต่าง ๆ ในกล่อง (สารบบ)? สี่เหลี่ยมจะตรงกับกล่องที่มาจากไหน
ไฟล์และไดเรกทอรีให้บริการฟังก์ชั่นที่แตกต่างอย่างสิ้นเชิง แม้ว่าไดเรกทอรีจะเป็นไฟล์ในระบบ * nix แต่จะใช้กับ internals ของระบบเท่านั้นและไม่ใช่กับสิ่งที่คุณผู้ใช้เห็น ดังนั้นการแปลงไฟล์เป็นไดเรกทอรีหรือในทางกลับกันมักจะเกี่ยวข้องกับการลบไฟล์และสร้างไดเรกทอรี สิ่งที่ดีที่สุดที่คุณสามารถคาดหวังได้ก็คือจะใช้ไอโหนดเดียวกัน แต่อีกครั้งไม่ใช่จุดที่มาก
สร้างฟังก์ชั่นเพื่อทำสิ่งที่คุณต้องการ ( bash
หรือ Bourne / POSIX อื่น ๆ เช่นเชลล์ที่สมมติ)
$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$
ฉันจงใจใช้rmdir
ซึ่งจะล้มเหลวหากadir
ไม่ได้เป็นไดเรกทอรีหรือไม่ว่างเปล่า (ไม่มี-f
การบังคับ) touch
จะทำงานก็ต่อเมื่อrmdir
สำเร็จ
คุณสามารถใส่นิยามฟังก์ชันในไฟล์การปรับแต่งเชลล์ของคุณ ( .bashrc
สำหรับbash
)
--
ทำหน้าที่อะไร?
--
จุดสิ้นสุดของธงดังนั้นrmdir
และรู้อะไรที่ผ่านมามันเป็นชื่อไฟล์แม้ว่าจะเริ่มต้นด้วยtouch
-
สำหรับผู้ที่สงสัยว่าทำไมคุณต้องการทำเช่นนี้ทำตามหัวข้อนี้:
เห็นได้ชัดว่าบั๊กในเฟิร์มแวร์พลิกบิตในรายการไดเรกทอรีสำหรับไฟล์ทำให้ระบบปฏิบัติการคิดว่าเป็นโฟลเดอร์แทนที่จะเป็นไฟล์
ในขณะที่ฉันไม่มีเราเตอร์ Linksys ที่เป็นปัญหามีบางอย่างเปลี่ยนไฟล์. jpg ทั้งหมดของฉันไปเป็นโฟลเดอร์ว่าง หากมีอีกทางที่จะพลิกบิต (หรืออะไรก็ตาม) ที่ระบุว่ารายการไดเรกทอรี NTFS เป็นโฟลเดอร์เทียบกับไฟล์ฉันต้องการทราบเกี่ยวกับมัน
หนึ่งในวิธีแก้ปัญหาในเธรดที่มีความยาว 2 ปีกล่าวว่าหากฮาร์ดไดรฟ์ที่มีโฟลเดอร์ที่ใช้เป็นไฟล์เชื่อมต่อกับ Mac ที่ใช้ระบบปฏิบัติการ OS / X Mac จะเห็นพวกเขาเป็นไฟล์อีกครั้งและพวกเขา สามารถคัดลอกไปยังโฟลเดอร์บน Mac ฉันไม่มี Mac ที่จะลองดูดังนั้นถ้าใครรู้วิธีพลิกบิต ...
ก่อนอื่นให้เข้าถึงเทอร์มินัลแล้วดำเนินการls -al file
โดยไฟล์เป็นไฟล์ที่คุณต้องการแปลงกลับไปเป็นโฟลเดอร์ ACTUAL หากมีไฟล์และไดเรกทอรีย่อยอยู่ในรายการนั่นหมายความว่า "ไฟล์" ของคุณเคยเป็นโฟลเดอร์ที่มีเนื้อหาจริงและคุณสามารถดำเนินการต่อไปได้:
ดำเนินการ:
sudo chmod 700 /
หรือ
sudo chmod 700 file
รีสตาร์ทระบบและเรียกคืนการเข้าถึงเทอร์มินัลและรัน:
sudo chmod 744 /
หรือ
sudo chmod 744 file
โปรดจำไว้ว่า: "ไฟล์" ควรถูกแทนที่ด้วยไฟล์ที่คุณต้องการแปลงกลับไปเป็นโฟลเดอร์ ACTUAL
นี่เป็นเพียงวิธีการหนึ่งในการแก้ไขปัญหานี้ แต่สร้างความผิดปกติเกี่ยวกับการอนุญาตซึ่งคุณสามารถใช้fsck -f
เพื่อแก้ไข (ในขณะที่ยกเลิกการติดตั้งแน่นอน) หรือตั้งค่าการอนุญาตใหม่ด้วยตนเองตามต้องการ
อีกครั้งนี่เป็นเพียงวิธีที่พิสูจน์แล้วว่าหลีกเลี่ยงการลบไฟล์ที่เคยเป็นโฟลเดอร์ที่ไม่ว่างเปล่ามาก่อน
rm -f test && touch test
ยกเว้นสิ่งนี้ฉันไม่รู้จริงๆ