별칭(Alias) — 명령어에 짧은 별명 붙이기
별칭(Alias) — 명령어에 짧은 별명 붙이기 (about_Aliases)
PowerShell에서 자주 쓰는 명령어는 이름이 길 때가 많아요. 그럴 때마다 전체 이름을 매번 타이핑하기보다, 짧은 별명을 붙여 두고 편하게 부르고 싶을 때가 있죠. PowerShell은 바로 그런 용도로 **별칭(alias)**이라는 기능을 제공해요. 이 문서에서는 별칭이 무엇인지, 어떻게 만들고 저장하고 활용하는지 차근차근 살펴볼게요.
출처: about_Aliases
본문
짧은 설명
PowerShell에서 cmdlet과 명령어에 쓸 수 있는 대체 이름(별명)을 다루는 문서예요.
자세한 설명
별칭(alias)은 cmdlet이나 명령 요소(함수, 스크립트, 파일, 실행 파일)에 붙이는 또 다른 이름, 일종의 별명이에요. 어떤 PowerShell 명령에서든 명령어 이름 대신 별칭을 사용할 수 있죠.
별칭을 만들려면 New-Alias cmdlet을 사용해요. 예를 들어 다음 명령은 Get-AuthenticodeSignature cmdlet에 gas라는 별칭을 만들어 주죠.
New-Alias -Name gas -Value Get-AuthenticodeSignature
별칭을 만든 뒤에는 cmdlet 이름 대신 별칭을 쓸 수 있어요. 예를 들어 SqlScript.ps1 파일의 Authenticode 서명을 얻으려면 다음과 같이 입력해요.
Get-AuthenticodeSignature SqlScript.ps1
또는 이렇게요.
gas SqlScript.ps1
Microsoft Office Word에 word라는 별칭을 만든다면, 아래처럼 긴 경로를 반복해서 입력하는 대신 "word"만 입력해도 돼요.
"C:\Program Files\Microsoft Office\Office11\Winword.exe"
기본 제공 별칭
PowerShell에는 기본 제공 별칭 세트가 들어 있어요. Set-Location cmdlet의 cd와 chdir, Get-ChildItem cmdlet의 ls, 그리고 Windows용 dir과 Linux·macOS용 dir이 대표적이죠.
컴퓨터에 있는 모든 별칭(기본 제공 별칭 포함)을 보려면 다음을 입력해요.
Get-Alias
별칭 관련 cmdlet
PowerShell에는 별칭 작업을 위해 설계된 cmdlet들이 따로 있어요.
Get-Alias— 현재 세션의 모든 별칭을 가져와요.New-Alias— 새 별칭을 만들어요.Set-Alias— 별칭을 만들거나 변경해요.Remove-Alias— 별칭을 삭제해요.Export-Alias— 별칭 하나 이상을 파일로 내보내요.Import-Alias— 별칭 파일을 PowerShell로 가져와요.
각 cmdlet에 대한 자세한 정보는 다음처럼 입력해요.
Get-Help <cmdlet-Name> -Detailed
예를 들어 이렇게요.
Get-Help Export-Alias -Detailed
별칭 만들기
새 별칭을 만들려면 New-Alias cmdlet을 사용해요. 예를 들어 Get-Help에 gh 별칭을 만들려면 다음과 같이 입력하면 돼요.
New-Alias -Name gh -Value Get-Help
별칭은 전체 cmdlet 이름처럼 명령에서 쓸 수 있고, 매개변수와 함께 쓸 수도 있어요. 예를 들어 Get-CimInstance cmdlet의 자세한 도움말을 보려면 다음 중 아무거나 입력해요.
Get-Help Get-CimInstance -Detailed
gh Get-CimInstance -Detailed
별칭 저장하기
주의할 점이 하나 있어요. 만든 별칭은 현재 세션에만 저장돼요. 다른 세션에서도 같은 별칭을 쓰고 싶다면 PowerShell 프로필(profile)에 별칭을 추가하거나, Export-Alias cmdlet으로 파일에 저장해 두면 되죠.
자세한 내용은 다음을 입력해요.
Get-Help about_Profiles
별칭 가져오기
현재 세션의 모든 별칭(기본 제공 별칭, PowerShell 프로필의 별칭, 현재 세션에서 직접 만든 별칭 포함)을 보려면 Get-Alias를 입력해요.
Get-Alias
특정 별칭만 보고 싶다면 Get-Alias cmdlet의 Name 매개변수를 사용해요. 예를 들어 "p"로 시작하는 별칭을 보려면 이렇게요.
Get-Alias -Name p*
특정 항목의 별칭을 알고 싶다면 Definition 매개변수를 써요. 예를 들어 Get-ChildItem cmdlet의 별칭을 보려면 다음처럼 입력해요.
Get-Alias -Definition Get-ChildItem
Get-Alias 출력
Get-Alias는 한 가지 형식의 개체, 즉 System.Management.Automation.AliasInfo 개체만 반환해요. cd처럼 하이픈이 없는 별칭은 다음과 같은 형식으로 표시돼요.
Get-Alias ac
CommandType Name Version Source
----------- ---- ------- ------
Alias ac -> Add-Content
이 덕분에 필요한 정보를 아주 빠르고 쉽게 얻을 수 있어요.
한 가지 알아둘 점은, 하이픈이 포함된 별칭에는 화살표 기반의 이름 형식이 사용되지 않아요. 그런 별칭은 평범한 축약어나 별명이라기보다 cmdlet·함수의 선호하는 대체 이름일 가능성이 높아서, 작성자가 지나치게 눈에 띄기를 원하지 않기 때문이에요.
매개변수가 있는 명령의 대체 이름
별칭을 지정할 수 있는 대상은 cmdlet, 스크립트, 함수, 실행 파일이에요. 그런데 명령과 그 매개변수를 통째로 별칭으로 지정할 수는 없어요. 예를 들어 Get-Eventlog cmdlet에는 별칭을 붙일 수 있지만, Get-Eventlog -LogName System 명령에는 붙일 수 없죠.
이럴 땐 명령을 포함한 함수를 만들면 해결돼요. "function"이라는 단어 다음에 함수 이름을 쓰고, 명령을 중괄호 {}로 감싸면 됩니다. 예를 들어 다음 명령은 Get-Eventlog -LogName System 명령을 나타내는 syslog 함수를 만들어요.
function Get-SystemEventlog {Get-Eventlog -LogName System}
Set-Alias -Name syslog -Value Get-SystemEventlog
이제 명령 대신 "syslog"를 입력할 수 있어요. 그리고 새 함수에 대한 별칭도 또 만들 수 있죠.
함수에 대한 자세한 내용은 다음을 입력해요.
Get-Help about_Functions
별칭 개체
PowerShell 별칭은 System.Management.Automation.AliasInfo 클래스의 인스턴스인 개체로 표현돼요. 이 개체 형식에 대한 자세한 내용은 PowerShell SDK의 AliasInfo Class를 참고해요.
별칭 개체의 속성과 메서드를 보려면 별칭을 가져와 Get-Member cmdlet으로 파이프하면 돼요.
Get-Alias | Get-Member
특정 별칭(예: dir 별칭)의 속성 값을 보려면 별칭을 가져와 Format-List cmdlet으로 파이프해요. 다음 명령은 dir 별칭을 가져온 뒤 Format-List cmdlet으로 파이프하고, Property 매개변수에 와일드카드 문자(*)를 사용해 dir 별칭의 모든 속성을 표시해요.
Get-Alias -Name dir | Format-List -Property *
PowerShell Alias 공급자
PowerShell에는 **Alias 공급자(provider)**도 포함돼 있어요. 이 공급자를 쓰면 별칭을 마치 파일 시스템 드라이브처럼 볼 수 있죠.
Alias 공급자는 Alias: 드라이브를 노출해요. Alias: 드라이브로 들어가려면 이렇게요.
Set-Location Alias:
드라이브의 내용을 보려면 다음을 입력해요.
Get-ChildItem
다른 PowerShell 드라이브에서 이 드라이브의 내용을 보려면 경로를 드라이브 이름으로 시작하고 콜론(:)을 포함해요. 예를 들어:
Get-ChildItem -Path Alias:
특정 별칭에 대한 정보를 얻으려면 드라이브 이름과 별칭 이름을 입력하거나 이름 패턴을 입력해요. 예를 들어 "p"로 시작하는 모든 별칭을 보려면 이렇게요.
Get-ChildItem -Path Alias:p*
Alias 공급자에 대한 자세한 내용은 다음을 입력해요.
Get-Help Alias