about_History — PowerShell 명령 기록 다루기

about_History — PowerShell 명령 기록 다루기

터미널에서 같은 명령을 다시 치다 보면 '어, 아까 뭐였더라' 하는 순간이 꼭 생기죠. PowerShell은 여러분이 입력한 명령을 명령 기록(command history) 에 자동으로 저장해 둡니다. 이 기록은 단순한 로그가 아니라, 방금 했던 작업을 다시 불러오고 재실행할 수 있는 도구예요. 이번 글에서는 이 기록을 조회하고, 다시 실행하고, 관리하는 방법을 함께 살펴볼게요.

출처: Microsoft Learn — about_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이 로드되면 F7F9는 어떤 기능에도 바인딩되지 않습니다. PSReadLine은 이에 해당하는 기능을 제공하지 않아요. 자세한 내용은 about_PSReadLine 문서를 참고하세요.

MaximumHistoryCount

$MaximumHistoryCount 기본 설정 변수는 PowerShell이 명령 기록에 저장하는 최대 명령 수를 결정합니다. 기본값은 4096입니다.

예를 들어, 아래 명령은 $MaximumHistoryCount를 100개의 명령으로 낮춥니다.

$MaximumHistoryCount = 100

이 설정을 적용하려면 PowerShell을 다시 시작해야 해요.

새 변수 값을 모든 PowerShell 세션에 적용하려면 이 할당문을 PowerShell 프로필에 추가하세요. 프로필에 대한 자세한 내용은 about_Profiles 문서를 참고해요. $MaximumHistoryCount 기본 설정 변수에 대한 더 자세한 내용은 about_Preference_Variables 문서에서 확인할 수 있습니다.

기록에서 명령의 순서

명령은 입력했을 때가 아니라 실행이 끝났을 때 기록에 추가됩니다. 명령을 완료하는 데 시간이 걸리거나, 중첩 프롬프트(nested prompt) 안에서 실행 중인 경우에는 기록에서 명령 순서가 뒤바뀐 것처럼 보일 수 있어요. 중첩 프롬프트에서 실행 중인 명령은 프롬프트 단계를 빠져나갈 때 완료됩니다.

더 알아보기