एक ही स्थान पर एक ही फ़ोल्डर और फ़ाइल नाम


15

उबंटू में मेरे पास "MyFile" नाम का फ़ोल्डर और उसी स्थान पर "MyFile" नाम का दस्तावेज़ क्यों नहीं हो सकता है? मुझे एक item already used in this locationत्रुटि मिलती है । क्या उबंटू / लिनक्स समान ऑब्जेक्ट्स (डिस्क को संकेत) के रूप में फ़ोल्डर्स और फ़ाइलों का इलाज करता है?


क्या इसका नाम ठीक उसी तरह रखा गया है? फ़ाइल फ़ाइलनाम में एक प्रमुख बिंदु है? उदाहरण के लिए .myfile,?
सर्गी कोलोडियाज़नी

मुझे भी यही समस्या थी। मैंने एक नाम दिया। कई विकल्प हैं: फ़ोल्डर को निचले मामले में बदलें या उदाहरण के लिए, एक्सटेंशन जोड़ें - myfile या My.File। या फ़ाइल को MyFile.txt का नाम बदलें। या तो नाम बदलने से काम चल जाएगा।
बक


मैं आपकी निराशा साझा करता हूं। मैं एक स्थैतिक वेबसाइट का निर्माण कर रहा हूं, और मेरे पास एक स्थानीय संस्करण नहीं हो सकता है जिसमें एक फ़ोल्डर है जिसे blogउसमें ब्लॉग पोस्ट के साथ कहा जाता है, और एक HTML पृष्ठ जिसे blogब्लॉग पोस्ट की सूची के साथ कहा जाता है ।
कोस्टा

जवाबों:


29

लिनक्स में, लगभग सब कुछ एक फाइल डिस्क्रिप्टर है। एक निर्देशिका एक विशेष प्रकार की फ़ाइल है जो उपयोगकर्ता के दृष्टिकोण से अन्य फ़ाइलों को पकड़ सकती है।

तो आप एक ही नाम के साथ, एक ही समय में एक ही निर्देशिका में दोनों नहीं हो सकते।

यदि आप कर सकते हैं, जीवन कोडर के लिए दुखी हो जाएगा। जब आपके पास कोई निर्देशिका बनाने और उसके अस्तित्व के लिए जाँच करना चाहता है तो आपके पास ".Dir" रिटर्न क्या होगा। क्या डायर ("/ होम / श्रोडिंगर्स / कैट") सही, गलत या दोनों लौटाता है? और अगर कोई किसी कोड में किसी फाइल की डिर खोलना चाहे तो आप क्या उम्मीद करेंगे?

और जब आप इसे कुछ खोलने के लिए कहते हैं तो सिस्टम को क्या करना चाहिए? मान लें कि आप फ़ाइल चाहते हैं? कि मुसीबत मंत्र ;)

वैसे: यह सभी ऑपरेटिंग सिस्टम के लिए सही है, न कि केवल लिनक्स पर। हालांकि डेस्कटॉप बिंदु से एक ऑपरेटिंग सिस्टम फ़ाइल या निर्देशिका में एक विशिष्ट पहचानकर्ता जोड़ सकता है और इसे लिस्टिंग से हटा सकता है। एक कमांड लाइन के दृष्टिकोण से हालांकि यह समस्याग्रस्त होगा।

विंडोज पर हमारे पास एक चीज है: हम केस-संवेदी नामों का उपयोग करते हैं। तो "मायइमिर" और "मायफाइल" अलग चीजें हैं।


2
कोई बात नहीं :) मैं इसे upvotes के लिए करता हूं ;-)
Rinzwind

1
@ रंजोव अपवोट्स के लिए? ठीक है, यहाँ एक और एक है
एबी

1
सब कुछ के लिनक्स सिद्धांत: सब कुछ फ़ाइल है!
बाइट कमांडर

एंथन और मैंने चार महीने पहले श्रोडिंगर की बिल्ली / दोनों का मजाक उड़ाया था । और, जैसा कि बाइट कमांडर कहते हैं, अभिव्यक्ति "सब कुछ एक फाइल है", न कि "सब कुछ एक फाइल डिस्क्रिप्टर है।"
जी-मैन का कहना है कि 'मोनिका'

