Dlaczego narzędzia lubią katalogi cp
i rm
traktują je oddzielnie od zwykłych plików? Oba wymagają, aby użytkownik wyraźnie określił, że chce zachowania rekurencyjnego, w przeciwnym razie w ogóle nie zajmą się katalogami.
Moja pierwsza interakcja (jakiś czas temu) z komputerami odbyła się w środowisku Windows / GUI / wskaż i kliknij / przeciągnij i upuść, zawsze wydawało się naturalne, że te operacje będą zachowywać się tak samo, niezależnie od celu.
To zachowanie szczególnie mnie frustruje, kiedy wydaje polecenia za pomocą symboli wieloznacznych. Co jeśli chcę usunąć wszystko z katalogu ( *
) oprócz niepustych podkatalogów ?
Mogę sobie tylko wyobrazić, że jest to jakaś funkcja bezpieczeństwa, która uniemożliwia użytkownikowi zastrzelenie się w stopę, ale jest to sprzeczne z moim rozumieniem kilku zasad uniksowych:
- Unix zazwyczaj nie chroni użytkownika przed sobą. Zawsze zakładało, że użytkownik wie, co robi.
- Dla Uniksa wszystko jest plikiem. Czy katalog nie jest tylko kolejnym plikiem? Dlaczego są traktowani inaczej?
Moje pytania:
- Czy takie zachowanie wynika z ograniczenia technicznego, czy jest to celowy wybór?
A w przypadku tego drugiego
- czy są jakieś historyczne historie powodów, które uzasadniały ten wybór?
rm
przynajmniej, jeśli chcesz go ignorować różnicę między plików i katalogów, które można umieścić w~/.bashrc
pliku:alias rm='rm -r'
.