Um comando como Linux `tail` no PowerShell?

Um comando como Linux `tail` no PowerShell?

Como posso replicar o comportamento da cauda do Linux no PowerShell?

Estou executando uma aplicação que grava um arquivo de log ( error.log) e gostaria de ver as últimas linhas dele, bem como manter o console atualizando as alterações.

Então, existe um equivalente a algo como tail -f filenameno PowerShell?

Responder1

A partir do PowerShell 3, o cmdlet Get-Content(alias gc) oferece suporte -Taile -Waitparâmetros quando usado em um sistema de arquivos. Procure com help gc.

Responder2

O equivalente PS nativo já que PSv3 é

Get-Content -Last n

o que também é rápido. No PSv2 e abaixo você tem que se contentar com

Get-Content filename | Select -Last n

mas isso tem várias ressalvas. Ele não pode bloquear e esperar por novas alterações no arquivo, por exemplo, e também não é muito eficiente, pois precisa ler o arquivo completamente desde o início antes de poder mostrar as últimas linhas.

PSCXtem um Get-FileTailcomando que tem um -Waitparâmetro:

Nome

Get-FileTail

Sinopse

Cmdlet PSCX: acompanha o conteúdo de um arquivo - opcionalmente aguardando novo conteúdo.

Sintaxe

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

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

Descrição

Essa implementação segue com eficiência os conteúdos de um arquivo, lendo as linhas do final, em vez de processar o arquivo inteiro. Esse comportamento é crucial para rastrear com eficiência arquivos de log grandes e arquivos de log grandes em uma rede. Você também pode especificar o Waitparâmetro para que o cmdlet aguarde e exiba o novo conteúdo à medida que ele é gravado no arquivo. Use Ctrl+ Cpara sair do loop de espera. Observe que se uma codificação não for especificada, o cmdlet tentará detectar automaticamente a codificação lendo o primeiro caractere do arquivo. Se nenhum caractere ainda não tiver sido gravado no arquivo, o cmdlet usará como padrão a codificação Unicode. Você pode substituir esse comportamento especificando explicitamente a codificação por meio do parâmetro Encoding.

Get-FileTailrecebe o alias tailpor padrão se você instalar o PSCX.

informação relacionada