你好友好的伙计们。在使用Bash的Linux上,我经常需要列出名称以某个预定义词开头的环境变量(env-var)。例如,要列出名称模式为gmXXX的所有env-vars,我将执行
[chj @linux-ic37 ~]$ export|grep '^declare -x gm'
declare -x gmu_DO_SHOW_COMPILE_CMD="1"
declare -x gmu_DO_SHOW_LINK_CMD="1"
但每次写这么长的命令都很无聊。那么,我可以写一个别名来简化它吗?我试过但没有运气。
[chj @linux-ic37 ~]$ alias fvgm="export|grep \'^declare -x gm\'"
[chj @linux-ic37 ~]$ fvgm
grep: gm': No such file or directory
任何人都可以帮助我吗?
为了更进一步,我可以进行'gm'参数化,例如
fv gm
列出以'gm'开头的所有env-var?
答案 0 :(得分:2)
您不需要在别名中转义单引号。将其更改为:
alias fvgm="export|grep '^declare -x gm'"
您需要编写一个函数来使其成为通用函数。例如:
fv(){
export | grep "^declare -x $1"
}
然后你可以打电话:
fv gm
答案 1 :(得分:2)
如何:fv() { env | grep "^$1"; }
$ fv HO
HOSTNAME=...
HOSTTYPE=...
HOME=...
答案 2 :(得分:1)
您是否尝试过compgen -v STR
这将生成以STR开头的所有变量名称的列表
这应该是比管道export
更好的选择,因为它不涉及另一个过程
因此,相同的fv函数可以写为[编辑添加值]
fv()
{
for EV in $(compgen -v ${1}); do
eval echo "$EV=\$$EV"
done
}