Bash 函数 Grep Mod

Bash 函数 Grep Mod

TL:DR 如何将 grep 添加到 bash 函数,同时允许可变数量的可选输入?

我发现在重复 grep 大输出时,我最终会用数据堵塞终端。有时,我想做一个 grep,并在捕获所有数据的同时快速转到它的顶部。为此,我已经习惯使用“clear;clear; grep [options] [string] [file] ; top”。由于懒惰,我想将其变成一个名为“cgrep”的函数,该函数执行两个清除和 grep。我尝试过的是:

cgrep () {
   clear
   clear
   grep "$1" "$2" "$3"
}

这是可行的,前提是我始终只使用一个可选参数。虽然这在大多数情况下都不是问题,但我很好奇如何向其提供 0-N 个可选参数而不引起问题(例如将 [string] 读取为 [file])。

我读了这个帖子,并尝试了类似的实现。但是,这不太适合我的需求,如果我可以在 cgrep 和 [string] 之间添加可选参数,使其看起来更像传统的 grep ,那就更好了。

答案1

在 bash 和 sh 中"$@",将展开所有位置参数,如下所示:

cgrep () {
   clear
   clear
   grep "$@"
}

请注意,$@必须用双引号引起来,以防止对每个参数执行分词、通配符、空删除等操作。

3.4.2 特殊参数

相关内容