Dlaczego w Ubuntu nie mogę mieć folderu o nazwie „MyFile” i dokumentu o nazwie „MyFile” w tej samej lokalizacji? Dostaję item already used in this location
błąd Czy Ubuntu / Linux traktuje foldery i pliki jako te same obiekty (wskaźniki na dysk)?
15
.myfile
?blog
z postami na blogu i stronę HTMLblog
z listą postów na blogu.Odpowiedzi:
W Linuksie prawie wszystko jest deskryptorem pliku. Katalog to specjalny typ pliku, który z perspektywy użytkownika może przechowywać inne pliki.
Więc nie możesz mieć obu o tej samej nazwie, w tym samym katalogu w tym samym czasie.
Gdybyś mógł, życie koderów stałoby się nieszczęśliwe. Co masz, aby polecenie „isDir” powróciło, gdy ktoś chce utworzyć katalog i sprawdzić, czy istnieje. Czy IsDir („/ home / shrodingers / cat”) powinien zwracać wartość prawda, fałsz czy obie? A czego byś się spodziewał, gdyby ktoś chciał otworzyć katalog pliku w jakimś kodzie?
A co powinien zrobić system, gdy każesz mu coś otworzyć? Załóżmy, że chcesz plik? To oznacza kłopoty ;)
Nawiasem mówiąc: dotyczy to WSZYSTKICH systemów operacyjnych, nie tylko Linuksa. Chociaż z punktu widzenia pulpitu system operacyjny może dodać unikalny identyfikator do pliku lub katalogu i usunąć go z listy. Z punktu widzenia linii poleceń byłoby to jednak problematyczne.
W systemie Windows jest jedna rzecz: używamy nazw z rozróżnianiem wielkości liter. Zatem „MYFILE” i „myfile” to różne rzeczy.
źródło
nie możesz mieć dwóch podmiotów o tej samej nazwie w tej samej lokalizacji. co się stanie, gdy chcesz cat lub vi plik? jaką jednostkę wybierze system operacyjny? więc ze względu na możliwość pomyłki nie będziesz mieć takiej samej nazwy pliku i folderu w tej samej lokalizacji. a tak na marginesie, folder to plik, który obsługuje inne pliki.
źródło
cat
lubvi
taką nazwę, to oczywiście system operacyjny powinien wybrać plik. Dlaczego to nie działa?vi
to, co zwykle znajduje sięvim
na Ubuntu, idealnie się otwiera i pokazuje katalog, a nawet go edytuje. Spróbuj:vi .
cat
lubvi
jest skierowana do tej nazwy , logiczną interpretacją jest wywołanie go w pliku, a nie w podkatalogu. Fakt, że (głównie) zorientowane na plik polecenie (vi
) działa również na (pod) katalog, nie ma znaczenia dla tej instrukcji.vim
nie naiwnie traktuje argumentów podkatalogów; z tym samym kodem, z którym obsługuje pliki.vim
wydaje się (na bardzo uproszczonym poziomie) dwa programy w jednym: jeśli jest wywoływany w pliku, działa jak edytor tekstu, a jeśli jest wywoływany w podkatalogu, działa jak menedżer plików.vi
. Twoje zdrowie.Wiem, że to stary temat, ale właśnie miałem ten sam problem i chciałem się nim podzielić.
Oto moja historia (bądź cierpliwy, jest szczęśliwy koniec).
Środowisko:
jądro Gentoo 4.12.5 64 bity na reiserfs
Jak to się mogło stać?
Mam kilka komputerów z folderem współdzielonym za pomocą synchronizacji. W pewnym momencie w przeszłości usunąłem plik o nazwie „.stfolder” i zamiast tego utworzyłem katalog o tej nazwie. Może więc błąd wynika z synchronizacji synchronizacji tej operacji na innym komputerze.
Teraz zbadajmy błąd: ( działam tutaj jako root )
wygląda na to, że plik jest duchem, jednak folder odpowiada normalnie (z funkcją wyszukiwania)
Wiem, bardzo dziwne ...
Nie mogę usunąć tego pliku ducha!
Ale w końcu udało mi się go usunąć, przenosząc go na punkt montowania tmpfs
Muszę powiedzieć, że błąd jest nadal obecny na tmpfs, więc nie jest związany z reiserfs:
Jak widać na tym wyjściu bash, plik jest obecny i jednocześnie nieobecny. Dzięki tej zdolności kota Schrödingera możemy utworzyć folder o tej samej nazwie.
Ale poczekaj, jest więcej (i powinieneś znaleźć to oczywiste): możemy również stworzyć inny plik o tej samej nazwie.
Ducha można skopiować (więc mogę zduplikować błąd) lub manipulować przez chown, chmod itp. Jedynym ograniczeniem jest to, że nie możesz go nazwać, więc musisz umieścić go w pustym katalogu i użyć „. *” Jako argumenty dla tych poleceń ... ale to działa!
Ze względu na samą naturę ten plik od samego początku był pusty (jest to tylko flaga do synchronizacji).
Byłem więc ciekawy, czy mogę umieścić jakieś dane w tym pliku.
I tutaj przyszło mi rozwiązanie:
Tak, w pliku znajduje się niewidoczny znak, tuż za kropką.
To wszystko wyjaśnia.
Dzięki Bogu, nie użyłem „testu echa >>. *” I kota ...
źródło
U+200b
tak przy okazji, to „przestrzeń o zerowej szerokości” . Podoba mi się ta anegdota, choć obawiam się, że może nie być w pełni liczona jako odpowiedź./unix//a/238056/139805
wow, to naprawdę dziwne, ale właśnie zrobiłem to, o co prosił autor. Oto jak, więc jest to prawdziwa odpowiedź: P.
zostało to zrobione przez:
whoah naprzemiennie odpowiedź dwa pliki o tej samej nazwie, nawet katalog i plik, co się dzieje ??? _
zupełnie dziwne zachowanie
źródło