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.