我需要能够删除与任何用户系统的Documents文件夹相关的目录。
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
?我尝试了很多添加引文的变种而没有运气。
答案 0 :(得分:3)
Tilde扩展在所有情况下都不起作用。您可以使用HOME
变量:
rmdir $HOME/Documents/Folder
来自bash manual:
Tilde Expansion如果一个单词以不带引号的波浪号字符开头 ('〜'),第一个未加引号的斜杠之前的所有字符(或 所有字符,如果没有不带引号的斜杠)都被视为a 波浪号前缀。如果tilde-prefix中没有任何字符 引用,代字号后面的波浪号前缀中的字符是 被视为可能的登录名。如果此登录名为null string,tilde替换为shell参数的值 家。如果未设置HOME,则执行该用户的主目录 用shell代替。否则,波浪号前缀是 替换为与指定登录相关联的主目录 名。
如果tilde-prefix是'〜+',则是shell变量PWD的值 替换波浪号前缀。如果波浪号前缀是'〜 - ',则为该值 shell变量OLDPWD(如果已设置)被替换。如果 在波浪号前缀中波浪号后面的字符由a组成 数字N,可选地以'+'或' - '为前缀,波浪号前缀为 替换为目录st中的相应元素,因为它 将由使用波浪号前缀调用的目录内容显示 作为一个论点。如果字符后面的波浪号 波浪号前缀由一个不带前导'+'或' - '的数字组成,'+'是 假设
如果登录名无效,或者代字号扩展失败,则单词 没有改变。