Команда, похожая на Linux `tail` в PowerShell?

Команда, похожая на Linux `tail` в PowerShell?

Как можно воспроизвести поведение tail Linux в PowerShell?

Я запускаю приложение, которое записывает файл журнала ( error.log), и мне хотелось бы видеть последние строки из него, а также сохранять обновления консоли.

Так есть ли эквивалент чего-то подобного tail -f filenameв PowerShell?

решение1

Начиная с PowerShell 3 командлет Get-Content(alias gc) поддерживает параметры -Tailи -Waitпри использовании в файловой системе. Найдите его с помощью help gc.

решение2

Собственный эквивалент PS, поскольку PSv3 — это

Get-Content -Last n

что также быстро. В PSv2 и ниже вам придется довольствоваться

Get-Content filename | Select -Last n

но это имеет несколько оговорок. Он не может блокировать и ждать новых изменений в файле, например, и также не очень эффективен, поскольку ему приходится полностью читать файл с самого начала, прежде чем он сможет показать последние строки.

PSCXесть Get-FileTailкоманда, которая имеет -Waitпараметр:

Имя

Get-FileTail

Синопсис

Командлет PSCX: отслеживает содержимое файла — при необходимости ожидая нового содержимого.

Синтаксис

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чтобы командлет ждал и отображал новое содержимое по мере его записи в файл. Используйте Ctrl+, Cчтобы выйти из цикла ожидания. Обратите внимание, что если кодировка не указана, командлет попытается автоматически определить кодировку, прочитав первый символ из файла. Если в файл еще не записан ни один символ, командлет по умолчанию будет использовать кодировку Unicode. Вы можете переопределить это поведение, явно указав кодировку с помощью параметра Encoding.

Get-FileTailtailпо умолчанию присваивается псевдоним, если вы устанавливаете PSCX.

Связанный контент