1
Plan9 ( plan9.bell-labs.com/plan9 ) (यूनिक्स के मूल निर्माता) शायद एकमात्र ऐसा ओएस है जहां "सब कुछ एक फ़ाइल है"। अन्य सभी यूनिक्स और लिनक्स सिस्टम के लिए सही वाक्यांश "सब कुछ एक फाइल डिस्क्रिप्टर है"। "सब कुछ एक फाइल है" मेमोरी को छोड़कर, सिस्टम कॉल, नेटवर्क डिवाइस और फ़ाइलों के अलावा बहुत कुछ सब कुछ लेकिन उनके पास एक फाइल-डिस्क्रिप्टर है ;-) मामले में कोई व्यक्ति इस पर जाना चाहता है -> चैट: =)
रिनविंड

1

आपके पास एक ही स्थान पर एक ही नाम के दो संगठन नहीं हो सकते। क्या होगा जब आप फ़ाइल को बिल्ली या vi करना चाहते हैं? चुड़ैल इकाई ओएस चुना जाएगा? इसलिए भ्रम की संभावना के कारण आप एक ही स्थान पर एक फ़ाइल और फ़ोल्डर के लिए एक ही नाम नहीं रख पाएंगे। और जिस तरह से एक फ़ोल्डर एक फाइल है जो अन्य फ़ाइलों को होस्ट करता है।


3
आपका उत्तर ओपी के प्रश्न को वापस उसके चेहरे पर फेंक देता है ("आपके पास एक ही स्थान पर एक ही नाम के साथ दो इकाइयां नहीं हो सकती हैं", जिसे वह / वह पहले से ही स्पष्ट रूप से जानता है - प्रश्न "क्यों?") है, और फिर आप अलंकारिक प्रश्न पूछते हैं? , जैसे कि वे अचूक थे, और इससे प्रश्न हल हो गया। यदि मेरे पास एक फ़ाइल और एक ही नाम के साथ एक निर्देशिका है, और मैं catया viवह नाम है, तो, जाहिर है, ओएस को फ़ाइल का चयन करना चाहिए। वह काम क्यों नहीं कर सकता?
जी-मैन का कहना है मोनिका '

2
@ जी-मैन: वास्तव में viजो आमतौर vimपर उबंटू में होता है, वह एक निर्देशिका को खोलने और दिखाने के लिए खुश है और यहां तक ​​कि इसे संपादित भी करता है। इसे आज़माएं: vi .
arielf

1
@arielf: (1) मुझे लगता है कि कह रहे थे, अगर यह थे एक फ़ाइल के लिए संभव है और एक ही नाम के साथ एक उपनिर्देशिका में एक ही निर्देशिका में मौजूद है, तो जब इस तरह के रूप में एक (मुख्य रूप से) फ़ाइल उन्मुख आदेश catया viउस नाम को संबोधित है , तार्किक व्याख्या फ़ाइल के बजाय उपनिर्देशिका पर यह आह्वान करने के लिए है। तथ्य यह है कि एक (मुख्य रूप से) फ़ाइल-उन्मुख कमांड ( vi) एक (उप) निर्देशिका पर भी काम करता है, उस कथन के लिए अप्रासंगिक है।
जी-मैन 'मोनिका'

1
(२) आपका कथन एक लाल हेरिंग है। vimउपनिर्देशिका तर्कों का भोलेपन से व्यवहार नहीं कर रहा है; उसी कोड के साथ जिसके साथ यह फ़ाइलों को संभालता है।  vimलगता है (एक बहुत ही सरलीकृत स्तर पर) एक में दो कार्यक्रम: अगर यह एक फ़ाइल पर लागू किया जाता है, तो यह एक पाठ संपादक की तरह काम करता है, और यदि यह एक उपनिर्देशिका पर लागू होता है, तो यह एक फ़ाइल प्रबंधक की तरह कार्य करता है।
जी-मैन 'मोनिका'

1
@ जी-मैन: मैं केवल 1 टिप्पणी में आपके अंतिम दावे का उल्लेख कर रहा था: "फिर, जाहिर है, ओएस फ़ाइल का चयन करेगा।" - जो कि मुझ पर कूद गया था जैसा कि सच नहीं है vi। चीयर्स।
arielf

1

मुझे पता है कि यह एक पुराना विषय है, लेकिन मेरे पास बस यही मुद्दा था और मैं साझा करना चाहता था।
यहाँ मेरी कहानी है (धैर्य रखें, एक सुखद अंत है)।

पर्यावरण:
गेन्टू कर्नेल 4.12.5 64 चक्कर पर पुनरावर्ती

यह कैसे हो सकता है?
मैंने एक मशीन के साथ कई मशीन साझा की है जो सिंटक्टिंग का उपयोग करके साझा की गई है। अतीत में कुछ बिंदु पर, मैंने ".stfolder" नामक एक फ़ाइल को हटा दिया है और इसके बजाय उस नाम के साथ एक निर्देशिका बना सकता हूं। तो हो सकता है कि बग किसी अन्य मशीन पर इस ऑपरेशन को सिंक्रनाइज़ करने के कारण हो।

