PowerShell Alterar Diretório: Navegando no seu Sistema de Arquivos

No Windows, a alteração de diretórios é uma parte fundamental da gestão de arquivos, mas você se contentaria em escrever os caminhos completos de cada diretório que você visita? Felizmente, os comandos de mudança de diretório do PowerShell podem facilitar sua vida.

Neste tutorial, você irá explorar os comandos disponíveis para alterar diretórios no PowerShell, ajudando você a navegar pelo seu sistema de arquivos sem esforço.

Continue lendo e domine os conceitos básicos da navegação no sistema de arquivos com o PowerShell hoje!

Pré-requisitos

Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter um sistema Windows com o PowerShell instalado. Este tutorial utiliza o Windows 10 e PowerShell v7.

Mudando de um Drive para Outro

Cada dispositivo de armazenamento, como um disco rígido ou pen drive USB, é atribuído a uma letra de unidade (ou seja, C:, D:, E:, … Z:). Quando você abre uma janela do PowerShell, o prompt está no diretório do seu perfil de usuário no drive atual por padrão.

Suponha que você precise de acesso frequente a arquivos ou pastas armazenados em um drive diferente daquele em que você está atualmente. Se for o caso, é necessário alternar de um drive para outro.

Para ver como alternar de um drive para outro:

1. Abra o PowerShell e confirme se o prompt exibe C:\Users\admin. Se sim, você está atualmente no drive C: no diretório do perfil do usuário admin, como mostrado abaixo.

Viewing the default working drive

2. Em seguida, abra outra sessão do PowerShell, mas desta vez, como administrador.

Aqui, o prompt inicia em um diretório padrão diferente do que ao iniciar o PowerShell como um usuário comum. Especificamente, o prompt inicia no diretório System32 dentro do diretório Windows no drive atual (C:), como mostrado abaixo.

Esse comportamento padrão evita que usuários não administrativos modifiquem acidentalmente arquivos críticos do sistema ou executem ferramentas sensíveis.

Viewing the default working drive as an admin

3. Execute o comando abaixo para mudar o drive atual para D: (ou para qualquer drive disponível). Esta sintaxe é uma maneira rápida de navegar entre diferentes drives no PowerShell.

D:

Ao mudar de drives no PowerShell com este método, o prompt muda para o diretório raiz do novo drive, como mostrado na saída abaixo.

Como pode ser visto, independentemente do diretório padrão de início do PowerShell, você sempre pode alternar para outro drive.

Switching to another drive

4. Agora, execute o comando abaixo para tentar mudar para o diretório D:\Kitty (ou para qualquer outro subdiretório).

D:\Kitty

Você recebeu o mesmo erro abaixo? Esse erro ocorre porque você não pode alternar para subdiretórios (por exemplo, D:\Kitty) de uma só vez por este método.

Pule para a próxima seção para ver como alternar para subdiretórios.

Attempting to switch to subdirectories

Navegando no Sistema de Arquivos via Comando cd

Navegar por vários subdiretórios é uma tarefa comum no PowerShell. Mas há uma maneira rápida de navegar por diferentes subdiretórios? Sim! O comando cd, abreviação de “change directory”, permite que você alterne rapidamente para outro subdiretório, independentemente do diretório atual.

No passado, o comando cd era usado para navegar entre unidades e diretórios no Prompt de Comando. A Microsoft tornou o comando cd retrocompatível para que você ainda possa navegar entre diretórios no PowerShell.

Continue lendo e veja como navegar pelo seu sistema de arquivos com o comando cd.

Movendo para um Diretório em uma Unidade Diferente

Ir para um subdiretório em uma unidade diferente pode parecer complicado se você pensar sobre isso. Bem, não há necessidade de pensar demais. Você ficará surpreso com a rapidez com que o comando cd permite que você vá para outra unidade enquanto entra em um de seus diretórios.

Execute o comando abaixo para navegar até o subdiretório chamado Kitty na unidade D:*.

cd D:\Kitty
Navigating a subdirectory in another drive

Movendo de um para Muitos Níveis Acima na Hierarquia de Diretórios

Com o gerenciamento do sistema de arquivos, ou ao trabalhar em um projeto, você pode precisar frequentemente subir um ou dois níveis a partir do seu diretório atual. O comando cd suporta a notação .., que permite alternar efetivamente para o diretório pai do seu diretório atual.

Essa funcionalidade permite que você suba um nível no seu sistema de arquivos sem especificar o caminho completo para o diretório pai.

1. Execute o comando cd abaixo, acrescente um espaço e a notação .., o que diz ao PowerShell para subir um nível na hierarquia de diretórios.

