Jakie są nieprawidłowe znaki dla nazwy pliku w systemie OS X?

22

Mam problem ze znalezieniem tych informacji, a próby i błędy mówią mi, że może ich nie być. Jakie są nieprawidłowe znaki dla nazwy pliku w OS X Lion (10.7)?

Rodney Foley
źródło
1
Pojedynczy ukośnik? Pojedynczy ukośnik odwrotny? Pojedynczy czy podwójny okres?
Wszystkie kombinacje slash i single wydają się działać, ale pojedyncza i podwójna kropka nie działają, ponieważ są już w użyciu. Mam nadzieję, że jest coś więcej .... :)
Rodney Foley
Nie możesz użyć ASCII NUL. Pomyśl chwilę, a może zauważysz, dlaczego sam…
Donal Fellows
@Donal ASCII NUL nie jest czymś, co można łatwo po prostu „wpisać” lub zrobić problematycznie przez pomyłkę.
Rodney Foley
1
Czy możesz nam podać kontekst, Rodney? Bardzo by to pomogło w udzieleniu odpowiedzi, gdybyśmy trochę zrozumieli, co próbujesz zrobić ... AFAIK, istnieje kilka potencjalnych problemów: uczciwe, zakazane postacie, postacie, których nie można wprowadzić jako ścieżka w powłoce terminala oraz znaki, które nie będą poprawnie wyświetlane w Finderze.
Shog9

Odpowiedzi:

7

HFS Plus zezwala na „ Unicode , dowolny znak, w tym NUL. Interfejsy API systemu operacyjnego mogą ograniczać niektóre znaki ze względu na starsze wersje”

tobylan
źródło
3
Techincally system plików HFS + nie pozwala wszystkie znaki Unicode (ponieważ reprezentuje nazwy wewnętrznie jak Pascal ciągów o długości 2 bajtów), ale AFAIK żaden z API dostarczanych przez OS X pozwala tworzyć / otwarte pliki z ukośnikiem '/'lub NUL '\0'w nich .
Adam Rosenfield
API jak w węglu czy kakao? Zakładam, że Terminal podlega takim ograniczeniom, ale co ze skryptami uruchamianymi przez inne programy, takie jak uruchomione?
tobylane
8

Jakie są nieprawidłowe znaki dla nazwy pliku w systemie OS X?

wiki HFS + :

Dozwolone znaki w nazwach plików Unicode, dowolny znak, w tym NUL. Interfejsy API systemu operacyjnego mogą ograniczać niektóre znaki ze względu na starsze wersje


Finder obecnie nie zezwala na wprowadzanie dwukropków w nazwach plików, ale umożliwia wprowadzanie odwrotnych ukośników. Jednak postacie pokazane w Finderze jako ukośniki są wyświetlane w muszlach jako dwukropki i na odwrót. Finder nie zezwala również na znaki sterujące ASCII.


Wydawało się, że Bash zezwala na wszystkie znaki kontrolne oprócz \000(NUL). Przetestowałem to, uruchamiając dane wyjściowe z:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done
Lri
źródło
2

EDYTOWANE

Według Wikipedii jedynym niepoprawnym znakiem jest ukośnik /, ale w warstwie UNIX.


źródło
2
Może :jest zabronione w Mac OS Classic, ale na pewno nie w Mac OS X - touch foo:bardziała idealnie dobrze.
Adam Rosenfield
1
Odpowiedź została zaktualizowana. Możesz usunąć swoją opinię.
5
@Adam: :jest poprawny w „warstwie unix”, ale jest tłumaczony na / z /„warstw Mac” (tzn. Finder, większość okien dialogowych związanych z plikami itp.): Dwukropek jest używany jako separator w „ścieżkach HFS” ”, A ukośnik jest używany jako separator w„ ścieżkach POSIX ”, więc istnieje dwukierunkowe tłumaczenie w zależności od tego, z którą„ warstwą ”pracujesz.
Chris Johnsen
2
Więc nie ma ukośnika do przodu ( /) ani dwukropka ( :), aby być bezpiecznym?
Nicolas Miari
2
@NicolasMiari Tak. Finder.app nie pozwoli Ci wprowadzić dwukropka i nie będzie działać poprawnie z nazwami plików, które go zawierają. Warstwa UNIX nie pozwala na pracę z plikami zawierającymi ukośnik (a raczej; tłumaczy to na dwukropek). Są też inne aplikacje (takie jak Microsoft Word), które się dławią. Na przykład, jeśli zapiszesz dokument w TextEdit.app pod nazwą pliku foo/bar.docx(co działa), Microsoft Word nie będzie mógł go otworzyć.
Konrad Rudolph