अब बग की जांच करते हैं: (मैं यहां रूट के रूप में काम कर रहा हूं )

ls -lahd .*
drwxrwx--- 5 stopi syncthing 656  3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi     240  3 sept. 18:21 ..
drw-rw---- 2 stopi syncthing  48  3 sept. 18:24 .stfolder
-rw-rw---- 1 stopi syncthing   0 29 août  12:51 .stfolder
-rw-rw---- 1 stopi syncthing  23 28 oct.   2017 .stignore

find -type f -name .stfolder
                              (<= no output there)

find -type f -name ".*"
./.stignore
./.stfolder

find -type f -name ".s*"
./.stignore

ऐसा लगता है कि फ़ाइल एक भूत है, हालांकि फ़ोल्डर सामान्य रूप से (खोज के साथ) जवाब दे रहा है

file .*
.:             directory
..:            directory
.stfolder:     directory
.stfolder:     empty
.stignore:     C source, ASCII text

file .s*
.stfolder:     directory
.stignore:     C source, ASCII text

मुझे पता है, बहुत अजीब ...

rm -r .stfolder

ls -lahd .*
drwxrwx--- 5 stopi syncthing 656  3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi     240  3 sept. 18:21 ..
-rw-rw---- 1 stopi syncthing   0 29 août  12:51 .stfolder
-rw-rw---- 1 stopi syncthing  23 28 oct.   2017 .stignore

rm .stfolder
rm: impossible de supprimer '.stfolder': Aucun fichier ou dossier de ce type

मैं उस भूत फ़ाइल को नहीं निकाल सकता!

लेकिन अंत में, मैंने इसे सफलतापूर्वक एक tmpfs माउंट पॉइंट पर ले जाकर हटा दिया है

mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/

मुझे कहना होगा कि बग अभी भी tmpfs पर मौजूद है, इसलिए reiserfs से संबंधित नहीं है:

cd /elsewhere

ls -lahd .*
-rw-rw----  1 stopi syncthing   0 29 août  12:51 .stfolder

ls -lahd .s*
ls: impossible d'accéder à '.s*': Aucun fichier ou dossier de ce type

जैसा कि आप इस बैश आउटपुट में देख सकते हैं, फ़ाइल एक ही समय में मौजूद है और मौजूद नहीं है। इस श्रोडिंगर बिल्ली की क्षमता के कारण, हम उसी नाम से एक फ़ोल्डर बना सकते हैं।
लेकिन रुकिए, और भी बहुत कुछ है (और आपको यह स्पष्ट होना चाहिए): हम इसी नाम से एक और फाइल भी बना सकते हैं।

touch .stfolder

ls -lahdQ
total 0
drwxrwxr-x  3 root   users  100  3 sept. 19:13 "."
drwxrwxrwt 18 root   root   440  3 sept. 17:35 ".."
-rw-r--r--  1 root   root     0  3 sept. 19:13 ".stfolder"
-rw-r-----  1 root   root     0  3 sept. 19:09 ".stfolder"

भूत की नकल की जा सकती है (इसलिए मैं बग को डुप्लिकेट कर सकता हूं), या चाउन, चामोद, आदि द्वारा हेरफेर किया जा सकता है। केवल प्रतिबंध यह है कि आप इसे नाम नहीं दे सकते हैं इसलिए आपको इसे एक खाली निर्देशिका में रखना होगा और "" का उपयोग करें। उन आदेशों के लिए तर्क ... लेकिन यह काम करता है!

इसकी प्रकृति की वजह से, यह फाइल भीख से खाली थी (यह सिंटिंग के लिए सिर्फ एक ध्वज है)।
इसलिए मैं उत्सुक था कि क्या मैं उस फ़ाइल में कुछ डेटा डाल सकता हूं।
और यहाँ, समाधान मेरे पास आया:

vi .*
" ============================================================================
" Netrw Directory Listing                                        (netrw v162)
"   /elsewhere
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:special
" ==============================================================================
../
./
.<200b>stfolder

हां, डॉट के ठीक बाद उस फाइल में एक अदृश्य पात्र है।
यह सब कुछ समझाता है।
धन्यवाद भगवान, मैंने "इको टेस्ट >>। *" और बिल्ली का उपयोग नहीं किया ...


