Sommario:
- Windows: tutto tranne i caratteri di controllo di ASCII e
\/:*?"<>|
- Linux, OS-X: tutto tranne null o
/
Su tutte le piattaforme è meglio evitare caratteri non stampabili come i caratteri di controllo ASCII.
finestre
In Windows, Esplora risorse non consente i caratteri di controllo o \/:*?"<>|
È possibile utilizzare spazi. Se usi gli spazi, dovrai spesso citare il nome del file quando utilizzato dalla riga di comando (ma per quanto ne so le app della GUI non sono interessate). Il file system di Windows come NTFS apparentemente memorizza la codifica con il nome file, ma UTF-16 è standard.
Alcune parti di Windows fanno distinzione tra maiuscole e minuscole, altre parti non fanno distinzione tra maiuscole e minuscole. È facile creare nomi di file distinti come "Ab" e "ab" su un filesystem Windows NTFS. Questi nomi si riferiscono a file separati che contengono contenuti separati distinti. Tuttavia, sebbene il prompt dei comandi di Windows elencherà felicemente entrambi i file utilizzando dir
, non è possibile accedere o manipolare facilmente uno di essi utilizzando comandi come type
. Vedi sotto.
Linux, OS-X
In Linux e OS-X /
è vietato solo il set ASCII stampabile, credo. Alcuni caratteri (come i metacaratteri della shell *?!
) causeranno problemi nelle righe di comando e richiederanno che il nome del file sia opportunamente citato o sfuggito.
I filesystem Linux come ext2, ext3 sono agnostici di set di caratteri (penso che lo trattino più o meno come un flusso di byte - solo null e /
sono proibiti). Ciò significa che è possibile memorizzare i nomi di file nella codifica UTF-8. Credo che spetti alla shell o ad altra applicazione sapere quale codifica utilizzare per convertire correttamente il nome file per la visualizzazione o l'elaborazione.
Conclusione
Quindi probabilmente potresti tranquillamente usare qualcosa del genere ✣
(se non fosse così difficile da scrivere)
Sensibilità maiuscole / minuscole in Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Si noti che non è possibile digitare il contenuto del secondo file, invece il type
comando Windows restituisce semplicemente il contenuto di Ab. Il terzo file sarebbe distinto da aB anche su Linux.
(Windows 10 NTFS).