如何在 PowerShell 中复制 Linux 尾部的行为?
我正在运行一个写入日志文件的应用程序(error.log
),我想查看其中的最后几行并保持控制台更新更改。
tail -f filename
那么在 PowerShell 中是否存在类似的东西?
答案1
从 PowerShell 3 开始,Get-Content
(别名gc
) cmdlet 在文件系统上使用时支持-Tail
和-Wait
参数。使用 查找help gc
。
答案2
自 PSv3 以来,本机 PS 等效项为
Get-Content -Last n
速度也很快。在 PSv2 及以下版本中,你必须使用
Get-Content filename | Select -Last n
但这有几个缺点。例如,它无法阻止并等待文件的新更改,而且效率也不太高,因为它必须从头开始完全读取文件,然后才能显示最后的几行。
聚苯乙烯泡沫塑料有一个Get-FileTail
带有-Wait
参数的命令:
姓名
Get-FileTail
概要
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>]
描述
此实现通过从文件末尾读取行而不是处理整个文件来有效地跟踪文件的内容。此行为对于有效地跟踪大型日志文件和网络上的大型日志文件至关重要。您还可以指定参数
Wait
让 cmdlet 等待并在将新内容写入文件时显示它。使用Ctrl+C可跳出等待循环。请注意,如果未指定编码,cmdlet 将尝试通过读取文件中的第一个字符来自动检测编码。如果尚未将任何字符写入文件,则 cmdlet 将默认使用 Unicode 编码。您可以通过 Encoding 参数明确指定编码来覆盖此行为。
Get-FileTail
tail
如果您安装了 PSCX,则默认别名为。