Chciałem utworzyć plik o nazwie test. Przypadkowo biegnę mkdir testzamiast touch test.
Czy można przekonwertować testkatalog w pliku o nazwie test?
Co powiesz na konwersję pliku o nazwie testdo katalogu o tej samej nazwie?
Chciałem utworzyć plik o nazwie test. Przypadkowo biegnę mkdir testzamiast touch test.
Czy można przekonwertować testkatalog w pliku o nazwie test?
Co powiesz na konwersję pliku o nazwie testdo katalogu o tej samej nazwie?
Odpowiedzi:
Nie jest to możliwe w przypadku systemów Unix i Linux, których kiedykolwiek dotknąłem.
W niektórych starszych Uniksach katalogi to pliki, specjalnie oznaczone, ale nadal pliki. Na przykład potrafiłeś czytać katalog w catsystemie SunOS. Wiele współczesnych systemów plików może mieć katalogi jako drzewa B + lub inną strukturę danych na dysku. Tak więc przekształcenie pliku w katalog lub odwrotnie zawsze wymagałoby usunięcia i odtworzenia o tej samej nazwie.
Nie, nie ma takiego polecenia, ponieważ absolutnie nie miałoby sensu. Twoje pytanie jest jak zapytanie o sposób przekształcenia pudełka w płaski prostokąt. Co zrobiłbyś z rzeczami w pudełku (katalogu)? W jaki sposób prostokąt odpowiadałby pudełku, z którego pochodzi?
Pliki i katalogi pełnią zupełnie różne funkcje. Chociaż katalog jest rzeczywiście plikiem w systemach * nix, dotyczy to tylko elementów wewnętrznych systemu, a nie tego, co widzisz użytkownik. Tak więc konwersja pliku do katalogu lub odwrotnie zawsze wiąże się z usunięciem pliku i utworzeniem katalogu. Najlepsze, na co możesz mieć nadzieję, to użyć tego samego i-węzła, ale znowu, nie ma to większego sensu.
Utwórz funkcję, aby robić, co chcesz. ( bashlub założono inną powłokę Bourne / POSIX)
$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$
Celowo używam, rmdirktóry zawiedzie, jeśli adirnie jest katalogiem lub nie jest pusty (nie, -faby wymusić). touchbędzie działać tylko w przypadku rmdirpowodzenia.
Możesz umieścić definicję funkcji w pliku dostosowywania powłoki ( .bashrcdla bash).
--?
--oznacza koniec tak flagami rmdiri touchnic wiedzieć przeszłość jest to nazwa pliku, nawet jeśli zaczyna się -.
Jeśli zastanawiasz się, dlaczego chcesz to zrobić, skorzystaj z tego wątku:
Najwyraźniej błąd w oprogramowaniu układowym spowodował, że bit we wpisie katalogu dla pliku sprawił, że system operacyjny uznał, że jest to folder zamiast pliku.
Chociaż nie mam odpowiedniego routera Linksys, coś zmieniło wszystkie moje pliki .jpg w puste foldery. Jeśli jest jakiś sposób, aby przerzucić bit (lub cokolwiek), który mówi, że pozycja katalogu NTFS jest folderem kontra plik, chciałbym o tym wiedzieć.
Jedno z rozwiązań w tym 2-letnim wątku mówi, że jeśli dysk twardy zawierający foldery, które kiedyś były plikami, zostanie podłączony do komputera Mac z systemem OS / X, komputer Mac zobaczy je ponownie jako pliki i można skopiować do folderu na komputerze Mac. Nie mam komputera Mac, aby to wypróbować, więc jeśli ktoś wie, jak to odwrócić ...
Najpierw uzyskaj dostęp do terminala i uruchom ls -al filez plikiem będącym plikiem, który chcesz przekonwertować z powrotem do folderu RZECZYWISTEGO. Jeśli na liście znajdują się pliki i podkatalogi, oznacza to, że „plik” był wcześniej folderem z prawdziwą zawartością i możesz kontynuować:
Wykonać:
sudo chmod 700 /
LUB
sudo chmod 700 file
Uruchom ponownie system, odzyskaj dostęp do terminala i wykonaj:
sudo chmod 744 /
LUB
sudo chmod 744 file
PAMIĘTAJ: „plik” należy zastąpić plikiem, który chcesz przekonwertować z powrotem na folder RZECZYWISTY.
Jest to tylko arbitralny sposób rozwiązania tego problemu, ale tworzy anomalie uprawnień, których można użyć fsck -fdo naprawy (oczywiście bez zamontowania) lub ręcznego ustawiania nowych uprawnień w razie potrzeby.
PONOWNIE, jest to po prostu sprawdzony sposób na uniknięcie konieczności usuwania pliku, który wcześniej był niepustym folderem.
rm -f test && touch testpoza tym, naprawdę nie wiem