about_History — PowerShell 명령 기록 다루기
about_History — PowerShell 명령 기록 다루기
터미널에서 같은 명령을 다시 치다 보면 '어, 아까 뭐였더라' 하는 순간이 꼭 생기죠. PowerShell은 여러분이 입력한 명령을 명령 기록(command history) 에 자동으로 저장해 둡니다. 이 기록은 단순한 로그가 아니라, 방금 했던 작업을 다시 불러오고 재실행할 수 있는 도구예요. 이번 글에서는 이 기록을 조회하고, 다시 실행하고, 관리하는 방법을 함께 살펴볼게요.
본문
짧은 설명
명령 기록에서 명령을 가져와 실행하는 방법을 설명합니다.
자세한 설명
명령 프롬프트에 명령을 입력하면, PowerShell은 그 명령을 명령 기록에 저장합니다. 이 기록을 작업의 흔적으로 활용할 수 있고, 언제든지 기록에서 명령을 다시 불러와 실행할 수도 있어요.
여기서 중요한 점 하나: PowerShell에는 기록 공급자(history provider) 가 두 개 있습니다. 하나는 내장 기록(built-in history) 이고, 다른 하나는 PSReadLine 모듈이 관리하는 기록이에요. 두 기록은 서로 따로 관리되지만, PSReadLine이 로드된 세션에서는 두 기록을 모두 사용할 수 있습니다.
PSReadLine 기록 사용하기
PSReadLine 기록은 모든 PowerShell 세션에서 사용한 명령을 추적합니다. 이 기록은 호스트(host)별로 하나의 중앙 파일에 저장되는데요, 그 파일은 모든 세션에서 사용할 수 있고 지금까지의 모든 과거 기록을 담고 있어요. 세션이 끝나도 기록은 삭제되지 않는다는 점이 특징입니다.
다만 이 기록은 *-History cmdlet으로는 관리할 수 없어요. 자세한 내용은 about_PSReadLine 문서에서 확인할 수 있습니다.
내장 세션 기록 사용하기
내장 기록은 현재 세션에서만 사용한 명령을 추적합니다. 다른 세션에서는 이 기록을 사용할 수 없고, 세션이 끝나면 기록도 함께 삭제돼요.
기록 관련 Cmdlet
PowerShell은 명령 기록을 관리하는 cmdlet 세트를 제공합니다.
| Cmdlet | 별칭 | 설명 |
|---|---|---|
Get-History |
h |
명령 기록을 가져옵니다. |
Invoke-History |
r |
명령 기록의 명령을 실행합니다. |
Add-History |
명령 기록에 명령을 추가합니다. | |
Clear-History |
clhy |
명령 기록에서 명령을 삭제합니다. |
기록 관리를 위한 키보드 단축키
PowerShell 콘솔에서는 다음과 같은 단축키로 명령 기록을 관리할 수 있습니다.
UpArrow— 이전 명령을 표시합니다.DownArrow— 다음 명령을 표시합니다.F7— 명령 기록을 표시합니다.ESC— 기록을 숨깁니다.F8— 명령을 찾습니다. 한 글자 이상 입력한 뒤F8을 누르고, 다시F8을 누르면 다음 항목을 찾아줘요.F9— 기록 ID로 명령을 찾습니다. 기록 ID를 입력한 뒤F9를 누르고, ID를 확인하려면F7을 사용해요.#``Tab— 기록에서**를 검색해 가장 최근 일치 항목을 반환합니다.Tab을 반복해서 누르면 기록의 일치 항목들을 차례로 순환해요.
참고 — 이 키 바인딩은 콘솔 호스트 애플리케이션이 구현한 부분이에요. Visual Studio Code나 Windows Terminal 같은 다른 애플리케이션은 키 바인딩이 다를 수 있습니다. 바인딩은 PSReadLine 모듈로 재정의할 수도 있어요. PSReadLine은 PowerShell 세션을 시작할 때 자동으로 로드되는데, PSReadLine이 로드되면
F7과F9는 어떤 기능에도 바인딩되지 않습니다. PSReadLine은 이에 해당하는 기능을 제공하지 않아요. 자세한 내용은 about_PSReadLine 문서를 참고하세요.
MaximumHistoryCount
$MaximumHistoryCount 기본 설정 변수는 PowerShell이 명령 기록에 저장하는 최대 명령 수를 결정합니다. 기본값은 4096입니다.
예를 들어, 아래 명령은 $MaximumHistoryCount를 100개의 명령으로 낮춥니다.
$MaximumHistoryCount = 100
이 설정을 적용하려면 PowerShell을 다시 시작해야 해요.
새 변수 값을 모든 PowerShell 세션에 적용하려면 이 할당문을 PowerShell 프로필에 추가하세요. 프로필에 대한 자세한 내용은 about_Profiles 문서를 참고해요. $MaximumHistoryCount 기본 설정 변수에 대한 더 자세한 내용은 about_Preference_Variables 문서에서 확인할 수 있습니다.
기록에서 명령의 순서
명령은 입력했을 때가 아니라 실행이 끝났을 때 기록에 추가됩니다. 명령을 완료하는 데 시간이 걸리거나, 중첩 프롬프트(nested prompt) 안에서 실행 중인 경우에는 기록에서 명령 순서가 뒤바뀐 것처럼 보일 수 있어요. 중첩 프롬프트에서 실행 중인 명령은 프롬프트 단계를 빠져나갈 때 완료됩니다.