[英]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 "$2"; GLOBIGNORE="$1"; }
alias f='s="$GLOBIGNORE"; GLOBIGNORE="*"; ff "$s"'
別名保存GLOBIGNORE
的當前值,將GLOBIGNORE
為*
,並調用ff
函數,將保存的GLOBIGNORE
作為第一個參數傳遞給該函數。 ff
函數使用無鈎別名參數查找find並恢復GLOBIGNORE
。 使用GNU bash 4.3.30(1)版進行測試:
f *.tex
./full.tex
./hdr.tex
./main.tex
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.