PowerShell 디렉터리 변경: 파일 시스템 탐색

Windows에서 디렉터리를 변경하는 것은 파일 관리의 기본 요소입니다. 그러나 방문하는 각 디렉터리의 전체 경로를 작성하는 것으로 충분할까요? 다행히도 PowerShell 디렉터리 변경 명령을 사용하면 쉽게 할 수 있습니다.

이 튜토리얼에서는 PowerShell에서 디렉터리를 변경하는 데 사용할 수 있는 명령어를 탐색하여 파일 시스템을 쉽게 탐색하는 데 도움이 되는 방법을 알아볼 것입니다.

계속 읽고 오늘부터 PowerShell을 사용하여 파일 시스템 탐색의 기본 사항을 마스터하세요!

사전 요구 사항

이 튜토리얼은 실습을 위한 것입니다. 따라하기 위해 PowerShell이 설치된 Windows 시스템이 있어야 합니다. 이 튜토리얼은 Windows 10과 PowerShell v7을 사용합니다.

다른 드라이브로 전환하기

각 저장 장치인 하드 디스크나 USB 드라이브는 드라이브 문자 (예: C:, D:, E:, … Z:)로 할당됩니다. PowerShell 창을 열면 기본적으로 현재 드라이브의 사용자 프로필 디렉터리에 프롬프트가 표시됩니다.

현재 사용 중인 드라이브와 다른 드라이브에 저장된 파일이나 폴더에 자주 액세스해야 하는 경우 다른 드라이브로 전환해야 합니다.

다른 드라이브로 전환하는 방법을 확인하려면:

1. PowerShell을 열고 프롬프트가 C:\Users\admin.와 같은지 확인합니다. 그렇다면 현재 C: 드라이브의 admin 사용자의 프로필 디렉터리에 있습니다.

Viewing the default working drive

2. 다음으로, 다른 PowerShell 세션을 열되, 이번에는 관리자로 엽니다.

아래에서 프롬프트는 일반 사용자로 PowerShell을 시작하는 것과는 다른 기본 디렉터리에서 시작합니다. 구체적으로, 프롬프트는 현재 드라이브(C:)의 Windows 디렉터리 내의 System32 디렉터리에서 시작합니다.

이 기본 동작은 비 관리자 사용자가 실수로 중요한 시스템 파일을 수정하거나 민감한 도구를 실행하는 것을 방지합니다.

Viewing the default working drive as an admin

3. 현재 드라이브를 D: (또는 사용 가능한 드라이브로) 변경하려면 아래 명령을 실행합니다. 이 구문은 PowerShell에서 다른 드라이브로 이동하는 빠른 방법입니다.

D:

이 방법으로 드라이브를 전환하면 프롬프트가 새 드라이브의 루트 디렉터리로 변경됩니다. 아래 출력과 같습니다.

보시다시피, PowerShell이 시작하는 기본 디렉터리에 관계없이 다른 드라이브로 전환할 수 있습니다.

Switching to another drive

4. 이제 아래 명령을 실행하여 D:\Kitty 디렉터리 (또는 다른 하위 디렉터리)로 전환을 시도합니다.

D:\Kitty

아래와 같은 오류를 받으셨나요? 이 오류는 이 방법으로는 한 번에 하위 디렉토리(D:\Kitty와 같은)로 전환할 수 없기 때문에 발생합니다.

하위 디렉토리로 전환하는 방법을 보려면 다음 섹션으로 이동하세요.

Attempting to switch to subdirectories

cd 명령어를 사용하여 파일 시스템 탐색하기

여러 하위 디렉토리로 이동하는 것은 PowerShell에서 흔한 작업입니다. 그러나 다른 하위 디렉토리로 빠르게 이동하는 방법이 있을까요? 네! “change directory”의 줄임말인 cd 명령어를 사용하면 현재 디렉토리에 관계없이 빠르게 다른 하위 디렉토리로 전환할 수 있습니다.

과거에는 Command Prompt에서 드라이브와 디렉토리 사이를 이동하기 위해 cd 명령어를 사용했습니다. Microsoft는 cd 명령어를 역호환성을 갖도록 만들어 PowerShell에서도 디렉토리 간 이동이 가능하도록 했습니다.

