PowerShell 中像 Linux `tail` 这样的命令?

jsa*_*nen 5 windows powershell windows-8

如何在 PowerShell 中复制 Linux 尾部的行为?

我正在运行一个写入日志文件 ( error.log)的应用程序,我想查看它的最后几行并保持控制台更新更改。

那么tail -f filename在 PowerShell 中是否有类似的东西?

Joe*_*oey 12

自 PSv3 以来的本机 PS 等效项是

Get-Content -Last n
Run Code Online (Sandbox Code Playgroud)

这也很快。在 PSv2 及以下,你必须凑合

Get-Content filename | Select -Last n
Run Code Online (Sandbox Code Playgroud)

但这有几个警告。例如,它不能阻止和等待文件的新更改,而且效率也不是很高,因为它必须从头开始完全读取文件,然后才能显示最后几行。

PSCX有一个Get-FileTail带有-Wait参数的命令:

姓名

Get-FileTail
Run Code Online (Sandbox Code Playgroud)

概要

PSCX Cmdlet:跟踪文件内容 - 可选择等待新内容。

句法

Get-FileTail [-Path] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>]
[-Wait] [<CommonParameters>]

Get-FileTail [-LiteralPath] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>]
[-Wait] [<CommonParameters>]
Run Code Online (Sandbox Code Playgroud)

描述

这种实现通过从末尾读取行而不是处理整个文件来有效地跟踪文件的内容。此行为对于通过网络有效跟踪大型日志文件和大型日志文件至关重要。您还可以指定Wait参数以使 cmdlet 在写入文件时等待并显示新内容。使用Ctrl+C退出等待循环。请注意,如果未指定编码,则 cmdlet 将尝试通过读取文件中的第一个字符来自动检测编码。如果尚未将任何字符写入文件,则 cmdlet 将默认使用 Unicode 编码。您可以通过 Encoding 参数显式指定编码来覆盖此行为。

Get-FileTailtail如果您安装 PSCX,默认情况下别名为。

  • 嗯?我们为什么要谈论 Playstation 模拟器?我随时都会接管 PowerShell,谢谢。 (2认同)

小智 7

从 PowerShell 3 开始,Get-Content(别名gc)cmdlet在文件系统上使用时支持-Tail-Wait参数。用 查一下help gc