Por que o Windows usa barras invertidas para caminhos e barras para frente do Unix?
85
Me incomoda ter usado o Unix na faculdade e agora trabalhando no lado do Windows. Qual é a história por trás dessa decisão? Alguém sabe por que funcionou dessa maneira?
O Unix foi introduzido /como separador de diretório em algum momento de 1970. Não sei por que exatamente esse caractere foi escolhido; o sistema ancestral usado por Multics >, mas os designers do Unix já haviam usado >junto com o <redirecionamento no shell (consulte Por que o diretório raiz é indicado por um /sinal? ).
O MS-DOS 2.0 foi introduzido \como separador de diretório no início dos anos 80. O motivo /não foi usado é que o MS-DOS 1.0 (que não suportava diretórios) já estava usando /para introduzir opções de linha de comando. Levou esse uso do /do CP / M , que tirou de VMS . Você pode ler uma explicação mais completa sobre por que essa escolha foi feita no blog de Larry Osterman (o MS-DOS teve uma opção breve de alterar o caractere de opção -e o separador de diretório /, mas não ficou).
/é reconhecido pela maioria das APIs em nível de programador (em todas as versões do DOS e Windows). Portanto, você pode frequentemente, mas nem sempre, se safar do uso /como separador de diretório no Windows. Uma exceção notável é que você não pode usar /como separador o \\?prefixo que (mesmo no Windows 7) é a única maneira de especificar um caminho usando Unicode ou que contenha mais de 260 caracteres.
Alguns elementos da interface do usuário suportam /como um separador de diretório no Windows, mas não todos. Alguns programas passam apenas os nomes de arquivos para a API subjacente, portanto, eles são compatíveis /e \indiferentemente. No interpretador de comandos (em command.comou cmd), você pode usar /em muitos casos, mas nem sempre; isso depende parcialmente da versão do Windows (por exemplo, cd /windowsfunciona no XP e 7, mas não no Windows 9x). A caixa de entrada do caminho do Explorer aceita /(pelo menos a partir do XP; provavelmente porque também aceita URLs). Por outro lado, a caixa de diálogo padrão de abertura de arquivo rejeita barras .
/é reconhecido como um separador de diretório pela linha de comando do MS-DOS ou Windows.
Tamara Wijsman
11
"C: \ Windows \ System32> cd / windows / system" funciona.
Andrew J. Brehm
@ TomWij: Você tem uma referência de onde exatamente /é aceito na linha de comando? Por exemplo, o que dir /pfaz? e dir c:/p? e c:/windows/notepad.exe? e start /windows/notepad.exe? etc. (Eu não tenho uma máquina Windows aqui para testar.)
Gilles
2
/provavelmente foi usado como separador de diretório no UNIX porque era uma chave fácil (não deslocada) para encontrar um Teletype. Os caracteres especiais não deslocados eram : - ; , . /.
Daniel R Hicks
2
Curiosamente, recentemente procurei nas fontes e manuais do DOS 1 e 2 e descobri que a Microsoft usava /(e -para comutadores) como o Xenix, e inspirada no Xenix, mas a IBM foi lançada antes que a Microsoft fosse enviada aos OEMs e a IBM usava ` (and / `para comutadores) e alteraram o prompt de A:para A>para que eles alterassem a documentação padrão e enviada com erros (ainda assumindo // -) além de uma observação de que foi alterada e por quê.
mirabilos
9
A API subjacente do Windows pode aceitar a barra invertida ou a barra para separar os componentes de diretório e arquivo de um caminho, mas a convenção da Microsoft é usar uma barra invertida e as APIs que retornam caminhos colocam a barra invertida.
O MS-DOS 2.0 copiou o sistema de arquivos hierárquico do Unix e, portanto, usou a barra, mas (possivelmente por insistência da IBM ) adicionou a barra invertida para permitir que os caminhos fossem digitados no shell de comando, mantendo a compatibilidade com o MS-DOS 1.0 e o CP / M em que a barra era o indicador de opção da linha de comandos.
Comparar
dir/w
que mostra o diretório atual em grande formato contra
Respostas:
O Unix foi introduzido
/
como separador de diretório em algum momento de 1970. Não sei por que exatamente esse caractere foi escolhido; o sistema ancestral usado por Multics>
, mas os designers do Unix já haviam usado>
junto com o<
redirecionamento no shell (consulte Por que o diretório raiz é indicado por um/
sinal? ).O MS-DOS 2.0 foi introduzido
\
como separador de diretório no início dos anos 80. O motivo/
não foi usado é que o MS-DOS 1.0 (que não suportava diretórios) já estava usando/
para introduzir opções de linha de comando. Levou esse uso do/
do CP / M , que tirou de VMS . Você pode ler uma explicação mais completa sobre por que essa escolha foi feita no blog de Larry Osterman (o MS-DOS teve uma opção breve de alterar o caractere de opção-
e o separador de diretório/
, mas não ficou)./
é reconhecido pela maioria das APIs em nível de programador (em todas as versões do DOS e Windows). Portanto, você pode frequentemente, mas nem sempre, se safar do uso/
como separador de diretório no Windows. Uma exceção notável é que você não pode usar/
como separador o\\?
prefixo que (mesmo no Windows 7) é a única maneira de especificar um caminho usando Unicode ou que contenha mais de 260 caracteres.Alguns elementos da interface do usuário suportam
/
como um separador de diretório no Windows, mas não todos. Alguns programas passam apenas os nomes de arquivos para a API subjacente, portanto, eles são compatíveis/
e\
indiferentemente. No interpretador de comandos (emcommand.com
oucmd
), você pode usar/
em muitos casos, mas nem sempre; isso depende parcialmente da versão do Windows (por exemplo,cd /windows
funciona no XP e 7, mas não no Windows 9x). A caixa de entrada do caminho do Explorer aceita/
(pelo menos a partir do XP; provavelmente porque também aceita URLs). Por outro lado, a caixa de diálogo padrão de abertura de arquivo rejeita barras .fonte
/
é reconhecido como um separador de diretório pela linha de comando do MS-DOS ou Windows./
é aceito na linha de comando? Por exemplo, o quedir /p
faz? edir c:/p
? ec:/windows/notepad.exe
? estart /windows/notepad.exe
? etc. (Eu não tenho uma máquina Windows aqui para testar.)/
provavelmente foi usado como separador de diretório no UNIX porque era uma chave fácil (não deslocada) para encontrar um Teletype. Os caracteres especiais não deslocados eram: - ; , . /
./
(e-
para comutadores) como o Xenix, e inspirada no Xenix, mas a IBM foi lançada antes que a Microsoft fosse enviada aos OEMs e a IBM usava` (and
/ `para comutadores) e alteraram o prompt deA:
paraA>
para que eles alterassem a documentação padrão e enviada com erros (ainda assumindo/
/-
) além de uma observação de que foi alterada e por quê.A API subjacente do Windows pode aceitar a barra invertida ou a barra para separar os componentes de diretório e arquivo de um caminho, mas a convenção da Microsoft é usar uma barra invertida e as APIs que retornam caminhos colocam a barra invertida.
O MS-DOS 2.0 copiou o sistema de arquivos hierárquico do Unix e, portanto, usou a barra, mas (possivelmente por insistência da IBM ) adicionou a barra invertida para permitir que os caminhos fossem digitados no shell de comando, mantendo a compatibilidade com o MS-DOS 1.0 e o CP / M em que a barra era o indicador de opção da linha de comandos.
Comparar
que mostra o diretório atual em grande formato contra
que executa o
w
arquivo no diretordir
.Referências:
fonte