Cosa sono i caratteri non validi per un nome file in OS X?


22

Ho problemi a trovare queste informazioni e prove ed errori mi stanno dicendo che potrebbero non essercene. Cosa sono i caratteri non validi per un nome file su OS X Lion (10.7)?


1
Barra singola in avanti? Barra rovesciata singola? Periodo singolo o doppio?

Sembra che tutte le combinazioni di barre e singoli funzionino, ma un singolo e doppio periodo falliscono perché sono già in uso. Spero che ci sia qualcosa di più .... :)
Rodney Foley,

Non è possibile utilizzare un NUL ASCII. Pensaci un attimo e potresti scoprire perché ...
Donal Fellows,

@Donal ASCII NUL non è qualcosa che puoi semplicemente "digitare" o fare in modo problematico per errore.
Rodney Foley,

1
Puoi darci qualche contesto, Rodney? Sarebbe di grande aiuto nel rispondere a questa domanda se capissimo un po 'di quello che stai cercando di fare ... AFAIK, ci sono alcuni potenziali problemi: personaggi proibiti da onesti a Dio , personaggi a cui è impossibile entrare come percorso in una shell terminale e caratteri che non verranno visualizzati correttamente nel Finder.
Shog9

Risposte:


7

HFS Plus consente " Unicode , qualsiasi personaggio, incluso NUL. Le API del sistema operativo possono limitare alcuni caratteri per motivi legacy"


3
Tecnicamente il file system HFS + consente tutti i caratteri Unicode (poiché rappresenta i nomi internamente come stringhe Pascal con una lunghezza di 2 byte), ma AFAIK nessuna delle API fornite da OS X consente di creare / aprire file con una barra '/'o NUL '\0'in essi .
Adam Rosenfield,

API come in Carbon o Cocoa? Presumo che Terminal sia soggetto a tali restrizioni, ma per quanto riguarda gli script eseguiti da altri programmi, come launchd?
tobylane,

8

Cosa sono i caratteri non validi per un nome file in OS X?

wiki HFS + :

Caratteri consentiti nei nomi di file Unicode, qualsiasi carattere, incluso NUL. Le API del sistema operativo possono limitare alcuni caratteri per motivi legacy


Finder non consente attualmente di inserire due punti nei nomi dei file, ma consente di inserire barre rovesciate. Tuttavia, i caratteri mostrati come barre nel Finder sono mostrati come due punti nelle conchiglie e viceversa. Finder non consente alcun carattere di controllo ASCII.


Bash sembrava consentire tutti i personaggi di controllo tranne \000(NUL). L'ho provato eseguendo l'output da:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done

2

MODIFICATO

Secondo Wikipedia , l'unico carattere non valido è la barra /, ma a livello UNIX.


2
Forse :è vietato su Mac OS Classic, ma certamente non su Mac OS X: touch foo:barfunziona perfettamente.
Adam Rosenfield,

1
La risposta è stata aggiornata Ti invitiamo a rimuovere il tuo voto negativo.

5
@Adam: :è valido nel "livello unix", ma è tradotto da / /nei "livelli Mac" (ovvero Finder, la maggior parte delle finestre di dialogo relative ai file, ecc.): I due punti sono usati come separatore in "Percorsi HFS "E la barra viene utilizzata come separatore in" Percorsi POSIX ", pertanto esiste una traduzione bidirezionale a seconda del" livello "con cui si sta lavorando.
Chris Johnsen,

2
Quindi, nessuna barra ( /) o due punti ( :) per essere sicuri?
Nicolas Miari,

2
@NicolasMiari Sì. Finder.app non ti consentirà di inserire i due punti e non funzionerà correttamente con i nomi dei file che lo contengono. Il livello UNIX non ti permetterà di lavorare con file contenenti una barra (o meglio; lo traduce in due punti). E poi ci sono altre applicazioni (come Microsoft Word) che soffocano su entrambi. Ad esempio, se si salva un documento in TextEdit.app con il nome file foo/bar.docx(che funziona), Microsoft Word non sarà in grado di aprirlo.
Konrad Rudolph,
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.