5

Как я могу повторить поведение хвоста Linux в PowerShell?

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

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

2 ответа2

12

Собственный эквивалент 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-FileTail по умолчанию привязан к tail , если вы устанавливаете PSCX.

7

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .