别名中的转义引号

Escape quotes in alias

我想写一个别名来快速搜索当前目录中的文件名(不区分大小写)。

以下作品:

alias f='find . -iname $@'

问题是当我想在搜索表达式中使用通配符时,我需要引用它们(否则 zsh 扩展首先处理通配符):

> f podfi*
zsh: no matches found: podfi*
> f "podfi*"
./Podfile

如何在我的别名中添​​加引号以便 f podfi* 有效?

这些尝试不起作用:

alias f='find . -iname "$@"'
alias f='find . -iname \"$@\"'

zsh 怎么样:

% alias f='noglob find . -iname $@'
% f podfi*
./Podfile
% f "podfi*"
./Podfile
%
function ff () { find . -iname ""; GLOBIGNORE=""; }
alias f='s="$GLOBIGNORE"; GLOBIGNORE="*"; ff "$s"'

别名保存 GLOBIGNORE 的当前值,将 GLOBIGNORE 设置为 *,并调用将保存的 GLOBIGNORE 传递给的 ff 函数] 作为第一个参数。 ff 函数使用非全局别名参数调用 find 并恢复 GLOBIGNORE。使用 GNU bash、版本 4.3.30(1)-release:

进行测试
f *.tex
./full.tex
./hdr.tex
./main.tex