尝试在别名中使用 `pwd` 给出意外结果

asa*_*f92 8 alias search file-search

如果我想在系统中搜索文件,我使用以下命令:

sudo find `pwd` -name filename.ext
Run Code Online (Sandbox Code Playgroud)

我想为一个更简单的词做一个别名,比如search,所以我使用了命令:

alias search "find `pwd` -name "
Run Code Online (Sandbox Code Playgroud)

问题是该命令将pwd零件转换为我现在所在的实际路径。当我输入只是alias为了查看别名列表时,我看到:

search   find /path/to/my/homedir -name
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这种情况?

Mat*_*lis 18

在定义时使用单引号避免 shell 扩展

alias search='find `pwd` -name '
Run Code Online (Sandbox Code Playgroud)

  • 请注意,它是 POSIX `sh` 语法,而不是 `csh` 语法。在 POSIX `sh` 中,`pwd` 的输出会进行 split+glob,而你在这里不想要,你需要 `find "$(pwd)"` 或者更好的是 `find "$PWD"`。在 `csh` 中,引用(如在 `find "\`pwd\`"` 中)有一点帮助,因为它禁用了通配,但 `pwd` 的输出仍然被拆分(尽管这次在 ` pwd` 的输出而不是(空格、制表符和换行符)_words_。 (3认同)