계속 읽어보고 cd 명령어로 파일 시스템을 탐색하는 방법을 알아보세요.

다른 드라이브의 디렉토리로 이동하기

다른 드라이브 내의 하위 디렉토리로 이동하는 것은 귀찮은 일처럼 들릴 수 있습니다. 그러나 과도한 생각은 필요 없습니다. cd 명령어를 사용하면 빠르게 다른 드라이브로 이동하면서 그 중 하나의 디렉토리로 이동할 수 있습니다.

아래 명령어를 실행하여 D:* 드라이브의 Kitty라는 하위 디렉토리로 이동하세요.

cd D:\Kitty
Navigating a subdirectory in another drive

디렉토리 계층 구조에서 여러 단계 위로 이동하기

파일 시스템 관리 또는 프로젝트 작업 중에는 현재 디렉터리에서 한 단계 또는 두 단계 위로 이동해야 할 때가 자주 있습니다. cd 명령은 현재 디렉터리의 부모 디렉터리로 효과적으로 전환할 수 있게 해주는 .. 표기법을 지원합니다.

이 기능을 사용하면 부모 디렉터리의 전체 경로를 지정하지 않고도 파일 시스템에서 한 단계 위로 이동할 수 있습니다.

1. 아래의 cd 명령을 실행하고, 공백을 추가하고 .. 표기법을 덧붙여서 PowerShell에게 디렉터리 계층 구조에서 한 단계 위로 이동하라고 알려줍니다.

cd 명령 뒤에 공백 문자를 추가하지 않아도 됩니다. 명령은 공백 없이도 잘 작동하지만, 가독성을 높이고 다른 명령과 일관성을 유지하기 위해 공백을 추가하는 것이 일반적인 관행입니다.

cd ..

아래 출력에서는 프롬프트가 C:\Users\admin\Documents에서 C:\Users\admin 디렉터리로 한 단계 위로 이동함을 볼 수 있습니다. 여기서 C:\Users\admin 디렉터리의 전체 경로를 지정할 필요가 없었음을 명심하세요.

Moving up one level in the directory hierarchy

2. 한 단계가 아닌 두 단계 위로 이동하려면 다음 명령을 실행하고 각각 뒤에 백슬래시 (\)를 추가하세요. 이렇게 하면 디렉터리 계층 구조에서 두 단계 위로 이동할 수 있습니다.

cd ..\..\

아래 출력에서는 C:\Users\admin\Documents에서 바로 C:\Users 디렉터리로 이동한 것을 볼 수 있습니다.

Moving up two levels from the current directory

3. 마지막으로 현재 드라이브의 루트 디렉터리로 이동하려면 아래 명령을 실행하세요.

만약 파일 시스템에서 길을 잃었다면, 이 명령어는 루트 디렉터리로 빠르게 이동할 수 있어 편리합니다. 이 명령어를 사용하면 여러 번 cd .. 명령을 실행하는 번거로움을 피할 수 있습니다.

cd \
Moving up to the root directory

특정 하위 디렉터리로 이동

디렉터리 계층 구조에서 레벨을 올라가는 것처럼, 특정 하위 디렉터리로 이동하는 것도 빠른 작업입니다. 많은 하위 디렉터리가 있을 수 있기 때문에, 이전 것들 (....\)과 같은 표시를 추가하는 것은 작동하지 않습니다. 반드시 하위 디렉터리의 이름을 지정해야 합니다.

아래 명령어를 실행하여 현재 디렉터리 (.)의 하위 디렉터리 중 하나 (\admin)로 이동합니다.

cd .\admin

아래에서 볼 수 있듯이, C:\Users\admin 디렉터리의 전체 경로를 지정할 필요가 없기 때문에 시간과 노력을 절약했습니다.

Moving into one of the subdirectories

PowerShell Cmdlet을 사용하여 파일 시스템 탐색

cd 명령어가 PowerShell에서 확실히 작동하지만, Microsoft는 Set-Location과 같은 많은 cmdlet을 소개하여 파일 시스템을 탐색할 수 있게 했습니다.

이러한 cmdlet은 드라이브 간 전환, 쌓인 위치를 탐색하고 위치 기록에서 디렉터리를 순환하는 등 cd 명령어보다 더 강력한 기능을 제공합니다.