U+200bएक "शून्य चौड़ाई स्थान" है , वैसे। मुझे यह किस्सा पसंद है, हालांकि मुझे डर है कि यह पूरी तरह से एक जवाब के रूप में नहीं गिना जा सकता है।
PerlDuck

0

/unix//a/238056/139805

वाह यह वाकई अजीब है लेकिन मैंने वही किया जो लेखक ने पूछा था। यह कैसे है, इसलिए यह एक वास्तविक उत्तर है: पी

charles@charles-MacBook ~ $ cd /usr/share
charles@charles-MacBook /usr/share $ ls -ld pix*
drwxr-xr-x 13 root root  4096 Oct 22 21:04 pixmaps
-rw-r--r--  1 root root 17626 Oct 22 21:07 pixmaps 
charles@charles-MacBook /usr/share $ mv pixmaps pixmaps
mv: cannot move ‘pixmaps’ to a subdirectory of itself, ‘pixmaps/pixmaps’
charles@charles-MacBook /usr/share $ ls -ld pix*
drwxr-xr-x 13 root root  4096 Oct 22 21:04 pixmaps
-rw-r--r--  1 root root 17626 Oct 22 21:07 pixmaps 
charles@charles-MacBook /usr/share $ file pix*
pixmaps:  directory
pixmaps : X pixmap image, ASCII text

इसके द्वारा किया गया था:

charles-MacBook MaSSH # ls
instMaSSH.sh  MaSSHandra  MaSSHandra.desktop  MaSSHandraMesh.xpm
MaSSHandra.xpm  mime-MaSSHandra.xml
charles-MacBook MaSSH # cat instMaSSH.sh 
cp -i MaSSHandra.desktop /usr/share/applications
cp -i MaSSHandra.xpm /usr/share/pixmaps 
cp -i MaSSHandraMesh.xpm /usr/share/pixmaps
xdg-icon-resource install --context mimetypes --size 48 /usr/share/pixmaps/MaSSHandra.xpm application-x-MaSSHandra
xdg-icon-resource install --context mimetypes --size 48 /usr/share/pixmaps/MaSSHandraMesh.xpm application-x-MaSSHandraMesh
setcap cap_net_raw+ep /opt/MaSSHandra/bin/MaSSHandra
charles-MacBook MaSSH # ./instMaSSH.sh 
cp: overwrite ‘/usr/share/applications/MaSSHandra.desktop’? y
xdg-icon-resource: file '/usr/share/pixmaps/MaSSHandra.xpm' does not exist
xdg-icon-resource: file '/usr/share/pixmaps/MaSSHandraMesh.xpm' does not exist

whoah वैकल्पिक एक ही नाम के साथ दो फ़ाइलों का जवाब है, एक निर्देशिका भी नहीं है और एक फाइल अब क्या चल रहा है ??? _

charles-MacBook share # ls -ld pi*
drwxr-xr-x 13 root root  4096 Oct 22 21:08 pixmaps
-rw-r--r--  1 root root 17626 Oct 22 21:09 pixmaps 
charles-MacBook share # mv pixmaps /tmp
charles-MacBook share # mv pixmaps  /tmp/pixmaps/
charles-MacBook share # ls -ld pix*
-rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps 
charles-MacBook share # ls -li pix*
1849351 -rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
1841386 -rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps 
charles-MacBook share # file pix*
pixmaps:  X pixmap image, ASCII text
pixmaps : X pixmap image, ASCII text
charles-MacBook share # ls -liF pix*
1849351 -rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
1841386 -rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps 

पूरी तरह से अजीब व्यवहार

charles-MacBook MaSSH # ls -l /usr/share/pixmaps
pixmaps   pixmaps   
charles-MacBook MaSSH # rm -i /usr/share/pixmaps                                                                 
rm: remove regular file ‘/usr/share/pixmaps’? y
charles-MacBook MaSSH # ls -l /usr/share/pixmaps  
-rw-r--r-- 1 root root 17626 Oct 22 21:26 /usr/share/pixmaps 
charles-MacBook MaSSH # rm -i /usr/share/pixmaps
rm: cannot remove ‘/usr/share/pixmaps’: No such file or directory
charles-MacBook MaSSH # ls -l /usr/share/pixmaps  
-rw-r--r-- 1 root root 17626 Oct 22 21:26 /usr/share/pixmaps 
charles-MacBook MaSSH # cd /usr/share
charles-MacBook share # rm pixmaps  
charles-MacBook share # 

2
दो नामों में से एक के अंत में अंतरिक्ष का कोई रूप है। आप "फ़ाइल" आउटपुट में बता सकते हैं।
डस्कंडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.