Apa karakter yang tidak valid untuk nama file di bawah OS X?

22

Saya mengalami kesulitan menemukan informasi ini, dan coba-coba mengatakan kepada saya bahwa mungkin tidak ada. Apa karakter yang tidak valid untuk nama file di OS X Lion (10.7)?

Rodney Foley
sumber
1
Garis miring tunggal? Backslash tunggal? Periode tunggal atau ganda?
Semua slash combo dan single sepertinya bekerja, tetapi periode tunggal dan ganda gagal karena mereka sudah digunakan. Saya harap ada lebih dari itu .... :)
Rodney Foley
Anda tidak dapat menggunakan NUL ASCII. Pikirkan beberapa saat dan Anda mungkin tahu mengapa Anda sendiri ...
Donal Fellows
@Donal ASCII NUL bukanlah sesuatu yang bisa dengan mudah Anda "ketik" atau lakukan secara tidak sengaja karena kesalahan.
Rodney Foley
1
Bisakah Anda memberi kami beberapa konteks, Rodney? Akan banyak membantu dalam menjawab hal ini jika kami memahami sedikit tentang apa yang Anda coba lakukan ... AFAIK, ada beberapa masalah potensial: karakter terlarang yang jujur ​​kepada dewa , karakter yang tidak mungkin dimasukkan sebagai jalur di shell terminal, dan karakter yang tidak akan ditampilkan dengan benar di Finder.
Shog9

Jawaban:

7

HFS Plus memungkinkan " Unicode , karakter apa pun, termasuk NUL. API OS dapat membatasi beberapa karakter karena alasan lama"

tobylane
sumber
3
Secara teknis sistem file HFS + memungkinkan semua karakter Unicode (karena mewakili nama secara internal sebagai string Pascal dengan panjang 2-byte), tetapi AFAIK tidak ada API yang disediakan oleh OS X yang memungkinkan Anda membuat / membuka file dengan garis miring '/'atau NUL '\0'di dalamnya .
Adam Rosenfield
API seperti dalam Karbon atau Kakao? Saya menganggap Terminal berada di bawah batasan seperti itu, tetapi bagaimana dengan skrip yang dijalankan oleh program lain, seperti launchd?
tobylane
8

Apa karakter yang tidak valid untuk nama file di bawah OS X?

wiki HFS + :

Karakter yang diizinkan dalam nama file Unicode, karakter apa pun, termasuk NUL. API OS dapat membatasi beberapa karakter karena alasan warisan


Finder saat ini tidak mengizinkan memasukkan titik dua dalam nama file, tetapi tidak memungkinkan memasukkan garis miring terbalik. Namun karakter yang ditampilkan sebagai garis miring pada Finder ditampilkan sebagai titik dua dalam shell, dan sebaliknya. Finder juga tidak mengizinkan karakter kontrol ASCII.


Bash tampaknya mengizinkan semua karakter kontrol kecuali \000(NUL). Saya mengujinya dengan menjalankan output dari:

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

Diedit

Menurut Wikipedia , satu-satunya karakter yang tidak valid adalah garis miring /, tetapi pada layer UNIX.


sumber
2
Mungkin :dilarang di Mac OS Classic, tetapi tentu saja tidak di Mac OS X— touch foo:barberfungsi dengan sangat baik.
Adam Rosenfield
1
Jawaban telah diperbarui. Anda dapat menghapus downvote Anda.
5
@ Adam: :valid dalam "unix layer", tetapi diterjemahkan ke / dari /dalam "Mac layers" (yaitu Finder, sebagian besar dialog terkait file, dll.): Titik dua digunakan sebagai pemisah dalam "jalur HFS "Dan slash digunakan sebagai pemisah dalam" jalur POSIX "sehingga ada terjemahan dua arah tergantung pada" lapisan "mana Anda bekerja.
Chris Johnsen
2
Jadi, tidak ada garis miring ( /) atau titik dua ( :) yang aman?
Nicolas Miari
2
@NicolasMiari Ya. Finder.app tidak akan mengizinkan Anda untuk memasukkan titik dua, dan tidak akan berfungsi dengan baik dengan nama file yang mengandungnya. Lapisan UNIX tidak akan memungkinkan Anda untuk bekerja dengan file yang berisi garis miring (atau lebih tepatnya; ia menerjemahkannya ke titik dua). Dan kemudian ada aplikasi lain (seperti Microsoft Word) yang tersedak. Misalnya, jika Anda menyimpan dokumen di TextEdit.app dengan nama file foo/bar.docx(yang berfungsi), Microsoft Word tidak akan dapat membukanya.
Konrad Rudolph