Jeśli zrobię: touch file; mv file /dev/null
jako root /dev/null
znika. ls -lad /dev/null
powoduje brak takiego pliku lub katalogu. To łamie aplikacje, które zależą od /dev/null
SSH i można je rozwiązać przez wykonanie mknod /dev/null c 1 3; chmod 666 /dev/null
. Dlaczego przeniesienie zwykłego pliku do tego pliku specjalnego powoduje jego zniknięcie /dev/null
?
Aby to wyjaśnić, było to w celach testowych i rozumiem, jak mv
działa polecenie. Ciekawe, dlaczego ls -la /dev/null
przed zastąpieniem go zwykłym plikiem wyświetla oczekiwane dane wyjściowe, ale potem pokazuje, że /dev/null
nie istnieje, mimo że plik został rzekomo utworzony za pomocą oryginalnego mv
polecenia, a polecenie pliku pokazuje tekst ASCII. Myślę, że musi to być kombinacja ls
zachowania polecenia w połączeniu z sytuacją, devfs
gdy plik niespecjalny zastępuje plik znakowy / specjalny. Dotyczy to Mac OS X, zachowania mogą się różnić w innych systemach operacyjnych.
rm
polecenie.
devfs
jest zabawny z normalnymi plikami. Dziwne, że nie dostałeś jednak błędu mv
. Co powiesz na ten sposób touch testfile; mv testfile /dev
:?
mv
może być atomowy tylko w tym samym systemie plików.
/dev/null
.