Чому інструменти люблять cp
і rm
обробляють каталоги окремо від звичайних файлів? Вони обидва вимагають від користувача чітко вказати, що вона хоче рекурсивну поведінку, інакше вони взагалі не матимуть справу з каталогами.
Моя перша взаємодія (деякий час назад) з комп’ютерами була в середовищі Windows / GUI / точка-і-натискання / перетягування, завжди здавалося природним, що ці операції будуть вести себе однаково, незалежно від цілі.
Така поведінка мене особливо засмучує, коли я даю команди за допомогою малих символів. Що робити, якщо я хочу видалити все в каталозі ( *
), крім не порожніх підкаталогів ?
Я можу лише уявити, що це якась функція захисту, яка не дозволяє користувачеві стріляти в ногу, але це суперечить моєму розумінню кількох принципів Unix:
- Unix зазвичай не захищає користувача від себе. Завжди вважалося, що користувач знає, що вона робить.
- Для Unix все - це файл. Чи не каталог лише інший файл? Чому до них ставляться по-різному?
Мої запитання:
- Це поведінка випливає з технічного обмеження чи це свідомий вибір?
А у випадку останнього,
- чи існують історичні відомості про причини, які мотивували цей вибір?
rm
принаймні, якщо ви хочете, щоб ігнорувати різницю між файлами і каталогами, ви можете помістити в вашому~/.bashrc
файлі:alias rm='rm -r'
.