【发布时间】:2017-05-10 19:42:07
【问题描述】:
我需要能够删除与任何用户系统的 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?我尝试了许多添加引号的变体,但都没有成功。
【问题讨论】:
-
realpath -m ~/Documents/Folder输出什么? -
@sschuberth 我好像没有一个叫 realpath 的程序?
-
你在跑什么?从路径来看,您似乎是在 Windows 下运行 Bash。如果是这样,什么 Bash?赛格温? MSYS(2)?用于 Windows 的 Git? Windows 10 下的 Linux 子系统?
-
@sschuberth 我使用的是 macOS 10.12.2
-
如果字符串在单引号或双引号中,bash 不会扩展
~。
标签: bash macos path filenames tilde-expansion