¿Un comando como Linux `tail` en PowerShell?

¿Un comando como Linux `tail` en PowerShell?

¿Cómo puedo replicar el comportamiento de la cola de Linux en PowerShell?

Estoy ejecutando una aplicación que escribe un archivo de registro ( error.log) y me gustaría ver las últimas líneas del mismo, así como mantener la consola actualizando los cambios.

Entonces, ¿existe un equivalente de algo así tail -f filenameen PowerShell?

Respuesta1

A partir de PowerShell 3, el cmdlet Get-Content(alias gc) admite parámetros -Taily -Waitse utiliza en un sistema de archivos. Búscalo con help gc.

Respuesta2

El equivalente nativo de PS desde PSv3 es

Get-Content -Last n

que también es rápido. En PSv2 y versiones inferiores tienes que conformarte con

Get-Content filename | Select -Last n

pero eso tiene varias salvedades. No puede bloquear y esperar nuevos cambios en el archivo, por ejemplo, y tampoco es muy eficiente porque tiene que leer el archivo desde el principio por completo antes de poder mostrar las últimas líneas.

PSCXtiene un Get-FileTailcomando que tiene un -Waitparámetro:

Nombre

Get-FileTail

Sinopsis

Cmdlet PSCX: sigue el contenido de un archivo; opcionalmente, espera contenido nuevo.

Sintaxis

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

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

Descripción

Esta implementación sigue de manera eficiente el contenido de un archivo leyendo las líneas desde el final en lugar de procesar todo el archivo. Este comportamiento es crucial para seguir de manera eficiente archivos de registro de gran tamaño y archivos de registro de gran tamaño en una red. También puede especificar el Waitparámetro para que el cmdlet espere y muestre contenido nuevo a medida que se escribe en el archivo. Utilice Ctrl+ Cpara salir del ciclo de espera. Tenga en cuenta que si no se especifica una codificación, el cmdlet intentará detectar automáticamente la codificación leyendo el primer carácter del archivo. Si aún no se ha escrito ningún carácter en el archivo, el cmdlet utilizará de forma predeterminada la codificación Unicode. Puede anular este comportamiento especificando explícitamente la codificación mediante el parámetro Codificación.

Get-FileTailtiene un alias tailde forma predeterminada si instala PSCX.

información relacionada