简化此 bash 命令

简化此 bash 命令

如何避免在此一行代码(search for something)中输入两次搜索查询?

git grep "search for something" $(git log -g --pretty=format:%h -S"search for something")

我的解决方案:

创建 bash 脚本/usr/local/bin/git-search

search_string="$1"
git grep $search_string $(git log -g --pretty=format:%h -S$search_string)

然后我可以使用:

git search 'search for something'

答案1

您可以将以下内容放入一个文件中,然后在您的文件中获取该文件~/.bashrc

function gitgrep {
    git grep "search for something" $(git log -g --pretty=format:%h -S"$1")
}

要获取它你只需要有句点文件名. file_with_function

然后你会:

gitgrep "foo bar baz"(需要引号,如果不想使用引号,可以使用$@代替)$1

答案2

您可以将其设为别名:

alias youralias="git grep \"$0\" $(git log -g --pretty=format:%h -S\"$0\")"

然后从 shell 中调用它

youralias "search for something"

那对你有用吗?

答案3

另一个选择是使用 bash 历史扩展:

git grep "search for something" $(git log -g --pretty=format:%h -S!#:2)

答案4

虽然所有这些都可以工作,但如果您还想缩短 git 的基本命令,只需创建一个文件~/.gitconfig并添加一些别名。例如,以下是我的一些别名:

$ cat ~/.gitconfig
[alias]
   ci = commit
   co = checkout
   f = fetch
   s = status
   b = branch
   d = diff
   a = add
   l = log
   g = grep

现在,您可以发出以下命令:

git g "search for something" $(git l -g --pretty=format:%h -S"search for something")

或者您仍然可以在 .gitconfig 文件中拥有 git 别名,但也可以合并本线程中提出的其他人的 bash 函数、别名等。

相关内容