Domanda

Non sto chiedendo delle regole sintattiche generali per i nomi dei file. Intendo i gotcha che saltano fuori dal nulla e ti mordono. Ad esempio, provando a nominare un file & Quot; COM & Lt; n & Gt; & Quot; su Windows?

È stato utile?

Soluzione

Da: http://www.grouplogic.com /knowledge/index.cfm/fuseaction/view_Info/docID/111 .

  

I seguenti caratteri non sono validi come nomi di file o cartelle su Windows utilizzando NTFS: / ? < > \ : * | " e qualsiasi carattere che puoi digitare con il tasto Ctrl.

     

Oltre ai suddetti caratteri illegali, anche il punto di inserimento ^ non è consentito nei sistemi operativi Windows che utilizzano il file system FAT.

     

In Windows l'utilizzo del file system FAT e i nomi delle cartelle possono contenere fino a 255 caratteri.

     

In Windows utilizzando il file system NTFS i nomi dei file e delle cartelle possono contenere fino a 256 caratteri.

     

In Window la lunghezza di un percorso completo in entrambi i sistemi è di 260 caratteri.

     

Oltre a questi personaggi, anche le seguenti convenzioni sono illegali:

     
      
  • Posizionamento di uno spazio alla fine del nome
  •   
  • Posizionamento di un punto alla fine del nome
  •   
     

I seguenti nomi di file sono riservati anche in Windows:

     
      
  • aux,
  •   
  • com1,
  •   
  • com2,
  •   
  • ...
  •   
  • com9,
  •   
  • lpt1,
  •   
  • lpt2,
  •   
  • ...
  •   
  • lpt9,
  •   
  • con,
  •   
  • nul,
  •   
  • prn
  •   

Altri suggerimenti

Descrizione completa di nomi di file legali e illegali su Windows: http://msdn.microsoft.com/en-us/library/aa365247.aspx

Come altri hanno già detto, i nomi dei dispositivi come COM1 non sono possibili come nomi di file in Windows perché sono dispositivi riservati.

Tuttavia, esiste un metodo di escape per creare e accedere ai file con questi nomi riservati, ad esempio questo comando reindirizzerà l'output del comando ver in un file chiamato COM1:

ver > "\\?\C:\Users\username\COM1"

Ora avrai un file chiamato COM1 che il 99% dei programmi non sarà in grado di aprire e probabilmente si bloccherà se provi ad accedere.

Ecco il Articolo di Microsoft che spiega come questo & Quot; spazio dei nomi di file & Quot; lavori. Fondamentalmente dice a Windows di non eseguire alcuna elaborazione di stringhe sul testo e di passarlo direttamente al filesystem. Questo trucco può anche essere usato per lavorare con percorsi più lunghi di 260 caratteri.

Un ingannevole gotcha Unix quando non lo sai:

I file che iniziano con - o - sono legali ma un problema nel sedere con cui lavorare, poiché molti strumenti da riga di comando pensano che tu stia fornendo loro opzioni.

Molti di quegli strumenti hanno un marcatore speciale " - " per segnalare la fine delle opzioni:

gzip -9vf -- -mydashedfilename

The boost :: filesystem Guida alla portabilità ha molte buone informazioni.

Bene, per MSDOS / Windows, NUL, PRN, LPT < n > e CON. Inoltre, possono causare problemi se utilizzati con un'estensione: & Quot; NUL.TXT & Quot;

A meno che non si tocchino directory speciali, gli unici nomi illegali su Linux sono '.' e '..'. È possibile qualsiasi altro nome, anche se per accedere ad alcuni di essi dalla shell è necessario utilizzare sequenze di escape.

EDIT: come ha detto Vinko Vrsalovic, i file che iniziano con '-' e '--' sono una seccatura della shell, poiché quelle sequenze di caratteri sono interpretate dall'applicazione, non dalla shell.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top