PowerShell Смена директории: Навигация по файловой системе

В Windows изменение каталогов является фундаментальной частью управления файлами, но согласитесь ли вы на запись полных путей к каждому каталогу, который вы посещаете? К счастью, команды PowerShell для изменения каталога могут облегчить вашу жизнь.

В этом руководстве вы изучите доступные команды для изменения каталогов в PowerShell, что поможет вам легко перемещаться по файловой системе.

Читайте далее и освоите основы навигации по файловой системе с PowerShell уже сегодня!

Предварительные требования

Этот учебник будет практической демонстрацией. Чтобы следовать за уроком, убедитесь, что у вас установлена система Windows с установленным PowerShell. В этом руководстве используется 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 от обычного пользователя. Конкретно, приглашение начинается в директории System32 внутри директории Windows на текущем диске (C:), как показано ниже.

Это поведение по умолчанию предотвращает случайные модификации важных системных файлов или запуск чувствительных инструментов неадминистративными пользователями.

Viewing the default working drive as an admin

3. Выполните нижеприведенную команду, чтобы изменить текущий диск на D: (или на любой другой доступный диск). Этот синтаксис – быстрый способ навигации между разными дисками в PowerShell.

D:

При переключении дисков в PowerShell с помощью этого метода приглашение изменяется на корневую директорию нового диска, как показано в выводе ниже.

Как видите, независимо от директории по умолчанию, с которой запускается PowerShell, всегда можно переключиться на другой диск.

Switching to another drive

4. Теперь выполните нижеприведенную команду, чтобы попытаться перейти в директорию D:\Kitty (или в любую другую поддиректорию).

D:\Kitty

Вы получили такую же ошибку, как ниже? Эта ошибка появляется, потому что вы не можете переключаться на подкаталоги (например, D:\Kitty) сразу этим методом.

Перейдите к следующему разделу, чтобы увидеть, как переключиться на подкаталоги.

Attempting to switch to subdirectories

Навигация по файловой системе с помощью команды cd

Перемещение по нескольким подкаталогам – обычная задача в PowerShell. Но есть ли быстрый способ перемещения между разными подкаталогами? Да! Команда cd, сокращение от “change directory”, позволяет быстро переключаться на другой подкаталог независимо от текущего каталога.

В прошлом команда cd использовалась для навигации между дисками и каталогами в командной строке. Microsoft сделал команду cd обратно совместимой, поэтому вы по-прежнему можете перемещаться между каталогами в PowerShell.

Читайте далее и узнайте, как навигироваться по файловой системе с помощью команды cd.

Переход в каталог на другом диске

Переход в подкаталог на другом диске может показаться неудобным, если вы об этом задумаетесь. Но нет необходимости слишком много думать об этом. Вы удивитесь, насколько быстро команда cd позволяет перейти на другой диск, переместившись в один из его каталогов.

Запустите следующую команду, чтобы перейти в подкаталог с названием Kitty на диске D:*.

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

Хотя команда cd безусловно работает в PowerShell, Microsoft представила множество командлетов, таких как Set-Location, которые позволяют вам перемещаться по вашей файловой системе.

Эти командлеты предоставляют более надежную функциональность, чем команда cd, с помощью которой можно переключаться между дисками, перемещаться по сложным местоположениям и циклически переходить через каталоги в истории местоположений.

Следите за обновлениями и убедитесь, насколько мощными могут быть командлеты PowerShell при навигации по вашей файловой системе.

Установка местоположения с другого диска

Как и команда cd, команда Set-Location позволяет переходить из одного каталога в другой и сразу переходить в один из его подкаталогов. Но поскольку вы используете командлет PowerShell, вам необходимо добавить параметр -Path, чтобы установить путь к целевому местоположению.

Команда Set-Location устанавливает текущий рабочий каталог в указанное местоположение. Это указанное местоположение может быть одним из следующих:

  • A directory, or subdirectory on the local file system.
  • Любое другое местоположение, поддерживаемое провайдером в PowerShell.
  • Или местоположение в реестре.

Чтобы увидеть, как работает команда Set-Location при навигации по файловой системе:

Выполните нижеприведенную команду, чтобы перейти в каталог Kitty на вашем диске D:, указанном в параметре -Path.

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

Если вам лень набирать полную команду Set-Location, вы также можете использовать один из его псевдонимов, таких как chdir и sl, для навигации по файловой системе. Псевдонимы обеспечивают более удобный способ доступа к часто используемым командам.

Теперь выполните нижеприведенную команду, чтобы установить рабочее местоположение в конкретное местоположение в реестре. В данном случае путь HKLM:\ (сокращенный вариант) ссылается на раздел HKEY_LOCAL_MACHINE в вашем реестре Windows.

Эта команда устанавливает рабочее местоположение в корень ветви реестра HKEY_LOCAL_MACHINE. Переход к реестру позволяет получить доступ к его подключам и значениям с помощью других команд PowerShell.

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

Переключение Между Накопленными Местоположениями (Push и Pop)

Быстрый доступ к накопленным местоположениям звучит удобно. Но возможен ли он? Да! Команды Push-Location и Pop-Location позволяют вам добавлять и удалять местоположения в именованном стеке по принципу последний пришел – первый вышел (LIFO).

Чтобы перейти к накопленным местоположениям, выполните следующие действия:

1. Запустите команду Push-Location ниже, чтобы добавить ваше текущее местоположение в стек с именем Paths и установить каталог C:\Program Files\PowerShell\ в качестве текущего каталога.

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 дважды, чтобы извлечь верхнее местоположение из стека по умолчанию, который в настоящее время является стеком Paths.

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

Ниже приведен вывод, подтверждающий успешное изменение каталога с использованием переменной. Независимо от вашего текущего каталога, вы можете быстро перейти в каталог C:\Program Files\PowerShell\ через переменную $psh.

Но обратите внимание, что этот метод работает только для текущей сессии 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 перейти в другой каталог из истории расположения (предыдущий и следующий), в зависимости от указанного значения (- или +).

Циклическое перемещение по каталогам в истории расположения 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-Location и Pop-Location для сохранения и воспоминания о последних местоположениях является ценным навыком.

Эти техники позволяют вам быстро и без проблем перемещаться по каталогам и местоположениям в PowerShell. Но для еще более эффективной работы, почему бы не рассмотреть возможность изучения дополнительных команд, таких как Get-ChildItem, которые могут сэкономить вам много времени в ваших повседневных задачах?

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