将zsh函数参数传递给grep -E

时间:2015-07-16 11:20:09

标签: bash grep zsh

背景...

尝试查找上次触及特定文件的提交。

我可以在从git-loggrep的CLI管道上执行此操作,但我正在尝试将其包装在zsh函数中,更多是为了便于记忆。

这是我的功能,然后这是我想用它生成的输出。

# match lines from git log that start with commit or include the
# filename I'm interested in and then pipe back through grep to color the output
glpg() {
  \git log --name-only | \grep -E ‘“$"|^commit\s\S' | \grep -B1 --color -E ‘$'
}

所需的使用和输出

dwight:assets (add-analytics*) $ glpg clickouts
commit 6662418b8e68e478b95e7254faa6406abdada30f
web/assets/app/viewmodels/clickouts.js
web/assets/app/views/clickouts.html
web/client/app/viewmodels/clickouts.js
web/client/app/views/clickouts.html
--
commit cee37549f613985210c9caf90a48e2cca28d4412
web/client/app/viewmodels/clickouts.js
web/client/app/views/clickouts.html
--
commit df9ea8cd90ff80b89a0c7e2b0657141b105d5e7e
web/client/app/viewmodels/clickouts.js
web/client/app/views/clickouts.html

1 个答案:

答案 0 :(得分:2)

三个问题。

  • 您使用Unicode撇号和引号,'和“。用ASCII引号和双引号替换它们。
  • 您不能使用\ s和\ S来表示标准(POSIX)grep的空格或非空格。请使用' '[^ ]来移植。
  • 所有参数列表均以"$@"引用,包括双引号。