我在路径中存在一堆脚本,所以 无论我在哪里,我都可以访问。有时这些是非常简单的util脚本 “vims”文件。我想不时地快速查看脚本文件的内容并查看脚本打开文件的路径(然后制作cat,grep ......)。
我希望制作一个别名,无论我在哪里,它都会给出“猫”字样
鉴于一个不工作:
alias a="cat `which \$1`"
如果我放置脚本名称而不是参数号($ 1),它可以正常工作。但
参数没有。
第二个问题(我希望生活如此美丽!)将会得到 自动完成该别名的脚本名称 使用可能存在于我的“bin”目录中的脚本将是我可以采取的另一种方法。
答案 0 :(得分:6)
对于带参数的别名,请使用function而不是别名:
a() { cat `which $1` ;}
或者,如果您在多行上执行此操作,请跳过分号:
a() {
cat `which $1`
}
您可以在shell提示符下以交互方式输入它:
shell:>a() {
>cat `which $1`
>}
shell:>
答案 1 :(得分:6)
如果您的函数被称为“foo”,那么您的完成函数可能如下所示:
如果您安装了Bash完成包:
_foo () { local cur; cur=$(_get_cword); COMPREPLY=( $( compgen -c -- $cur ) ); return 0; }
如果你不这样做:
_foo () { local cur; cur=${COMP_WORDS[$COMP_CWORD]}; COMPREPLY=( $( compgen -c -- $cur ) ); return 0; }
然后启用它:
complete -F _foo foo
命令compgen -c
将使完成包括系统上的所有命令。
你的功能“foo”可能如下所示:
foo () { cat $(type -P "$@"; }
将cat
一个或多个名称作为参数传递的文件。