PowerShell cmdlet이 파일 시스템을 탐색하는 데 얼마나 강력한지 기대하세요.

다른 드라이브에서 위치 설정

cd 명령어와 마찬가지로, Set-Location cmdlet은 디렉토리 간 이동 및 해당 디렉토리로 직접 이동할 수 있도록 해줍니다. 그러나 PowerShell cmdlet을 사용하는 경우, 대상 위치의 경로를 설정하기 위해 -Path 매개변수를 추가해야 합니다.

Set-Location cmdlet은 현재 작업 디렉토리를 지정된 위치로 설정합니다. 지정된 위치는 다음 중 하나일 수 있습니다:

  • A directory, or subdirectory on the local file system.
  • PowerShell에서 제공하는 다른 위치.
  • 또는 레지스트리 위치.

Set-Location cmdlet이 파일 시스템 내에서 작동하는 방법을 확인하려면:

아래 명령을 실행하여 -Path 매개변수에 지정된 D: 드라이브의 Kitty 디렉토리로 이동합니다.

Set-Location -Path "D:\Kitty"
Navigating to a directory in another drive

만약 Set-Location cmdlet을 전체적으로 입력하는 것이 조금 귀찮다면, 별칭 중 하나인 chdir 또는 sl을 사용하여 파일 시스템을 탐색할 수도 있습니다. 별칭은 자주 사용하는 명령에 더 편리하게 액세스할 수 있는 방법을 제공합니다.

이제 아래 명령을 실행하여 작업 위치를 특정 레지스트리 위치로 설정하세요. 이 경우, HKLM:\ 경로(간략한 표기법)는 Windows 레지스트리의 HKEY_LOCAL_MACHINE 하이브를 참조합니다.

이 명령은 레지스트리의 HKEY_LOCAL_MACHINE 하이브의 작업 위치를 루트로 설정합니다. 레지스트리로 이동하면 다른 PowerShell 명령을 통해 하위 키와 값을 액세스하고 수정할 수 있습니다.

Set-Location -Path "HKLM:\”
Setting the working location to a specific registry location

스택된 위치 간 전환(푸시 및 팝)

스택된 위치에 빠르게 액세스하는 것은 편리해 보입니다. 그러나 가능한가요? 네, Push-LocationPop-Location cmdlet을 사용하여 명명된 스택에서 후입선출(LIFO) 순서로 위치를 푸시하고 팝할 수 있습니다.

스택된 위치로 이동하려면 다음 단계를 따르세요:

1. 현재 위치를 Paths 스택으로 푸시하고 현재 디렉터리를 C:\Program Files\PowerShell\로 설정하려면 아래 Push-Location 명령을 실행하세요.

Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
Pushing the current location to a stack called Paths

2. 다음으로 아래 명령을 실행하여 현재 위치(C:\Program Files\PowerShell\)를 동일한 Paths 스택의 맨 위로 푸시합니다.

Push-Location -Path 'C:\Program Files\WindowsPowerShell\' -StackName "Paths"

3. 각 명령을 실행하여 Paths를 기본 스택으로 설정하고 (Get-Location) 스택된 위치를 보세요.

# Paths 스택을 기본으로 설정
Set-Location -StackName "Paths"
# 기본 스택에 있는 모든 스택된 경로 보기
Get-Location -Stack

아래에서는 현재 스택에 두 개의 위치가 쌓여 있으며, 마지막으로 푸시한 위치가 맨 위에 있습니다.

Viewing stacked locations in the Paths stack

4. 지금은 경로 스택으로 설정된 기본 스택에서 맨 위에 있는 위치를 팝하기 위해 다음 Pop-Location 명령을 두 번 실행하세요.

Pop-Location
Changing the current directory by popping stacked locations

스택에서 위치를 팝하면 스택에서 위치가 제거됩니다. 아래 오류는 기본 스택에서 모든 위치를 팝한 것을 나타냅니다.

Attempting to view an empty stack

변수에 저장된 디렉터리로 이동

파일 시스템에서 디렉터리를 탐색하는 다양한 방법을 살펴보았습니다. 그러나 특정 위치를 자주 탐색해야 하는 경우 어떻게 해야 할까요? 전체 경로를 여러 번 입력하거나 위치 기록을 순환하는 것은 번거로울 수 있습니다. 대신 디렉터리의 전체 경로를 변수에 저장하는 것은 어떨까요?