O caractere de espaço após o comando cd não é necessário, pois o comando funcionará bem sem ele. No entanto, adicionar um espaço é uma prática comum para melhor legibilidade e consistência com outros comandos.

cd ..

No resultado abaixo, você pode ver que o prompt sobe um nível a partir do C:\Users\admin\Documents para o diretório C:\Users\admin. Note que você não precisou especificar o caminho completo para o C:\Users\admin diretório para subir.

Moving up one level in the directory hierarchy

2. Em vez de subir um nível, execute o seguinte comando com duas notações .., acrescentando uma barra invertida (\) no final de cada uma. Isso permite que você suba dois níveis na hierarquia de diretórios.

cd ..\..\

Abaixo, o resultado mostra que você pulou do C:\Users\admin\Documents diretamente para o diretório C:\Users.

Moving up two levels from the current directory

3. Por fim, execute o comando abaixo para ir para o diretório raiz da sua unidade atual.

Se você se perdeu no seu sistema de arquivos, este comando é útil, pois você pode pular rapidamente para o diretório raiz. Este comando poupa o trabalho de executar o comando cd .. várias vezes.

cd \
Moving up to the root directory

Movendo-se para um Subdiretório Específico

Assim como subir um nível na hierarquia de diretórios, mover-se para um subdiretório específico também é uma tarefa rápida. Como pode haver muitos subdiretórios, anexar notações como as anteriores (.. e ..\) não funcionará, você deve especificar o nome do subdiretório.

Execute o comando abaixo para entrar em um dos subdiretórios (\admin) no seu diretório atual (.).

cd .\admin

Observe abaixo que você economizou tempo e esforço, já que não precisou especificar o caminho completo do C:\Users\admin diretório.

Moving into one of the subdirectories

Navegando no Sistema de Arquivos com Cmdlets do PowerShell

Embora o comando cd certamente funcione no PowerShell, a Microsoft introduziu muitos cmdlets, como o Set-Location, que permitem navegar pelo seu sistema de arquivos.

Esses cmdlets fornecem funcionalidades mais robustas do que o comando cd, que você pode usar para alternar entre unidades, navegar por locais empilhados e percorrer diretórios no histórico de localização.

Fique ligado e veja como os poderosos cmdlets do PowerShell são na navegação pelo seu sistema de arquivos.

Definindo um Local de um Drive Diferente

Assim como o comando cd, o cmdlet Set-Location permite que você salte de um diretório para outro e navegue diretamente para um de seus diretórios. Mas como você está usando um cmdlet do PowerShell, você deve anexar o parâmetro -Path para definir o caminho do seu local de destino.

O cmdlet Set-Location define o diretório de trabalho atual para um local especificado. Esse local especificado pode ser um dos seguintes:

  • A directory, or subdirectory on the local file system.
  • Qualquer outro local suportado por um provedor no PowerShell.
  • Ou um local de registro.

Para ver como o cmdlet Set-Location funciona na navegação do seu sistema de arquivos:

Execute o comando abaixo para navegar até o diretório Kitty no seu disco D: especificado no parâmetro -Path.

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

Se você estiver um pouco preguiçoso para digitar o cmdlet completo Set-Location, também pode usar um dos seus aliases, como chdir e sl, para navegar no seu sistema de arquivos. Aliases fornecem uma maneira mais conveniente de acessar comandos frequentemente utilizados.

Agora, execute o comando abaixo para definir o local de trabalho para um local de registro específico. Neste caso, o caminho HKLM:\ (uma abreviação) refere-se ao HKEY_LOCAL_MACHINE hive no seu Registro do Windows.

Este comando define a localização de trabalho como a raiz do hive HKEY_LOCAL_MACHINE no registro. Navegar para um registro permite que você acesse e modifique suas subchaves e valores por meio de outros comandos do PowerShell.

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

Alternando Entre Localizações Empilhadas (Push e Pop)

Acessar rapidamente localizações empilhadas parece conveniente. Mas é possível? Sim! Os cmdlets Push-Location e Pop-Location permitem que você empurre e remova localizações em uma ordem de último a entrar, primeiro a sair (LIFO) de uma pilha nomeada.

Para navegar entre localizações empilhadas, siga estas etapas:

1. Execute o comando Push-Location abaixo para empurrar sua localização atual para uma pilha chamada Paths e definir o diretório C:\Program Files\PowerShell\ como o diretório atual.

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

2. Em seguida, execute o comando abaixo para empurrar sua localização atual (C:\Program Files\PowerShell\) para o topo da mesma pilha Paths.

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

