
¿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 filename
en PowerShell?
Respuesta1
A partir de PowerShell 3, el cmdlet Get-Content
(alias gc
) admite parámetros -Tail
y -Wait
se 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-FileTail
comando que tiene un -Wait
pará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
Wait
pará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-FileTail
tiene un alias tail
de forma predeterminada si instala PSCX.