1

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

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

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

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

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

2 ответа2

2

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

unlink \~

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

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

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

rm -Ri \~

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

1

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

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

rm -Ri \~
rm -Ri '~'
rm -Ri "~"
rm -Ri ./~
rm -Ri /full/path/~

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .