O que são caracteres inválidos para um nome de arquivo no OS X?

22

Estou tendo problemas para encontrar essas informações, e tentativa e erro está me dizendo que pode não haver nenhuma. O que são caracteres inválidos para um nome de arquivo no OS X Lion (10.7)?

Rodney Foley
fonte
11
Barra única? Barra invertida única? Período simples ou duplo?
Todos os combo slash e singles parecem funcionar, mas um período único e duplo falha porque eles já estão em uso. Espero que haja mais do que isso .... :)
Rodney Foley
Você não pode usar um ASCII NUL. Pense um pouco e você pode descobrir o porquê ...
Donal Fellows
@Donal ASCII NUL não é algo que você possa facilmente "digitar" ou fazer de forma problemática por engano.
Rodney Foley
11
Você pode nos dar algum contexto, Rodney? Ajudaria muito em responder a isso, se entendermos um pouco sobre o que você está tentando fazer ... AFAIK, existem alguns problemas em potencial: caracteres proibidos honestos a Deus , caracteres impossíveis de inserir como caminho em um shell de terminal e caracteres que não serão exibidos corretamente no Finder.
Shog9

Respostas:

7

O HFS Plus permite " Unicode , qualquer caractere, incluindo NUL. As APIs do SO podem limitar alguns caracteres por motivos herdados"

tobylane
fonte
3
Tecnicamente, o sistema de arquivos HFS + permite todos os caracteres Unicode (já que representa nomes internamente como seqüências de caracteres Pascal com 2 bytes de comprimento), mas AFAIK nenhuma das APIs fornecidas pelo OS X permite criar / abrir arquivos com uma barra '/'ou NUL '\0'neles .
Adam Rosenfield
APIs como em carbono ou cacau? Presumo que o Terminal esteja sob essas restrições, mas e os scripts executados por outros programas, como o launchd?
tobylane
8

O que são caracteres inválidos para um nome de arquivo no OS X?

wiki HFS + :

Caracteres permitidos nos nomes de arquivos Unicode, qualquer caractere, incluindo NUL. APIs do sistema operacional podem limitar alguns caracteres por motivos herdados


No momento, o Finder não permite inserir dois pontos nos nomes dos arquivos, mas permite inserir barras invertidas. No entanto, os caracteres mostrados como barras no Finder são mostrados como dois pontos nas conchas e vice-versa. O Finder também não permite caracteres de controle ASCII.


Bash parecia permitir todos os caracteres de controle, exceto \000(NUL). Eu testei executando a saída de:

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

EDITADO

Segundo a Wikipedia , o único caractere inválido é a barra /, mas na camada UNIX.


fonte
2
Talvez :seja proibido no Mac OS Classic, mas certamente não no Mac OS X - touch foo:barfunciona perfeitamente bem.
Adam Rosenfield
11
A resposta foi atualizada. Você pode remover seu voto negativo.
5
@Adam: :é válido na "camada unix", mas é traduzido de / /para as "camadas Mac" (ou seja, Finder, a maioria das caixas de diálogo relacionadas a arquivos etc.): os dois pontos são usados ​​como separadores em "caminhos HFS" ”E a barra é usada como separador em“ caminhos POSIX ”, para que haja uma tradução bidirecional, dependendo de qual“ camada ”você estiver trabalhando.
precisa
2
Portanto, nenhuma barra ( /) ou dois pontos ( :) é segura?
Nicolas Miari 16/02
2
@NicolasMiari Yes. O Finder.app não permitirá que você digite dois pontos e não funcionará corretamente com os nomes de arquivos que o contêm. A camada UNIX não permitirá que você trabalhe com arquivos que contêm uma barra (ou melhor, ela a converte em dois pontos). E existem outros aplicativos (como o Microsoft Word) que se engasgam. Por exemplo, se você salvar um documento no TextEdit.app com o nome do arquivo foo/bar.docx(que funciona), o Microsoft Word não poderá abri-lo.
Konrad Rudolph