Comandi di Windows PowerShell per raggiungere il comando Unix Tail

  1. tail in Win 32 per ottenere la funzione del comando tail di Unix
  2. Windows PowerShell con Get-Content per ottenere la funzione del comando tail di Unix
  3. Windows PowerShell con Cat per ottenere la funzione del comando tail di Unix
Comandi di Windows PowerShell per raggiungere il comando Unix Tail

Il sistema operativo Unix contiene il comando OS tail. Lo scopo del programma tail è visualizzare la parte finale di un file di testo/dati pipe.

L’output atteso è le ultime righe di un file. Il numero di righe può variare. Lo stesso comando può essere utilizzato con più di un file contemporaneamente per stampare l’output standard.

Oltre a Unix, il comando tail supporta i sistemi simili a Unix e i sistemi FreeDOS e MSX-DOS.

In Windows PowerShell, la versione Windows di un’applicazione multipiattaforma, è possibile eseguire comandi della shell a riga di comando per ottenere automazione in diverse funzionalità. Tuttavia, i comandi utilizzati qui variano dai comandi di scripting standard utilizzati nei sistemi simili a Unix.

Ci sono diversi modi accettabili per fare una funzione simile a tail in Windows PowerShell.

tail in Win 32 per ottenere la funzione del comando tail di Unix

Uno dei modi più comuni per ottenere questa funzionalità è utilizzare il programma tail-f per Windows PowerShell; Tail per Win32. Tieni traccia di qualsiasi cambiamento del file e consente all’utente di monitorare le modifiche in tempo reale. Tuttavia, richiede agli utenti di utilizzare un altro programma interamente, disponibile tramite il link: http://tailforwin32.sourceforge.net. Pertanto, non è una soluzione adatta per un utente che cerca un’alternativa specifica di PowerShell per il sistema Windows.

Tuttavia, ci sono anche alcune soluzioni accettabili basate su PowerShell per questo.

Windows PowerShell con Get-Content per ottenere la funzione del comando tail di Unix

Uno dei più efficaci è utilizzare Get-Content. Deve essere seguito da -Tail n, n essendo il numero di righe che è necessario ottenere come output.

Nelle versioni precedenti di Windows PowerShell, V1 e V2, questa funzionalità è stata ottenuta tramite il comando Get-Content seguito dal comando -Wait. Se il file sta cambiando in tempo reale, il comando Wait viene utilizzato in modo che eventuali modifiche possano essere monitorate.

Get-Content .\DummyLogFile.txt

Qui l’output ottiene il contenuto dell’intero file come mostrato di seguito. Inizia dalle prime righe del file di log e continua fino alla fine.

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.
.
.

Tuttavia, le modifiche in tempo reale della coda del file possono essere monitorate quando utilizzato con - Wait.

Get-Content .\DummyLogFile.txt -Wait

Qui, l’output avrebbe tutti i dati del file e attendere le modifiche di seguito.

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.
_

Successivamente, nelle versioni successive alla V2 di PowerShell, la V3 supporta la parola chiave -Tail. Pertanto, puoi visualizzare solo le ultime righe richieste anziché ottenere l’intero file.

 Get-Content .\DummyLogFile.txt -Tail 4

L’output fornito sono le ultime quattro righe del testo fornito. 4 è un valore variabile di n, che segue il comando tail per includere il numero di righe di coda di seguito.

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 l’utente richiede dati in tempo reale, come in un file di log, un file in costante cambiamento, è possibile aggiungere il comando -Wait. Quando vengono aggiunte nuove ultime righe, l’output viene aggiornato per stampare eventuali nuove righe.

PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4

L’output aspetterebbe cambiamenti.

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.

Tuttavia, quando utilizzi -wait con un valore di coda più grande, consenti al sistema di attendere in un file in costante cambiamento come un file di log. Ciò comporta un grande consumo di memoria. Pertanto, è importante prestare attenzione al tipo di file con cui si utilizzano i comandi -wait e -tail insieme.

Windows PowerShell con Cat per ottenere la funzione del comando tail di Unix

Sarebbe conveniente per gli utenti che sono più familiari con i sistemi simili a Unix utilizzare il comando cat.

PS C:\Users> cat .\DummyLogFile.txt

Utilizzando solo il comando cat si otterrebbe o stamperebbe il contenuto del file di testo, simile solo a Get-Content.

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.
 ...

Tuttavia, utilizzare cat con il comando -Tail n (n essendo il numero di ultime righe richieste nell’output) fornirebbe un output simile al comando tail in Unix.

PS C:\Users> cat .\DummyLogFile.txt -Tail 4

L’output del codice sarebbe il seguente.

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 necessario, il comando cat può essere utilizzato anche con il comando Wait per monitorare le modifiche in tempo reale ai file di testo, come i file di log in un sistema.

PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait

Pertanto, l’output sarebbe fornito e il sistema aspetta eventuali modifiche nel file/file forniti. Quindi quelle righe di coda di file cambiate verrebbero stampate da PowerShell come output.

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.
_

Il tail di Linux è più spesso utilizzato per monitorare diversi file di log in Linux e nei sistemi simili a Linux. Pertanto, PowerShell, che consente agli utenti Windows di eseguire script da riga di comando per ottenere determinate funzioni simili, deve avere tale funzionalità.

Nelle versioni più recenti di PowerShell, il comando tail viene utilizzato insieme ai comandi Get-Content o cat descritti sopra e il comando wait è utilizzato per monitorare eventuali modifiche in tempo reale.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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.