Perché non posso avere una cartella e un file con lo stesso nome?


21

Non ho mai avuto questo problema prima, ma per qualche motivo, non riesco a rinominare la mia cartella in packages/.

Questa è la struttura:

root
  -  packages_old/
  -  packages

Quando provo a rinominare la cartella con Thunar, ricevo un messaggio di errore che dice che il file esiste già. Lo stesso con mv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

Perché non riesco a rinominare il mio file e la mia cartella per avere lo stesso nome:

root
  -  packages/
  -  packages

Io giuro che ho fatto prima.


19
La tua memoria probabilmente non è così infallibile come pensi. Nella piattaforma unix "tutto è un file". Non è possibile avere un file e una cartella con lo stesso nome perché le directory sono solo un tipo speciale di file. È legato alle .destensioni tradizionali sulle directory in /etc. Supponiamo di sì ls packageso vim packages- come farebbe il sistema a sapere se si desidera la directory o il file?
jw013,

2
Potresti dirci quale sistema operativo stai utilizzando? Perché non è possibile avere un file e una directory con lo stesso nome sulla maggior parte dei SO che conosco
rahmu

2
@ j013, perché hai risposto in un commento e non hai scritto una risposta ?
andcoz,

1
Nemmeno tu puoi farlo su Windows. Sul mio computer con Windows 7, provare a farlo genera l'errore:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down,

4
In Windows, le impostazioni predefinite sono di ignorare le estensioni, quindi potresti avere una packagedirectory e un package.txtfile nella stessa cartella. Da Esplora risorse di Windows sembrerà che tu debba inserire voci chiamate "pacchetto", quando in realtà nasconde solo una parte del nome file di uno.
Arcege,

Risposte:


35

In Unix, quasi tutto è un file. Una directory è un tipo speciale di file che dal punto di vista dell'utente può "contenere" altri file.

L'errore si Not a directoryverifica perché il file esistente non è una directory e poiché una directory è un tipo di file e non ci possono essere due file con nome identico in una directory, l'operazione non può essere eseguita.


6
Per quanto riguarda il tuo problema di memoria, forse in passato il tuo file e la tua directory avevano lo stesso nome ma con case diverse, come "pacchetto" e "pacchetto". I nomi dei file fanno distinzione tra maiuscole e minuscole, quindi funzionerebbe.
noamtm,

2

Perché se tu fossi in grado di fare una cosa del genere, la vita sarebbe infelice per i programmatori come me quando provo a ripetere i file in una directory.

Per il seguente pseudocodice:

isDir('/path/to/same_file_and_folder_name')

Il sistema operativo dovrebbe rispondere vero o falso?


Dovrebbe semplicemente restituire "entrambi".
Anthon,


1
@ Tipo G-Man atteso booleano, ottenuto oggetto (promessa).
Scott Yang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.