Не могу использовать путь к папке с тильдой в rmdir
Мне нужно иметь возможность удалить каталог, который относится к папке "Документы" системы любого пользователя.
rmdir: ~/Documents/Folder: No such file or directory
Если я вручную введу расширенный путь (/Users/ricky/Documents/Folder), он будет работать нормально.
Я думал, что Bash автоматически расширил тильду в начале пути?
Обновить:
Попробовав несколько разных подходов в соответствии с рекомендациями, я теперь уверен, что проблема в том, как я храню путь. Я получаю путь из текстового файла, который я читаю построчно:
...
export_folder_path="$(echo $line | cut -f2 -d=)"
...
echo $export_folder_path
rmdir $export_folder_path
rmdir "$HOME/Documents/Folder\ 1"
Это выводит следующее:
$HOME/Documents/Folder\ 1
rmdir: $HOME/Documents/Folder\ 1: No such file or directory
rmdir: /Users/ricky/Documents/Folder\ 1: Directory not empty (This is actually what I want)
Я не могу понять, в чем разница между тем, как я вручную набираю путь экспорта и использую переменную. Почему переменная отказывается расширяться $HOME
? Я пробовал много вариантов добавления цитат без удачи.
1 ответ
Расширение тильды работает не во всех случаях. Вы можете вместо этого использовать HOME
переменная:
rmdir $HOME/Documents/Folder
Расширение тильды Если слово начинается с символа тильды без кавычек ('~'), все символы, предшествующие первой косой черте без кавычек (или все символы, если косой черты без кавычек нет), считаются префиксом тильды. Если ни один из символов в префиксе тильды не указан в кавычках, символы в префиксе тильды, следующие за тильдой, рассматриваются как возможное имя для входа. Если это имя входа является пустой строкой, тильда заменяется значением параметра оболочки HOME. Если HOME не установлен, вместо него подставляется домашний каталог пользователя, выполняющего оболочку. В противном случае префикс тильды заменяется домашним каталогом, связанным с указанным именем входа.
Если префикс тильды равен "~+", значение переменной оболочки PWD заменяет префикс тильды. Если префикс тильды равен "~-", подставляется значение переменной оболочки OLDPWD, если оно задано. Если символы, следующие за тильдой в префиксе тильды, состоят из числа N, необязательно с префиксом "+" или "-", префикс тильды заменяется соответствующим элементом из каталога st, как это будет отображаться встроенный dirs, вызванный с префиксом тильды в качестве аргумента. Если символы, следующие за тильдой в префиксе тильды, состоят из числа без начальных "+" или "-", предполагается "+".
Если логин неверен или расширение тильды завершается неудачно, слово не изменяется.