Безопасно удалить папку с именем "~"

Я запрограммировал, чтобы использовать некоторые файлы, очевидно, не очень хорошо понимал ярлык "~" (каталог) и сделал некоторые хитрости, которые меня смутили.

Вместо того, чтобы помещать файлы туда, где я ожидал бы их (/home/me), в его подкаталоге есть папка make, называемая ~. (Someprogram / ~)

drwxr-xr-x 3 me пользователи 4096 30 января 09:34 ~

Если я войду в нее, я вернусь в / home / me

Это просто жесткая ссылка? Я предполагаю, что если я попытаюсь удалить его, то удалит мою домашнюю папку. Как я могу безопасно удалить его и не удалить все?

2 ответа

Это не должно быть жесткой ссылкой, потому что, насколько мне известно, папки не могут быть жестко связаны, кроме как с помощью root, и даже тогда это может быть невозможно из-за системных ограничений. Просто чтобы убедиться, попробуйте это (не путайте \ с /):

unlink \~

(вам нужно экранировать ~, иначе оболочка интерпретирует его как "unlink $HOME").

Обратите внимание, что unlink удалит его, даже если это обычный файл (но не если это каталог)

Если это каталог, просто сделайте это:

rm -Ri \~

Опять убегай от тильды. Вы хотите выполнить команду rm -Ri, чтобы она запрашивала вас перед каждым удалением, на случай, если вы забудете выйти из тильды и случайно удалите домашний каталог.

Расширение тильды выполняется только оболочкой, когда слово начинается с ~, Внутри или в конце слова нет особого отношения к ~, Это то же самое для многих оболочек (bash, zsh, pdksh, tcsh, dash, jsh, sash). Есть также некоторые раковины, которые не знают расширения тильды (sh (Bourne shell), ясень)

Так что, если вы избежите этого или используете путь, а не просто ~ничего не будет расширено. Не имеет значения, является ли это относительным или абсолютным путем, просто должно быть что-то, прежде чем ~,

rm -Ri \~
rm -Ri '~'
rm -Ri "~"
rm -Ri ./~
rm -Ri /full/path/~
Другие вопросы по тегам