Comandos do PowerShell do Windows para alcançar o comando Unix Tail
-
tail
no Win 32 para alcançar a função do comandotail
do Unix -
Windows PowerShell com
Get-Content
para alcançar a função do comandotail
do Unix -
Windows PowerShell com
Cat
para alcançar a função do comandotail
do Unix

O sistema operacional Unix contém o comando OS tail
. O objetivo do programa tail
é exibir a parte final de um arquivo de texto/dados encadeados.
A saída esperada são as últimas linhas de um arquivo. O número de linhas pode variar. O mesmo comando pode ser usado com mais de um arquivo ao mesmo tempo para imprimir a saída padrão.
Além do Unix, o comando tail
suporta Sistemas semelhantes ao Unix e sistemas FreeDOS e MSX-DOS.
No Windows PowerShell, a versão Windows de um aplicativo multiplataforma, comandos de shell de linha de comando podem ser executados para alcançar automação em diferentes funcionalidades. No entanto, os comandos usados aqui variam dos comandos de script padrão utilizados em sistemas semelhantes ao Unix.
Existem várias maneiras aceitáveis de realizar uma função semelhante ao tail
no Windows PowerShell.
tail
no Win 32 para alcançar a função do comando tail
do Unix
Uma das maneiras comuns de alcançar essa funcionalidade seria usando o programa tail-f
para o Windows PowerShell; Tail para Win32. Ele rastreia quaisquer alterações em arquivos e permite que o usuário acompanhe as mudanças em tempo real. No entanto, requer que os usuários usem outro programa completamente, disponível através do link: http://tailforwin32.sourceforge.net. Portanto, não é uma solução adequada para um usuário que está buscando uma alternativa específica do PowerShell para o Sistema Windows.
No entanto, existem algumas soluções baseadas em PowerShell aceitáveis para isso também.
Windows PowerShell com Get-Content
para alcançar a função do comando tail
do Unix
Uma das maneiras mais eficazes é usar Get-Content
. Deve ser seguido com -Tail n
, onde n é o número de linhas que você precisa obter como saída.
Nas versões anteriores do Windows PowerShell, V1 e V2, essa funcionalidade era alcançada através do comando Get-Content
seguido pelo comando -Wait
. Se o arquivo estiver mudando em tempo real, o comando Wait
é usado para que quaisquer alterações possam ser rastreadas.
Get-Content .\DummyLogFile.txt
Aqui, a saída obteria o conteúdo de todo o arquivo como mostrado abaixo. Começa das primeiras linhas do arquivo de log e continua até o 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.
.
.
No entanto, as alterações em tempo real do tail do arquivo podem ser rastreadas quando usadas com -Wait
.
Get-Content .\DummyLogFile.txt -Wait
Aqui, a saída teria todos os dados do arquivo e esperaria pelas alterações abaixo.
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.
_
Mais tarde, nas versões seguintes à V2 do PowerShell, a V3 suporta a palavra-chave -Tail
. Portanto, você pode visualizar apenas as últimas linhas necessárias em vez de obter o arquivo inteiro.
Get-Content .\DummyLogFile.txt -Tail 4
A saída dada são as últimas quatro linhas do texto fornecido. 4 é um valor variável de n, seguindo o comando tail para incluir o número de linhas de tail abaixo.
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>
Quando o usuário requer dados em tempo real, como em um arquivo de log, um arquivo que muda constantemente, é possível adicionar o comando -Wait
. Quando novas últimas linhas são adicionadas, a saída é atualizada para imprimir quaisquer novas linhas.
PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4
A saída esperaria por alterações.
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.
No entanto, quando você usa -wait
com um valor de tail maior, você deixa o sistema esperar em um arquivo que muda constantemente, como um arquivo de log. Isso resulta em um grande consumo de memória. Portanto, é importante ter cuidado sobre o tipo de arquivo que você usa os comandos -wait
e -tail
juntos.
Windows PowerShell com Cat
para alcançar a função do comando tail
do Unix
Seria conveniente para usuários que estão mais familiarizados com sistemas semelhantes ao Unix usar o comando cat
.
PS C:\Users> cat .\DummyLogFile.txt
Usar apenas o comando cat apenas exibiria ou imprimirá o conteúdo do arquivo de texto, semelhante ao Get-Content
apenas.
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.
...
No entanto, usar cat
com o comando -Tail n
(n sendo o número de linhas finais necessárias na saída) forneceria uma saída semelhante ao comando tail no Unix.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4
A saída do código seria a seguinte.
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>
Quando necessário, o comando cat
também pode ser usado com o comando Wait
para rastrear as alterações em tempo real nos arquivos de texto, como arquivos de log em um sistema.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait
Portanto, a saída seria dada, e o sistema espera por quaisquer alterações no arquivo/arquivos dados. Então, aquelas linhas de tail de arquivo alteradas seriam impressas pelo PowerShell como a saída.
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.
_
O tail
do Linux é mais frequentemente usado para rastrear diferentes arquivos de log no Linux e em sistemas semelhantes ao Linux. Portanto, o PowerShell, que permite que os usuários do Windows executem scripts de linha de comando para alcançar certas funções semelhantes, precisa ter tal funcionalidade.
Nas versões mais novas do PowerShell, o comando tail
é usado juntamente com os comandos Get-Content
ou cat
descritos acima, e o comando wait
é usado para rastrear quaisquer mudanças em tempo 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.