Comandos de Windows PowerShell para lograr el comando Tail de Unix
-
tail
en Win 32 para lograr la función de comando Unixtail
-
Windows PowerShell con
Get-Content
para lograr la función de comando Unixtail
-
Windows PowerShell con
Cat
para lograr la función de comando Unixtail
El sistema operativo Unix contiene el comando del sistema operativo tail
. El propósito del programa tail
es mostrar el final de un archivo de texto/datos canalizados.
El resultado esperado son las últimas líneas de un archivo. Se puede variar el número de líneas. El mismo comando se puede usar con más de un archivo a la vez para imprimir la salida estándar.
Además de Unix, el comando tail
admite sistemas tipo Unix y sistemas FreeDOS y MSX-DOS.
En Windows PowerShell, la versión de Windows de una aplicación multiplataforma, se pueden ejecutar comandos de shell de línea de comandos para lograr la automatización en diferentes funcionalidades. Sin embargo, los comandos usados aquí varían de los comandos estándar de secuencias de comandos usados en sistemas similares a Unix.
Hay varias formas aceptables de hacer una función similar a tail
en Windows PowerShell.
tail
en Win 32 para lograr la función de comando Unix tail
Una de las formas comunes de lograr esta funcionalidad sería utilizando el programa tail-f
para Windows PowerShell; Cola para Win32. Realiza un seguimiento de cualquier cambio de archivo y permite al usuario realizar un seguimiento de los cambios en tiempo real. Sin embargo, requiere que los usuarios usen otro programa completamente, disponible a través del enlace: https://tailforwin32.sourceforge.net. Por lo tanto, no es una solución adecuada para un usuario que busca una alternativa específica de PowerShell para el sistema Windows.
Sin embargo, también existen algunas soluciones aceptables basadas en PowerShell para esto.
Windows PowerShell con Get-Content
para lograr la función de comando Unix tail
Una de las más efectivas es usar Get-Content
. Debe seguirse con -Tail n
, siendo n el número de líneas que necesita obtener como salida.
En las versiones anteriores de Windows Power shell, V1 y V2, esta funcionalidad se lograba mediante el comando Get-Content
seguido del comando -Wait
. Si el archivo está cambiando en tiempo real, se usa el comando Wait
para que se pueda rastrear cualquier cambio.
Get-Content .\DummyLogFile.txt
Aquí la salida obtendría el contenido de todo el archivo como se muestra a continuación. Comienza desde las primeras líneas del archivo de registro y continúa hasta el final.
2021-12-31 14:49:47, Info CBS TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info CBS TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info CBS Startup processing thread terminated normally
2021-12-31 14:49:47, Info CBS TI: Startup Processing completes, release startup processing lock.
.
.
Sin embargo, los cambios en tiempo real en la cola del archivo se pueden rastrear cuando se usa con - Wait
.
Get-Content .\DummyLogFile.txt -Wait
Aquí, la salida tendría todos los datos del archivo y esperaría los cambios a continuación.
2021-12-31 14:49:47, Info CBS TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info CBS TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info CBS Startup processing thread terminated normally
2021-12-31 14:49:47, Info CBS TI: Startup Processing completes, release startup processing lock.
_
Más tarde, en las versiones posteriores a la V2 de PowerShell, la V3 admite la palabra clave -Tail
. Por lo tanto, puede obtener una vista previa solo de las últimas líneas requeridas en lugar de obtener el archivo completo.
Get-Content .\DummyLogFile.txt -Tail 4
El resultado dado son las últimas cuatro líneas del texto dado. 4 es un valor variable de n, siguiendo el comando tail para incluir el número de líneas de cola a continuación.
C:\Users> Get-Content .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info CBS Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info CBS Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info CBS Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info CBS Ending TrustedInstaller finalization.
PS C:\Users>
Cuando el usuario requiere datos en tiempo real, como en un archivo de registro, un archivo en constante cambio, es posible agregar el comando -Wait
. Cuando se agregan nuevas últimas líneas, la salida se actualiza para imprimir cualquier línea nueva.
PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4
La salida esperaría cambios.
Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info CBS Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info CBS Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info CBS Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info CBS Ending TrustedInstaller finalization.
Sin embargo, cuando usa -wait
con un valor de cola mayor, deja que el sistema espere en un archivo que cambia constantemente, como un archivo de registro. Da como resultado que se produzca un gran consumo de memoria. Por lo tanto, es importante tener en cuenta el tipo de archivo que utiliza junto con los comandos -wait
-tail
.
Windows PowerShell con Cat
para lograr la función de comando Unix tail
Sería conveniente para los usuarios que están más familiarizados con los sistemas tipo Unix utilizar el comando cat
.
PS C:\Users> cat .\DummyLogFile.txt
El uso del comando cat solo generaría o imprimiría el contenido del archivo de texto, similar a Get-Content
solamente.
2021-12-31 14:49:47, Info CBS TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info CBS TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info CBS Startup processing thread terminated normally
2021-12-31 14:49:47, Info CBS TI: Startup Processing completes, release startup processing lock.
...
Sin embargo, usar cat
con el comando -Tail n
(siendo n el número de líneas finales requeridas en la salida) proporcionaría una salida similar al comando tail en Unix.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4
La salida del código sería la siguiente.
C:\Users> cat .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info CBS Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info CBS Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info CBS Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info CBS Ending TrustedInstaller finalization.
PS C:\Users>
Cuando sea necesario, el comando cat
también se puede usar con el comando Wait
para rastrear los cambios en tiempo real en los archivos de texto, como archivos de registro en un sistema.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait
Por lo tanto, se daría la salida y el sistema espera cualquier cambio en el archivo o archivos dados. Luego, PowerShell imprimiría esas líneas de colas de archivo modificadas como salida.
Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info CBS Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info CBS Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info CBS Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info CBS Ending TrustedInstaller finalization.
_
Linux tail
se usa con mayor frecuencia para rastrear diferentes archivos de registro en Linux y sistemas similares a Linux. Por lo tanto, se requiere que PowerShell, que permite a los usuarios de Windows ejecutar scripts de línea de comandos para lograr ciertas funciones similares, tenga dicha funcionalidad.
En las versiones más recientes de PowerShell, el comando tail
se usa junto con los comandos Get-Content
o cat
descritos anteriormente, y el comando wait
se usa para rastrear cualquier cambio en tiempo real.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.