在PowerShell中着色findstr / grep输出

时间:2014-03-07 22:55:55

标签: powershell grep findstr

我发现了很多问题/答案以及其他类型的帖子,这些帖子谈论使用别名替换,或别名grep for findstr。虽然这很有用,但我喜欢在许多终端环境中使用grep的一件事是突出显示找到的文本;通常是红色的。

findstr / A:颜色似乎意味着这应该是可能的,甚至很容易......但我还没有让它在一个简单的声明中工作:

set-alias grep "findstr /A:color F0"

有办法吗?

由于

1 个答案:

答案 0 :(得分:3)

我很少创建新的别名,所以很可能有其他(更好的)方式,而不是我在上面写的那个,但这种方式似乎有效。

Set-Alias的帮助部分,参数Value声明:

  

-Value

   Specifies the name of the cmdlet or command element that is being aliased.

因此,它希望别名命令可以是cmdlet或命令元素。

如果您执行Get-Help Set-Alias -Examples,您将看到最后一个与您希望类似的示例,调用命令并指定一些硬编码参数。它使用以下代码执行此操作:

PS C:\>function CD32 {set-location c:\windows\system32}
PS C:\>set-alias go cd32

所以你需要做的是创建一个能够做你想做的事情的函数然后别名那个命令。这方面的一个例子是:

function Search-Text
{
    & c:\Windows\system32\findstr.exe /A:F0 $Args
}

然后您可以将新功能别名为grep,如:

Set-Alias grep Search-Text

最后只需称它为:

grep mysearchword file1.txt file2.txt

注意 :当我在普通的PowerShell shell中运行它时,上面的代码对我来说很好(可能因为这实际上是带有一些额外内容的普通命令shell) ,但在ISE中没有得到预期的彩色打印(显然,ISE以不同的方式处理主机打印)。