Comandos do PowerShell do Windows para alcançar o comando Unix Tail

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

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.