3. Execute cada comando abaixo para definir Paths como a pilha padrão e visualizar (Get-Location) as localizações empilhadas.

# Define a pilha Paths como padrão
Set-Location -StackName "Paths"
# Visualiza todos os caminhos empilhados na pilha padrão
Get-Location -Stack

Abaixo, você pode ver que atualmente tem duas localizações empilhadas, onde a última localização que você empurrou está no topo.

Viewing stacked locations in the Paths stack

4. Agora, execute o seguinte comando Pop-Location duas vezes para desempilhar a localização superior da pilha padrão, que atualmente é a pilha de Caminhos.

Pop-Location
Changing the current directory by popping stacked locations

Observe que desempilhar a localização da pilha remove a localização da pilha. O erro abaixo indica que você desempilhou todas as localizações empilhadas da pilha padrão.

Attempting to view an empty stack

Navegando para um Diretório Armazenado em uma Variável

Você passou por diferentes maneiras de navegar em diretórios no seu sistema de arquivos. Mas e se você precisar navegar para uma localização específica com frequência? Digitar caminhos completos várias vezes ou percorrer o histórico de localizações pode ser tedioso. Por que não armazenar o caminho completo de um diretório em uma variável?

Com uma variável declarada, você pode navegar até o diretório desejado sem especificar o caminho de cabeça.

1. Execute os comandos abaixo para armazenar o diretório C:\Program Files\PowerShell\ na variável $psh, e defina essa localização ($psh) como o diretório atual.

# Armazene um caminho de diretório em uma variável
$psh = 'C:\Program Files\PowerShell\'
# Defina o diretório da variável $psh como o diretório atual
Set-Location -Path $psh

A saída abaixo confirma a alteração de diretório bem-sucedida usando uma variável. Independentemente do seu diretório atual, você pode navegar rapidamente até o diretório C:\Program Files\PowerShell\ através da variável $psh.

Mas observe que este método só funciona para a sessão atual do PowerShell, a menos que você persista a variável, conforme demonstrado na etapa seguinte.

Navigating to a location stored in a variable

2. Em seguida, execute os comandos abaixo, que não fornecem saída, mas persistem a variável ev_psh como uma variável de ambiente (SetEnvironmentVariable) com o valor do caminho completo do diretório.

# Adicione psh como uma variável de ambiente
[System.Environment]::SetEnvironmentVariable('ev_psh', 'C:\Program Files\PowerShell\', 'Machine')
# Recarregue a variável de ambiente recém-adicionada (ev_psh)
$Env:ev_psh = [System.Environment]::GetEnvironmentVariable("ev_psh","Machine")

3. Por fim, execute o comando abaixo para definir o valor da variável de ambiente ev_psh como o diretório atual. Certifique-se de estar em um diretório diferente daquele em sua variável ev_psh.

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

Ciclismo Através de Diretórios no Histórico de Localização do PowerShell

Outra maneira rápida de percorrer diretórios no PowerShell é usando o histórico de localização. O parâmetro -Path diz ao cmdlet Set-Location para navegar para outro diretório no histórico de localização (anterior e seguinte), dependendo do valor especificado (- ou +).

Para percorrer diretórios no histórico de localização do PowerShell:

Execute os seguintes comandos para definir os locais do histórico como o diretório atual. O caractere + avança no histórico de localizações, enquanto o caractere - retrocede.

# Define o diretório raiz do sistema como o diretório atual
Set-Location -Path $env:SystemRoot

# Navega de volta para o diretório anterior no histórico (provedor de certificados)
Set-Location -Path -

# Navega de volta para o diretório anterior no histórico novamente (diretório raiz do sistema)
Set-Location -Path -

# Navega para a frente até o próximo diretório de trabalho no histórico (provedor de certificados)
Set-Location -Path +

# Navega para a frente até o próximo diretório de trabalho no histórico (HIVE HKEY_LOCAL_MACHINE)
Set-Location -Path +
Cycling through locations in the location history

Conclusão

A navegação no sistema de arquivos pode ser complicada quando suas opções são limitadas. Mas com os comandos de mudança de diretório do PowerShell, como Set-Location, você tem muitas opções. Como você deseja navegar pelo seu sistema de arquivos de forma mais eficiente é totalmente com você.

Além disso, dominar o uso de Push-Location e Pop-Location para salvar e recuperar locais recentes é uma habilidade valiosa.

Estas técnicas permitem que você se mova rapidamente e sem problemas através de diretórios e locais no PowerShell. Mas para melhorar ainda mais, por que não considerar aprender sobre comandos adicionais, como Get-ChildItem, que pode economizar bastante tempo em suas tarefas diárias?

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