我需要能够删除相对于任何用户系统的文档文件夹的目录。
rmdir: ~/Documents/Folder: No such file or directory
如果我手动输入扩展的路径(/users/ricky/documents/folder),则可以正常工作。
我以为bash在路径开头会自动扩展tilde?
更新:
根据建议,尝试了一系列不同的方法后,我非常有信心的是,问题是我如何存储路径。我正在从文本文件中获取路径,该文本文件是我按行读取的:
...
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
?我尝试了许多添加报价的变体,没有运气。
tilde扩展在所有情况下均不起作用。您可以使用HOME
变量:
rmdir $HOME/Documents/Folder
来自Bash手册:
tilde扩展如果一个单词以无引用的tilde角色开头 ('〜'),在第一个未引用的斜线之前的所有字符(或 所有字符,如果没有未引用的斜线)被认为是 Tilde-Prefix。如果tilde-prefix中的字符都不 引用,tilde之后的tilde-prefix中的字符是 被视为可能的登录名。如果此登录名是空名称 字符串,将tilde替换为外壳参数的值 家。如果房屋不设置,则执行用户的主目录 壳被取代。否则,tilde-prefix是 替换为与指定登录相关的主目录 名称。
如果tilde-prefix是'〜 ',则shell变量PWD的值 取代Tilde-Prefix。如果tilde-prefix是'〜-',则值 如果设置了Shell Variable OldPWD的旧PWD。如果是 tilde-prefix中的tilde之后的角色由 数字n,可选地由' '或a' - '前缀,tilde-prefix是 用目录st的相应元素替换为 将由tilde-prex调用的dirs构建显示 作为争论。如果角色跟随tilde tilde-prefix由一个数字组成,而没有领先的" "或" - ",' '是 假设。
如果登录名是无效的,或者Tilde扩展失败,则该词 不变。