无法在rmdir中使用带有波浪号的文件夹路径

时间:2016-12-26 10:10:02

标签: bash macos path filenames tilde-expansion

我需要能够删除与任何用户系统的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?我尝试了很多添加引文的变种而没有运气。

1 个答案:

答案 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中的相应元素,因为它   将由使用波浪号前缀调用的目录内容显示   作为一个论点。如果字符后面的波浪号   波浪号前缀由一个不带前导'+'或' - '的数字组成,'+'是   假设

     

如果登录名无效,或者代字号扩展失败,则单词   没有改变。