通过bash 5中已声明函数的Grep

问题描述 投票:0回答:1

[当我使用bash版本4时,我使用以下命令对所有别名和字符串的声明函数进行grep表示:

alig() {
    alias | grep $1
    declare -f | sed -n '/^[a-z0-9A-Z.-]\+ () *$/ , /^}$/{ //{/()/h;/()/!H;};//!H;/^}$/!d;g;s/\n[ \o11]*/ /g;s/}$//;p; }' | grep $1
}

alig命令过去通常是这样的:

# alig grep
alig() {
    alias | grep $1
    declare -f | sed -n '/^[a-z0-9A-Z.-]\+ () *$/ , /^}$/{ //{/()/h;/()/!H;};//!H;/^}$/!d;g;s/\n[ \o11]*/ /g;s/}$//;p; }' | grep $1
}
alias hg='history | grep'
gcm() { 
    git commit -m "$@"
    git --no-pager log -1 | grep ^commit
}

它将返回包含字符串'grep'的任何别名或函数的完整内容。

自升级到bash版本5后,sed命令导致一个空字符串。我知道我可以使用declare -f <function>来查看函数,但是我希望能够对所有别名和函数进行grep输入字符串,因为有时(很多时候)我不知道我在寻找什么,所以我只想更新sed查询以使其正常工作。

bash sed alias
1个回答
0
投票

原来不是bash v5,它正在升级到macOS Catalina,从而覆盖了我的GNU设置。 GNU sed可以很好地执行sed查询。

© www.soinside.com 2019 - 2024. All rights reserved.