Share via


셸에서 탭 완성 사용

PowerShell은 입력을 완료하여 힌트를 제공하고, 검색을 사용하도록 설정하고, 항목 입력 속도를 향상합니다. 명령 이름, 매개 변수 이름, 인수 값 및 파일 경로는 모두 Tab 키를 눌러 완료할 수 있습니다.

Tab 키는 Windows의 기본 키 바인딩입니다. 또한 PSReadLineCtrl+Space에 바인딩된 MenuComplete 함수를 제공합니다. MenuComplete 함수는 명령줄 아래에 일치하는 완료 목록을 표시합니다.

이러한 키 바인딩은 PSReadLine cmdlet 또는 PowerShell을 호스팅하는 애플리케이션을 사용하여 변경할 수 있습니다. 키 바인딩은 비 Windows 플랫폼에서 다를 수 있습니다. 자세한 내용은 about_PSReadLine_Functions를 참조하세요.

기본 제공 탭 완성 기능

PowerShell은 명령줄 환경의 여러 측면에 대해 탭 완성을 사용하도록 설정했습니다.

파일 이름 완성

사용 가능한 선택 항목에서 파일 이름 또는 경로를 자동으로 입력하려면 이름의 일부를 입력하고 Tab 키를 누릅니다. PowerShell은 첫 번째로 찾은 일치 항목으로 이름을 자동 확장합니다. Tab 키를 다시 누르면 각 키를 눌러 사용 가능한 모든 선택 항목을 순환합니다.

명령 및 매개 변수 이름 완성

cmdlet 이름의 탭 확장은 약간 다릅니다. cmdlet 이름에 대해 탭 확장을 사용하려면 이름의 첫 번째 부분(즉, 동사) 전체와 하이픈을 차례로 입력합니다. 부분 일치 항목의 이름을 더 입력할 수 있습니다. 예를 들어 get-co를 입력한 다음, Tab 키를 누르면 PowerShell이 이를 자동으로 Get-Command cmdlet으로 확장합니다(이때 문자의 대/소문자도 표준 형식으로 변경됨). Tab 키를 다시 누르면 PowerShell에서 일치하는 다른 cmdlet 이름으로Get-Content만 바꿉니다. 탭 완성은 PowerShell 별칭 및 네이티브 실행 파일을 확인하는 데도 작동합니다.

다음 그래픽에서는 탭 및 메뉴 완성의 예를 보여 줍니다.

탭 및 메뉴 완성 예

기타 탭 완성 기능

PowerShell의 각 새 버전에는 버그를 수정하고 유용성을 향상시키는 탭 완성 기능이 포함되어 있습니다.

PowerShell 7.0

  • 탭 완성은 열거형이거나 형식이 제한된 변수 할당을 확인합니다.
  • 탭 완성은 약식 cmdlet 및 함수를 확장합니다. 예를 들어 i-psdf<tab>Import-PowerShellDataFile를 반환합니다.

PowerShell 7.2

  • 지역화되지 않은 about*주제에 대한 탭 완성 수정
  • 완성 기능에서 위치 매개 변수로 처리되는 스플래팅 수정
  • 설명 기반 도움말 키워드에 대한 완성 기능 추가
  • #requires 문에 대한 완성 기능 추가
  • Format-* cmdlet의 보기 매개 변수에 대한 완성 기능 추가
  • 클래스 기반 인수 완료자에 대한 지원 추가

PowerShell 7.3

  • ValidateScriptAttribute에 대해 지정된 스크립트 블록 내에서 탭 완성 기능을 수정
  • breakcontinue 이후 루프 레이블에 대한 탭 완성 추가
  • 여러 시나리오에서 해시 테이블 완성 개선
    • 매개 변수 스플래팅
    • Invoke-CimMethod에 대한 Arguments 매개 변수
    • Get-WinEvent에 대한 FilterHashtable 매개 변수
    • CIM cmdlet에 대한 Property 매개 변수
    • 멤버 완료 시나리오에서 중복 항목 제거
  • 네트워크 공유에서 슬래시 지원(UNC 경로) 완료
  • 멤버 자동 완성 개선
  • 매개 변수에 대한 열거형보다 ValidateSet 완료 우선 순위 지정
  • 형식 매개 변수를 사용하여 제네릭 메서드에 대한 형식 유추 지원 추가
  • 형식 유추 및 완료 개선
    • ForEach-Object -MemberName에 대한 완료 결과에 메서드가 표시되도록 허용
    • 다음과 같이 void를 반환하는 식에서 완료를 방지([void](""))
    • 클래스 완성이 AST를 기반으로 하는 경우 기본이 아닌 클래스 생성자가 표시되도록 허용

명령 매개 변수의 탭 완성을 향상시키는 다른 방법

기본 제공 탭 확장은 내부 함수인 TabExpansion 또는 TabExpansion2에 의해 제어됩니다. 이러한 함수의 기본 동작을 대체하는 함수 또는 모듈을 만들 수 있습니다. TabExpansion 키워드를 검색하여 PowerShell 갤러리 예제를 찾을 수 있습니다.

매개 변수와 함께 ValidateSet 또는 ArgumentCompletions 특성 사용

ArgumentCompletions 특성을 사용하면 탭 완성 값을 특정 매개 변수에 추가할 수 있습니다. ArgumentCompletions 특성은 ValidateSet와(과) 유사합니다. 두 특성 모두 사용자가 매개 변수 이름 뒤의 Tab 키를 누를 때 표시할 값 목록을 사용합니다. 그러나 ValidateSet와(과) 달리 값의 유효성은 검사되지 않습니다.

자세한 내용은 다음을 참조하세요.

ArgumentCompleter 특성 또는 Register-ArgumentCompleter 매개 변수 사용

인수 완성기는 매개 변수 값에 대한 동적 탭 완성을 제공하는 스크립트 블록 또는 함수입니다.

ArgumentCompleter 특성을 사용하면 매개 변수에 대한 탭 완성 값을 제공하는 함수를 등록할 수 있습니다. 인수 완료자 함수는 ArgumentCompleter 특성이 있는 매개 변수를 포함하는 함수에서 사용할 수 있어야 합니다. 일반적으로 함수는 동일한 스크립트 또는 모듈에 정의됩니다.

자세한 내용은 ArgumentCompleter를 참조하세요.

Register-ArgumentCompleter cmdlet은 지정한 명령에 대해 런타임에 스크립트 블록을 인수 완료자 함수로 등록합니다. 이렇게 하면 스크립트나 모듈 외부 또는 네이티브 명령에 대한 인수 완성자를 정의할 수 있습니다. 자세한 내용은 Register-ArgumentCompleter를 참조하세요.

PSReadLine의 예측 IntelliSense

PSReadLine 2.1.0에는 예측 IntelliSense 기능이 도입되었습니다. 예측 IntelliSense는 PSReadLine 기록의 항목을 기반으로 전체 명령에 대한 제안을 제공합니다.

PSReadLine 2.2.2는 고급 논리를 사용하여 전체 명령에 대한 제안을 제공하는 플러그 인 모듈 지원을 추가하여 예측 IntelliSense의 기능을 확장합니다. Az.Tools.Predictor 모듈은 예측 IntelliSense의 첫 번째 플러그 인이었습니다. Machine Learning을 사용하여 실행할 Azure PowerShell 명령과 사용하려는 매개 변수를 예측합니다.

자세한 내용은 사용을 참조하세요.