선언된 변수를 사용하면 머리 속에서 경로를 지정하지 않고도 대상 디렉터리로 이동할 수 있습니다.

1. 아래 명령을 실행하여 C:\Program Files\PowerShell\ 디렉터리를 $psh 변수에 저장하고 해당 위치($psh)를 현재 디렉터리로 설정하세요.

# 디렉터리 경로를 변수에 저장
$psh = 'C:\Program Files\PowerShell\'
# $psh 변수에서 디렉터리로 이동
Set-Location -Path $psh

아래 출력은 변수를 사용하여 디렉터리 변경이 성공적으로 이루어졌음을 확인합니다. 현재 디렉터리에 상관없이 $psh 변수를 통해 빠르게 C:\Program Files\PowerShell\ 디렉터리로 이동할 수 있습니다.

그러나 현재 PowerShell 세션에만이 방법이 작동하며 변수를 유지하려면 다음 단계에서 설명된대로 변수를 유지해야합니다.

Navigating to a location stored in a variable

2. 다음으로 아래 명령을 실행하십시오. 이 명령은 출력을 제공하지 않지만 ev_psh 변수를 환경 변수 (SetEnvironmentVariable)로 지속시킵니다. 그 값은 디렉토리의 전체 경로입니다.

# psh를 환경 변수로 추가
[System.Environment]::SetEnvironmentVariable('ev_psh', 'C:\Program Files\PowerShell\', 'Machine')
# 새로 추가된 환경 변수 (ev_psh) 다시로드
$Env:ev_psh = [System.Environment]::GetEnvironmentVariable("ev_psh","Machine")

3. 마지막으로 아래 명령을 실행하여 ev_psh 환경 변수의 값을 현재 디렉토리로 설정하십시오. 현재 디렉토리가 ev_psh 변수와 다른 디렉토리에있는지 확인하십시오.

Set-Location -Path $env:ev_psh
Setting the value of an environment variable as the current directory

PowerShell의 위치 기록에서 디렉토리를 순환하는 방법

PowerShell에서 디렉토리를 순환하는 또 다른 빠른 방법은 위치 기록을 사용하는 것입니다. -Path 매개 변수는 Set-Location cmdlet에게 위치 기록 (이전 및 다음)에 따라 다른 디렉토리로 이동하도록 지시합니다. 지정된 값에 따라 (- 또는 +).

PowerShell의 위치 기록에서 디렉토리를 순환하려면:

다음 명령을 실행하여 기록에서 위치를 현재 디렉터리로 설정합니다. + 문자는 위치 기록에서 앞으로 이동하며, - 문자는 뒤로 이동합니다.

# 시스템 루트 디렉터리를 현재 디렉터리로 설정 
Set-Location -Path $env:SystemRoot

# 기록에서 이전 디렉터리로 이동 (인증 공급자)
Set-Location -Path -

# 다시 기록에서 이전 디렉터리로 이동 (시스템 루트 디렉터리)
Set-Location -Path -

# 다음 작업 디렉터리로 이동 (인증 공급자)
Set-Location -Path +

# 다음 작업 디렉터리로 이동 (HKEY_LOCAL_MACHINE 하이브)
Set-Location -Path +
Cycling through locations in the location history

결론

파일 시스템 탐색은 옵션이 제한될 때 어려울 수 있습니다. 그러나 PowerShell 디렉터리 변경 명령인 Set-Location을 사용하면 다양한 옵션이 제공됩니다. 파일 시스템을 더 효율적으로 탐색하려면 어떻게 할지는 전적으로 당신의 선택입니다.

또한, 최근 위치를 저장하고 호출하기 위해 Push-LocationPop-Location의 사용을 숙달하는 것은 가치 있는 기술입니다.

다음 기술을 사용하면 PowerShell에서 디렉터리와 위치를 신속하게 움직이고 원활하게 탐색할 수 있습니다. 그러나 더 향상시키려면 Get-ChildItem과 같은 추가 명령어에 대해 학습하는 것도 고려해보세요. 이 명령어는 일상 업무에서 많은 시간을 절약할 수 있습니다.

Source:
https://adamtheautomator.com/powershell-change-directory/