我需要创建一个接收参数的别名,然后以这种方式搜索具有该参数的所有别名:别名+空格+参数+“其他文本”
我的别名:
alias att='alias | grep --color $"alias".$1'
alias ass='alias | grep --color "alias "$1'
alias as='alias | grep --color $1'
alias assu='alias | grep -i --color="always" "^alias" | grep --color="always" $1'
alias ffindd='ls ~/ | grep --color=always $1'
alias ffnexn='find . -type d -name node_modules -prune -o -type f -name $1 -print'
alias ffnexx='find . -type d -name $1 -prune -o -type f -name $2 -print'
alias ffcexn='find . -type d -name node_modules -prune -o -type f -print | xargs grep --color=always $1'
alias ffctc='find . -type f -name $2 | xargs grep --color=always $1'
我的搜索:所有以“as”命名的别名
我的尝试:
att "as"
我的期望是:
alias ass='alias | grep --color "alias "$1'
alias as='alias | grep --color $1'
我收到的:
grep: as: No such file or directory
我也尝试过:
assu "as"
我的期望是:
alias ass='alias | grep --color "alias "$1'
alias as='alias | grep --color $1'
我收到的:
我所有带有“别名”和“as”的别名
这就是函数的用途。别名非常简单。如果命令行以可以在别名列表中找到的标记开头,则该标记将替换为别名文本。然后评估新生成的命令行。这会强制别名将所有选项逐字传递给底层可执行文件。您无法更改参数顺序或与其他参数混合使用。函数只需多一点语法即可为您提供更多功能。
当你
att "as"
在命令行输入时,shell 会将其转换为:由于
"as"
是 的第二个位置参数grep
,因此 grep 认为它是需要搜索的文件。因此,当它找不到名为 的文件时,它会失败as
。函数或多或少是相同的,但可以完全按照您的需要执行。并且您可以像
att
之前一样调用它。印刷:
请记住,在调用新函数(或使用新 shell)之前,取消设置与该函数同名的任何别名。别名的优先级高于可执行文件和函数。因此,如果您有一个与函数同名的别名,则别名将隐藏该函数。
如果您现在正在使用函数,那么您可能需要一个显示函数定义的函数。这可以简单地完成,例如
type <function-name>
。type acc
这将打印:实际上,我认为搜索前缀并显示定义的完整替换应该是: