Windows PowerShell 명령어로 Unix Tail 명령어 구현하기
-
Win 32의
tail
을 사용하여tail
유닉스 명령 기능 달성 -
Get-Content
로 Windows PowerShell에서tail
유닉스 명령 기능 달성 -
cat
으로 Windows PowerShell에서tail
유닉스 명령 기능 달성

유닉스 운영 체제에는 OS 명령어 tail
이 포함되어 있습니다. tail
프로그램의 목적은 텍스트 파일 또는 파이프 데이터의 끝 부분을 표시하는 것입니다.
예상 출력은 파일의 마지막 줄입니다. 줄 수는 다양할 수 있습니다. 동일한 명령을 여러 파일과 함께 사용하여 표준 출력을 인쇄할 수 있습니다.
유닉스 외에도 tail
명령은 유닉스 유사 시스템, FreeDOS 및 MSX-DOS 시스템을 지원합니다.
Windows PowerShell에서는 크로스 플랫폼 애플리케이션의 Windows 버전에서 명령줄 셸 명령을 실행하여 다양한 기능에서 자동화를 달성할 수 있습니다. 그러나 여기에 사용된 명령은 유닉스 유사 시스템에서 사용되는 표준 스크립팅 명령과 다릅니다.
Windows PowerShell에서 tail
과 유사한 기능을 수행하는 몇 가지 수용 가능한 방법이 있습니다.
Win 32의 tail
을 사용하여 tail
유닉스 명령 기능 달성
이 기능을 달성하는 일반적인 방법 중 하나는 Windows PowerShell용 tail-f
프로그램인 Tail for Win32를 사용하는 것입니다. 이는 파일 변경 사항을 추적하고 사용자가 실시간으로 변경 사항을 추적할 수 있도록 합니다. 그러나 사용자는 전체적으로 다른 프로그램을 사용해야 하며, 아래 링크를 통해 사용할 수 있습니다: http://tailforwin32.sourceforge.net. 따라서 Windows 시스템을 위한 PowerShell 전용 대안을 찾고 있는 사용자에게는 적합한 솔루션이 아닙니다.
하지만 이와 관련된 몇 가지 수용 가능한 PowerShell 기반 솔루션도 있습니다.
Get-Content
로 Windows PowerShell에서 tail
유닉스 명령 기능 달성
가장 효과적인 방법 중 하나는 Get-Content
를 사용하는 것입니다. 이어서 -Tail n
을 사용하며, 여기서 n은 출력으로 받아야 할 줄 수입니다.
Windows PowerShell의 초기 버전인 V1 및 V2에서는 이 기능이 Get-Content
명령 뒤에 -Wait
명령을 추가하여 달성되었습니다. 파일이 실시간으로 변경되고 있는 경우, 변경 사항을 추적할 수 있도록 Wait
명령이 사용됩니다.
Get-Content .\DummyLogFile.txt
여기서 출력은 아래와 같이 전체 파일의 내용을 가져옵니다. 로그 파일의 첫 번째 줄부터 시작하여 끝까지 계속됩니다.
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.
.
.
하지만 - Wait
와 함께 사용할 때 파일 테일에 대한 실시간 변경 사항을 추적할 수 있습니다.
Get-Content .\DummyLogFile.txt -Wait
여기서 출력은 모든 파일 데이터를 가지고 있으며 변경 사항을 기다립니다.
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.
_
PowerShell의 V2 이후 버전에서 V3는 -Tail
키워드를 지원합니다. 따라서 전체 파일을 가져오는 대신에 필요한 마지막 줄만 미리 볼 수 있습니다.
Get-Content .\DummyLogFile.txt -Tail 4
주어진 출력은 텍스트의 마지막 네 줄입니다. 4는 tail 명령을 따라 아래에 포함될 tail 줄 수의 변수 값입니다.
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>
사용자가 로그 파일과 같이 실시간 데이터를 요구할 때, 지속적으로 변경되는 파일에서 -Wait
명령을 추가하는 것이 가능합니다. 새 마지막 줄이 추가되면 출력이 새 줄을 인쇄하도록 업데이트됩니다.
PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4
출력은 변경 사항을 기다릴 것입니다.
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.
그러나 -wait
를 더 큰 tail 값과 함께 사용하면 로그 파일과 같은 지속적으로 변경되는 파일에서 시스템이 대기하게 됩니다. 이로 인해 메모리 소모가 발생할 수 있습니다. 따라서 -wait
및 -tail
명령을 함께 사용할 때 사용하는 파일의 유형에 주의하는 것이 중요합니다.
cat
으로 Windows PowerShell에서 tail
유닉스 명령 기능 달성
유닉스 유사 시스템에 더 익숙한 사용자에게는 cat
명령을 사용하는 것이 편리합니다.
PS C:\Users> cat .\DummyLogFile.txt
cat 명령만 사용하면 텍스트 파일의 내용을 출력하거나 인쇄하게 되며, 이는 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.
...
그러나 -Tail n
명령 (n은 출력에서 필요한 마지막 줄 수)과 함께 cat
을 사용하면 유닉스의 tail 명령과 유사한 출력을 제공합니다.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4
코드의 출력은 다음과 같습니다.
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>
필요할 경우 cat
명령은 시스템의 로그 파일과 같은 텍스트 파일의 실시간 변경 사항을 추적하기 위해 Wait
명령과 함께 사용될 수도 있습니다.
PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait
따라서 출력은 제공되며 시스템은 주어진 파일/파일의 변경 사항을 기다립니다. 그러면 변경된 파일의 tail 줄이 PowerShell에 의해 출력으로 인쇄됩니다.
리눅스의 tail
은 리눅스 및 리눅스 유사 시스템에서 다양한 로그 파일을 추적하는 데 가장 자주 사용됩니다. 따라서 Windows 사용자에게 특정 유사 기능을 달성하기 위해 명령줄 스크립트를 실행할 수 있게 해주는 PowerShell은 이러한 기능을 가질 필요가 있습니다.
더 새로운 PowerShell 버전에서는 tail
명령이 위에서 설명한 Get-Content
또는 cat
명령과 함께 사용되며, wait
명령은 실시간 변경 사항을 추적하는 데 사용됩니다.
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.