如何缩短此 grep 命令?
How do I shorten this grep command?
我希望我的 grep 命令更短,例如,只需要在命令行中键入 g
即可执行 grep
并带有选项 -Pei
.
我试过在 Bash 中使用别名,但管道不起作用。
alias g='grep --color auto -Pei'
给我
history |g qemu
grep: auto: No such file or directory
grep: qemu: No such file or directory
然后我尝试了 .bashrc
function g () { /bin/grep -Pei "$@" ;}
它仍然输出
history |g qemu
grep: qemu: No such file or directory
您的别名有两个不同的问题:
长格式 GNU 选项(以 --
而不是 -
开头的选项)需要在选项名称及其值(参数)之间有一个 =
:
- 也就是说,应该是
--color=auto
,而不是--color auto
你错误地使用了选项-e
:它的目的是接受多个搜索模式,每个 -e
实例 需要一个参数 - 在你的例子中,[-]e
直接跟在 i
之后,因此错误地用作 -e
的参数,即作为 模式 ,导致您的真实搜索模式被误解为 filename 操作数。
因此,重新定义您的别名如下:
alias g='grep --color=auto -Pi'
Update:正如 暗示的那样,使用 -e
有一个优点:它允许您指定 以-
不会被误解为其他选项;因此,将 -e
last 放在别名中会给您带来优势。
alias g='grep --color=auto -Pie'
当然,不将 -e
构建到别名中总是让您可以选择 按需 指定它,当 调用 别名,这将使 multiple -e
选项的使用更加直观。
最后,@thatotherguy 在评论中给出的建议值得听取:
在定义别名之前,确保它的定义像直接输入的命令一样按预期工作。
选项-e
不正确。您使用它的方式是指定搜索表达式为 i
(即,-Pei
被解释为 -P -e i
,而不是 -P -e -i
)。切换到 -Pie
(如果您预计不需要搜索以破折号开头的表达式,则切换到 -Pi
)。
在第一次尝试中,您还需要一个等号而不是 color
和 auto
之间的 space。
您通常应该更喜欢函数而不是别名,尽管在这种有限的情况下,别名也可以。
function
关键字是一个bashism;删除它可以提高代码的可移植性。
不要指定 grep
的路径;相反,请确保您的 PATH
精神正常。
g () { grep -Pie "$@" ;}
我希望我的 grep 命令更短,例如,只需要在命令行中键入 g
即可执行 grep
并带有选项 -Pei
.
我试过在 Bash 中使用别名,但管道不起作用。
alias g='grep --color auto -Pei'
给我
history |g qemu
grep: auto: No such file or directory
grep: qemu: No such file or directory
然后我尝试了 .bashrc
function g () { /bin/grep -Pei "$@" ;}
它仍然输出
history |g qemu
grep: qemu: No such file or directory
您的别名有两个不同的问题:
长格式 GNU 选项(以
--
而不是-
开头的选项)需要在选项名称及其值(参数)之间有一个=
:- 也就是说,应该是
--color=auto
,而不是--color auto
- 也就是说,应该是
你错误地使用了选项
-e
:它的目的是接受多个搜索模式,每个-e
实例 需要一个参数 - 在你的例子中,[-]e
直接跟在i
之后,因此错误地用作-e
的参数,即作为 模式 ,导致您的真实搜索模式被误解为 filename 操作数。
因此,重新定义您的别名如下:
alias g='grep --color=auto -Pi'
Update:正如 -e
有一个优点:它允许您指定 以-
不会被误解为其他选项;因此,将 -e
last 放在别名中会给您带来优势。
alias g='grep --color=auto -Pie'
当然,不将 -e
构建到别名中总是让您可以选择 按需 指定它,当 调用 别名,这将使 multiple -e
选项的使用更加直观。
最后,@thatotherguy 在评论中给出的建议值得听取:
在定义别名之前,确保它的定义像直接输入的命令一样按预期工作。
选项-e
不正确。您使用它的方式是指定搜索表达式为 i
(即,-Pei
被解释为 -P -e i
,而不是 -P -e -i
)。切换到 -Pie
(如果您预计不需要搜索以破折号开头的表达式,则切换到 -Pi
)。
在第一次尝试中,您还需要一个等号而不是 color
和 auto
之间的 space。
您通常应该更喜欢函数而不是别名,尽管在这种有限的情况下,别名也可以。
function
关键字是一个bashism;删除它可以提高代码的可移植性。
不要指定 grep
的路径;相反,请确保您的 PATH
精神正常。
g () { grep -Pie "$@" ;}