PowerShell 中類似 Linux `tail` 的指令?

PowerShell 中類似 Linux `tail` 的指令?

如何在 PowerShell 中複製 Linux tail 的行為?

我正在運行一個寫入日誌檔案 ( error.log) 的應用程序,我希望查看其中的最後幾行並保持控制台更新更改。

tail -f filename那麼是否有與 PowerShell類似的功能呢?

答案1

從 PowerShell 3 開始,Get-Content(別名)cmdlet在檔案系統上使用時gc支援-Tail和參數。-Wait用 找一下help gc

答案2

自 PSv3 以來的本機 PS 等效項是

Get-Content -Last n

這也很快。在 PSv2 及以下版本中你必須湊合使用

Get-Content filename | Select -Last n

但這有幾個警告。例如,它無法阻止並等待文件的新更改,而且效率也不是很高,因為它必須從頭開始完全讀取文件才能顯示最後幾行。

PSCX有一個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-FileTailtail如果您安裝 PSCX,則預設為別名。

相關內容