No Ubuntu, por que não posso ter uma pasta chamada "MyFile" e um documento chamado "MyFile" no mesmo local? Eu recebo um item already used in this location
erro. O Ubuntu / Linux trata pastas e arquivos como os mesmos objetos (ponteiros para o disco)?
15
.myfile
?blog
com postagens de blog e uma página html chamadablog
com uma lista de postagens de blog.Respostas:
No Linux, quase tudo é um descritor de arquivos. Um diretório é um tipo especial de arquivo que, da perspectiva do usuário, pode conter outros arquivos.
Portanto, você não pode ter os dois com o mesmo nome, no mesmo diretório ao mesmo tempo.
Se você pudesse, a vida se tornaria miserável para os programadores. O que você deseja que o comando "isDir" retorne quando alguém quiser criar um diretório e verificar se ele existe. O isDir ("/ home / shrodingers / cat") deve retornar verdadeiro, falso ou ambos? E o que você esperaria se alguém quisesse abrir um diretório de um arquivo em algum código?
E o que o sistema deve fazer quando você pede para abrir alguma coisa? Suponha que você queira o arquivo? Isso significa problemas ;)
A propósito: isso é verdade para TODOS os sistemas operacionais, não apenas para Linux. Embora do ponto de vista da área de trabalho, um sistema operacional possa adicionar um identificador exclusivo ao arquivo ou diretório e removê-lo da lista. Do ponto de vista da linha de comando, isso seria problemático.
Há uma coisa que temos no Windows: usamos nomes com distinção entre maiúsculas e minúsculas. Então "MYFILE" e "myfile" são coisas diferentes.
fonte
você não pode ter duas entidades com o mesmo nome no mesmo local. o que acontecerá quando você quiser cat ou vi o arquivo? qual entidade o sistema operacional escolherá? portanto, devido à possibilidade de confusão, você não poderá ter o mesmo nome para um arquivo e pasta no mesmo local. e, a propósito, uma pasta é um arquivo que hospeda outros arquivos.
fonte
cat
ouvi
esse nome, obviamente, o sistema operacional deverá escolher o arquivo. Por que isso não funciona?vi
que geralmente estávim
no Ubuntu, está perfeitamente feliz em abrir e mostrar um diretório e até editá-lo. Experimente:vi .
cat
ouvi
é endereçado a esse nome , a interpretação lógica é invocá-la no arquivo e não no subdiretório. O fato de um comando (vi
) orientado a arquivos (principalmente) também funcionar em um diretório (sub) é irrelevante para essa declaração.vim
não está tratando argumentos de subdiretórios ingênuos; com o mesmo código com o qual ele lida com arquivos.vim
parece ser (em um nível muito simplista) dois programas em um: se for invocado em um arquivo, ele age como um editor de texto e, se for invocado em um subdiretório, atua como um gerenciador de arquivos.vi
. Felicidades.Sei que esse é um tópico antigo, mas eu só tinha o mesmo problema e queria compartilhar.
Aqui está a minha história (seja paciente, há um final feliz).
Ambiente:
Gentoo kernel 4.12.5 64bits no reiserfs
Como isso pôde acontecer?
Eu tenho várias máquinas com uma pasta compartilhada usando syncthing. Em algum momento no passado, removi um arquivo chamado ".stfolder" e criei um diretório com esse nome. Talvez o bug seja devido à sincronização dessa operação em outra máquina.
Agora vamos examinar o bug: (Estou operando como root aqui)
parece que o arquivo é um fantasma, no entanto, a pasta está respondendo normalmente (com localização)
Eu sei, muito estranho ...
Não consigo remover esse arquivo fantasma!
Mas no final, removi-o com sucesso movendo-o para um ponto de montagem tmpfs
Devo dizer que o bug ainda está presente no tmpfs, portanto não está relacionado ao reiserfs:
Como você pode ver nesta saída do bash, o arquivo está presente e não está presente ao mesmo tempo. Devido a essa habilidade de gato de Schrödinger , podemos criar uma pasta com o mesmo nome.
Mas espere, há mais (e você deve achar isso óbvio): podemos criar outro arquivo com o mesmo nome.
O fantasma pode ser copiado (para que eu possa duplicar o bug) ou manipulado pelo chown, chmod, etc. a única restrição é que você não pode nomeá-lo, então você deve colocá-lo em um diretório vazio e usar ". *" Como argumentos para esses comandos ... mas funciona!
Devido à sua natureza, esse arquivo estava vazio desde o início (é apenas um sinalizador para sincronização).
Então, eu estava curioso para colocar alguns dados nesse arquivo.
E aqui, a solução veio para mim:
Sim, há um caractere invisível nesse arquivo, logo após o ponto.
Isso explica tudo.
Graças a Deus, eu não usei "teste de eco >>. *" E gato ...
fonte
U+200b
é um "espaço de largura zero" , a propósito. Gosto dessa história, embora tenha medo de que ela não conte totalmente como resposta./unix//a/238056/139805
Uau, isso é realmente estranho, mas eu apenas fiz o que o autor pediu. É assim que, portanto, é uma resposta real: P
isso foi feito por:
whoah resposta alternativa dois arquivos com o mesmo nome, nem mesmo um diretório e um arquivo o que está acontecendo ??? _
comportamento totalmente estranho
fonte