查找命令使用指定的字符串,但是在创建外壳程序变量时失败(没有这样的文件或目录)-参见下文。我使用转义(\)字符尝试了多种组合和排列,但运气不佳。
$ zsh --version
zsh 5.7.1 (x86_64-apple-darwin19.0)
$ sw_vers -productVersion
10.15.2
$ #
$ # The following FIND command works as expected.
$ #
$ find /Volumes/SeagateDrive/Backups.backupdb/Donald\'s\ iMac/*/Macintosh\ HD\ -\ Data/Users/Jazzfess1/
$ #
$ # I create a variable to use instead of the above string.
$ #
export bck="/Volumes/SeagateDrive/Backups.backupdb/Donald\'s\ iMac/*/Macintosh\ HD\ -\ Data/Users/Jazzfess1/“
$ echo $bck
/Volumes/SeagateDrive/Backups.backupdb/Donald\'s\ iMac/*/Macintosh\ HD\ -\ Data/Users/Jazzfess1/
$ #
$ # The variable is not working: without or with quotes
$ #
$ find $bck
find: /Volumes/SeagateDrive/Backups.backupdb/Donald\'s\ iMac/*/Macintosh\ HD\ -\ Data/Users/Jazzfess1/: No such file or directory
$ find “$bck”
find: /Volumes/SeagateDrive/Backups.backupdb/Donald\'s\ iMac/*/Macintosh\ HD\ -\ Data/Users/Jazzfess1/: No such file or directory
zsh默认情况下不允许在变量中使用globbing,您必须明确要求它:
find $~bck
P.S。而且您不必转义空格和双引号中的单引号:
export bck="/Volumes/SeagateDrive/Backups.backupdb/Donald's iMac/*/Macintosh HD - Data/Users/Jazzfess1/"
您在分配给bck
的过程中逃避了太多事情。 (它也不需要导出。)
bck="/Volumes/SeagateDrive/Backups.backupdb/Donald's iMac/*/Macintosh HD - Data/Users/Jazzfess1/"
另外,当您expand bck
时,*
将按字面意义处理,而不是外壳进一步扩展的范围。修改您的find
命令以读取
bck="/Volumes/SeagateDrive/Backups.backupdb/Donald's iMac/"
find "$bck" -name "Macintosh HD - Data/Users/Jazzfess1" -type d
(不过,这是一个更以bash
为中心的答案。虽然应该起作用,但冯施拉格的建议$~bck
的使用zsh
更简单。)