È una cattiva pratica che il nome della cartella contenga il punto (.)? Che ne dici del nome del file con più punti?

25

A volte è logico che il nome di una cartella contenga un punto (.). Ad esempio, stai memorizzando i dati per un esperimento condotto a L = 0.5. Quindi la cartella potrebbe essere denominata:

experiment_L0.5

Un problema simile potrebbe sorgere per i nomi dei file. Ad esempio:

file_L0.5.txt

Lavorare in Ubuntu, è questa cattiva pratica? Che ne dici se condividi queste directory con un utente Windows?

Grazie!

    
posta Hamid 30.01.2014 - 17:34

5 risposte

34

Per quanto ne so non ci sono problemi con la denominazione di cartelle e file con un singolo o più punti.

In genere Ubuntu non usa il punto e tre caratteri (come .txt) per identificare il tipo di file. Quindi questo non ha alcun significato speciale nel contesto di Ubuntu. Questo è utile quando si condividono file con Windows. Ubuntu utilizza Numeri magici nei primi pochi byte del file per identificare il tipo di file. Tuttavia, Nautilus. ignora i numeri magici se l'estensione di punti e tre caratteri è disponibile per identificare il tipo di file. Questa impostazione può essere cambiata. Vedi Forza nautilus di ignorare le estensioni

In Ubuntu, l'avvio di un nome di file o cartella con un punto, come .experiment_L0.5 , rende il file o la cartella nascosti. Puoi alternare la visualizzazione dei file nascosti premendo Ctrl + H in Nautilus. In Windows un nome di file che inizia con a. non è nascosto Quindi se trasferisci un file nascosto chiamato .experiment_L0.5 in un sistema Windows sarà chiaramente visibile.

In Ubuntu, un nome di file può terminare con un punto in quanto non ha alcun significato speciale posto alla fine. Tuttavia, in Windows un punto separa il nome e l'estensione del file e un nome file che termina con un punto ma non è consentita alcuna estensione. Quando ho provato a creare un file di questo tipo in Windows, ho ottenuto un file con solo il nome, nessun punto, nessuna estensione.

Riferimento: Wiki su nomi di file

Spero che questo aiuti.

    
risposta data user68186 30.01.2014 - 17:44
10

La risposta breve

  • Windows non consente i seguenti caratteri: <>:"/\|?* ( origine )
  • Altri caratteri scoraggiati sono: spazio e punto . ( origine )
    • Gli strumenti della riga di comando sono più difficili da utilizzare quando si dispone di spazi nei nomi (più difficile, non impossibile)
    • I punti vengono utilizzati in RegEx (ad esempio quando si desidera utilizzare grep ). Un punto iniziale rende un file nascosto per convenzione in Linux. In Windows, i punti vengono utilizzati nell'estensione del file, che viene utilizzata per il rilevamento del tipo di file.
  • Anche Windows non consentirà nomi di file CON , PRN , AUX , CLOCK$ , NUL COM1 , COM2 , COM3 , COM4 , COM5 , COM6 , COM7 , COM8 , COM9 LPT1 , LPT2 , LPT3 , LPT4 , LPT5 , LPT6 , LPT7 , LPT8 e LPT9 . ( fonte )
  • Gli unici caratteri non ammessi nei file system Unix che conosco sono / e null (il byte null, ext4 ).
  • Vedi anche: Limiti del file system (non so a quale Windows vuoi essere compatibile) .

La risposta lunga

Informazioni tecniche: file system

Ubuntu fa uso del / file system. Un file system tiene traccia dei file memorizzati nell'archivio sottostante (disco o SSD o altro), le autorizzazioni sotto forma di proprietario / gruppo / altro possono leggere / scrivere / eseguire, data / ora, nome.

Il file system struttura la memoria disponibile. Il primo blocco è chiamato "superblocco". Questo blocco viene utilizzato per montare un file system. Per quanto ne so, ogni file system moderno divide il suo spazio in blocchi. Penso (e non ne sono troppo sicuro) che la maggior parte dei file system abbia anche una dimensione di blocco fissa, sebbene la dimensione del blocco possa essere configurata quando viene creato il file system. ext4 (e anche ext2 ed ext3) fanno uso dei cosiddetti "inode" per file e directory. Questi inode contengono puntatori ad altri blocchi (che potrebbero anche essere inode o essere "blocchi di dati"). E il "primo" inode di un file contiene tutte le informazioni che ho citato sopra.

Un'altra informazione è il "tipo" del file. "Tipo" può essere:

  • file normale
  • directory
  • file del dispositivo (dispositivo a blocchi o caratteri)
  • ...

In effetti, puoi anche aprire le directory con un editor:

vim /home

Poiché la directory non contiene il percorso completo, ma solo i nomi del contenuto, non vedo un motivo per cui i file non possono contenere un / . Immagino che potrebbe essere comodo. (Qualcuno sa perché .txt non è permesso?)

Tuttavia, le cose sono diverse per altri file system. FAT16 e FAT32 utilizzavano una cosiddetta "tabella di allocazione file". Questo significa che c'è una tabella che contiene tutti i file che sono memorizzati nel tuo file, in cui "cluster" iniziano e in quale cluster terminano come un elenco collegato singolarmente.

La cosa importante che volevo dirti è che i caratteri non consentiti potrebbero anche dipendere dal file system.

Informazioni tecniche: tipi di file

  • Windows utilizza le estensioni dei file per rilevare i tipi di file
  • Linux utilizza "Byte magici" per rilevare i tipi di file. Byte magici sono parte del contenuto del file e quindi completamente indipendenti dal nome. Questi byte fanno parte delle specifiche del tipo di file (vedi specifica png come un esempio). Utilizza anche le estensioni del nome file per i file con gli stessi byte magici come .html o %code% (entrambi sono file di testo).

correlati

risposta data Martin Thoma 06.02.2014 - 21:21
5

Per completezza, i nomi che consistono solo in un singolo punto . o due punti .. sono speciali:

  • . si riferisce alla directory corrente
  • .. fa riferimento alla directory padre

Queste voci vengono aggiunte automaticamente e sempre esistono, quindi non puoi avere un file chiamato . o .. .

    
risposta data Sergey 04.02.2014 - 22:55
1

Questo non importa, non in linux né in windows.

È prassi comune avere una cartella denominata "program.d" - per salvare la configurazione e cose per un programma (guarda nella directory / etc)

    
risposta data Ohad Cohen 30.01.2014 - 17:47
0

La denominazione dei file è molto flessibile in Unix, sistemi di file Linux. L'unico nome file che non puoi avere è un carattere null o quello che contiene un / nel suo nome. Ma sicuramente sarebbe una buona pratica evitare di usare i caratteri proibiti / riservati in altri sistemi dal punto di vista della portabilità del nome; come non dovresti usare nessuno dei " * : < > ? \ / | caratteri (limitato da NTFS) nel tuo nome file se vuoi accedere al file in un sistema Windows.

E sull'uso di un . (punto) in nome file , penso che dovrebbe andare bene perché non sembra essere "riservato" carattere in uno qualsiasi dei sistemi (ad eccezione di OpenVMS, MS-DOS e Windows in cui è consentito l'uso nel nome file / directory ma l'ultima occorrenza verrà interpretata come separatore dell'estensione in VMS, MS-DOS e Windows) come menzionato in il link di Wikipedia che segue:

In altri sistemi, generalmente considerato come parte del nome file, e può essere consentito più di un periodo. In Unix, un periodo iniziale indica normalmente che il file o la cartella sono nascosti.

    
risposta data precise 08.02.2014 - 10:57

Leggi altre domande sui tag