PowerShell Cambiar Directorio: Navegando por su Sistema de Archivos

En Windows, cambiar de directorio es una parte fundamental de la gestión de archivos, pero ¿te conformarías con escribir rutas completas de cada directorio que visitas? Afortunadamente, los comandos de cambio de directorio de PowerShell pueden facilitarte la vida.

En este tutorial, explorarás los comandos disponibles para cambiar de directorio en PowerShell, lo que te ayudará a navegar por tu sistema de archivos sin esfuerzo.

Sigue leyendo y domina los conceptos básicos de la navegación en el sistema de archivos con PowerShell ¡hoy mismo!

Requisitos previos

Este tutorial será una demostración práctica. Para seguir, asegúrate de tener un sistema Windows con PowerShell instalado. Este tutorial utiliza Windows 10 y PowerShell v7.

Cambiando de un Disco a Otro

Cada dispositivo de almacenamiento, como un disco duro o una unidad USB, se le asigna una letra de unidad (es decir, C:, D:, E:, …Z:). Cuando abres una ventana de PowerShell, el indicador está en el directorio de tu perfil de usuario en la unidad actual de forma predeterminada.

Supongamos que necesitas acceder con frecuencia a archivos o carpetas almacenados en una unidad diferente a la que estás actualmente. En ese caso, es necesario cambiar de una unidad a otra.

Para ver cómo cambiar de una unidad a otra:

1. Abre PowerShell y confirma si el indicador muestra C:\Users\admin. Si es así, entonces actualmente te encuentras en la unidad C: en el directorio del perfil del usuario admin, como se muestra a continuación.

Viewing the default working drive

2. A continuación, abre otra sesión de PowerShell, pero esta vez como administrador.

En este caso, el indicador comienza en un directorio predeterminado diferente al iniciar PowerShell como usuario regular. Específicamente, el indicador comienza en el directorio System32 dentro del directorio Windows en la unidad actual (C:), como se muestra a continuación.

Este comportamiento predeterminado evita que los usuarios no administrativos modifiquen accidentalmente archivos críticos del sistema o ejecuten herramientas sensibles.

Viewing the default working drive as an admin

3. Ejecuta el siguiente comando para cambiar la unidad actual a D: (o a cualquier otra unidad disponible). Esta sintaxis es una forma rápida de navegar entre diferentes unidades en PowerShell.

D:

Al cambiar de unidades en PowerShell con este método, el indicador cambia al directorio raíz de la nueva unidad, como se muestra en la salida a continuación.

Como puedes ver, independientemente del directorio predeterminado en el que comience PowerShell, siempre puedes cambiar a otra unidad.

Switching to another drive

4. Ahora, ejecuta el siguiente comando para intentar cambiar al directorio D:\Kitty (o a cualquier otro subdirectorio).

D:\Kitty

¿Obtuviste el mismo error que se muestra a continuación? Este error aparece porque no puedes cambiar a subdirectorios (por ejemplo, D:\Kitty) de una vez con este método.

Salta a la siguiente sección para ver cómo cambiar a subdirectorios.

Attempting to switch to subdirectories

Navegando por el sistema de archivos mediante el comando cd

Navegar por múltiples subdirectorios es una tarea común en PowerShell. ¿Pero hay una forma rápida de navegar entre diferentes subdirectorios? ¡Sí! El comando cd, abreviatura de “cambiar directorio”, te permite cambiar rápidamente a otro subdirectorio independientemente de tu directorio actual.

Antiguamente, el comando cd se utilizaba para navegar entre unidades y directorios en el Símbolo del sistema. Microsoft hizo que el comando cd fuera compatible hacia atrás para que aún puedas navegar entre directorios en PowerShell.

Sigue leyendo y ve cómo navegar por tu sistema de archivos con el comando cd.

Movimiento a un directorio en una unidad diferente

Ir a un subdirectorio dentro de una unidad diferente puede parecer una molestia si lo piensas. Bueno, no hay necesidad de darle muchas vueltas. Te sorprenderá lo rápido que te permite el comando cd saltar a otra unidad mientras te mueves a uno de sus directorios.

Ejecuta el siguiente comando para navegar al subdirectorio llamado Kitty en la unidad D:*.

cd D:\Kitty
Navigating a subdirectory in another drive

Movimiento de uno a muchos niveles arriba en la jerarquía de directorios

Con la gestión del sistema de archivos, o al trabajar en un proyecto, es posible que necesites moverte frecuentemente uno o dos niveles hacia arriba desde tu directorio actual. El comando cd admite la notación .., que te permite cambiar eficazmente al directorio principal de tu directorio actual.

Esta función te permite subir un nivel en tu sistema de archivos sin especificar la ruta completa al directorio principal.

1. Ejecuta el comando cd a continuación, agrega un espacio y la notación .., lo que indica a PowerShell que suba un nivel en la jerarquía de directorios.

El carácter de espacio después del comando cd no es necesario, ya que el comando funcionará correctamente sin él. Pero agregar un espacio es una práctica común para mejorar la legibilidad y la consistencia con otros comandos.

cd ..

En la salida a continuación, puedes ver que el indicador se mueve un nivel hacia arriba desde el C:\Users\admin\Documents hasta el directorio C:\Users\admin. Ten en cuenta que no tuviste que especificar la ruta completa para el directorio C:\Users\admin para subir.

Moving up one level in the directory hierarchy

2. En lugar de subir un nivel, ejecuta el siguiente comando con dos notaciones .., agregando una barra diagonal invertida (\) al final de cada uno. Al hacerlo, puedes subir dos niveles en la jerarquía de directorios.

cd ..\..\

A continuación, la salida muestra que has pasado del C:\Users\admin\Documents directamente al directorio C:\Users.

Moving up two levels from the current directory

3. Por último, ejecuta el siguiente comando para ir al directorio raíz de tu unidad actual.

Si te has perdido en tu sistema de archivos, este comando resulta útil ya que puedes saltar rápidamente al directorio raíz. Este comando te ahorra la molestia de ejecutar el comando cd .. varias veces.

cd \
Moving up to the root directory

Movimiento a un Subdirectorio Específico

Al igual que moverse a un nivel superior en la jerarquía de directorios, moverse a un subdirectorio específico también es una tarea rápida. Dado que puede haber muchos subdirectorios, añadir notaciones como las anteriores (.. y ..\) no funcionará, debes especificar el nombre del subdirectorio.

Ejecuta el siguiente comando para moverte a uno de los subdirectorios (\admin) en tu directorio actual (.).

cd .\admin

Observa que has ahorrado tiempo y esfuerzo ya que no tuviste que especificar la ruta completa del directorio C:\Users\admin.

Moving into one of the subdirectories

Navegando por el Sistema de Archivos con Cmdlets de PowerShell

Aunque el comando cd funciona sin duda en PowerShell, Microsoft ha introducido muchos cmdlets, como Set-Location, que te permiten navegar por tu sistema de archivos.

Estos cmdlets ofrecen una funcionalidad más robusta que el comando cd que puedes usar para cambiar entre unidades, navegar por ubicaciones apiladas y recorrer directorios en el historial de ubicaciones.

Mantente atento y observa lo poderosos que son los cmdlets de PowerShell para navegar por tu sistema de archivos.

Estableciendo una Ubicación desde una Unidad Diferente

Como el comando cd, el cmdlet Set-Location te permite cambiar de un directorio a otro y navegar directamente a uno de sus directorios. Pero dado que estás usando un cmdlet de PowerShell, debes agregar el parámetro -Path para establecer la ruta de tu ubicación objetivo.

El cmdlet Set-Location establece el directorio de trabajo actual en una ubicación especificada. Esa ubicación especificada puede ser una de las siguientes:

  • A directory, or subdirectory on the local file system.
  • Cualquier otra ubicación compatible con un proveedor en PowerShell.
  • O una ubicación de registro.

Para ver cómo funciona el cmdlet Set-Location para navegar por tu sistema de archivos:

Ejecuta el siguiente comando para navegar al directorio Kitty en tu unidad D: especificada en el parámetro -Path.

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

Si te sientes un poco perezoso para escribir el cmdlet completo Set-Location, también puedes usar uno de sus aliases, como chdir y sl, para navegar por tu sistema de archivos. Los aliases proporcionan una forma más conveniente de acceder a comandos que se utilizan con frecuencia.

Ahora, ejecuta el siguiente comando para establecer la ubicación de trabajo en una ubicación de registro específica. En este caso, la ruta HKLM:\ (un atajo) se refiere a la colmena HKEY_LOCAL_MACHINE en tu Registro de Windows.

Este comando establece la ubicación de trabajo en la raíz de la clave HKEY_LOCAL_MACHINE en el registro. Navegar a un registro te permite acceder y modificar sus subclaves y valores mediante otros comandos de PowerShell.

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

Cambiar entre ubicaciones apiladas (Push y Pop)

Acceder rápidamente a ubicaciones apiladas suena conveniente. ¿Pero es posible? ¡Sí! Los cmdlets Push-Location y Pop-Location te permiten empujar y sacar ubicaciones en una pila de último en entrar, primero en salir (LIFO) desde una pila nombrada.

Para navegar por ubicaciones apiladas, sigue estos pasos:

1. Ejecuta el siguiente comando Push-Location para empujar tu ubicación actual a una pila llamada Paths y establecer el directorio C:\Program Files\PowerShell\ como el directorio actual.

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

2. Luego, ejecuta el siguiente comando para empujar tu ubicación actual (C:\Program Files\PowerShell\) a la parte superior de la misma pila Paths.

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

3. Ejecuta cada comando a continuación para establecer Paths como la pila predeterminada y ver (Get-Location) las ubicaciones apiladas.

# Establece la pila Paths como predeterminada
Set-Location -StackName "Paths"
# Ver todas las rutas apiladas en la pila predeterminada
Get-Location -Stack

A continuación, puedes ver que actualmente tienes dos ubicaciones apiladas, donde la última ubicación que agregaste está en la parte superior.

Viewing stacked locations in the Paths stack

4. Ahora, ejecuta el siguiente comando Pop-Location dos veces para sacar la ubicación superior apilada de la pila predeterminada, que actualmente es la pila de Rutas.

Pop-Location
Changing the current directory by popping stacked locations

Ten en cuenta que sacar la ubicación de la pila elimina la ubicación de la pila. El error a continuación indica que has sacado todas las ubicaciones apiladas de la pila predeterminada.

Attempting to view an empty stack

Navegación a un Directorio Almacenado en una Variable

Has explorado diferentes formas de navegar por directorios en tu sistema de archivos. Pero, ¿qué pasa si necesitas navegar a una ubicación específica con frecuencia? Escribir rutas completas varias veces o recorrer el historial de ubicaciones puede ser tedioso. ¿Por qué no almacenar en lugar de eso la ruta completa de un directorio en una variable?

Con una variable declarada, puedes navegar a tu directorio objetivo sin especificar la ruta de memoria.

1. Ejecuta los comandos siguientes para almacenar el directorio C:\Program Files\PowerShell\ en la variable $psh y establecer esa ubicación ($psh) como el directorio actual.

# Almacenar una ruta de directorio en una variable
$psh = 'C:\Program Files\PowerShell\'
# Establecer el directorio de la variable $psh como el directorio actual
Set-Location -Path $psh

La salida a continuación confirma el cambio de directorio exitoso usando una variable. Independientemente de tu directorio actual, puedes navegar rápidamente al directorio C:\Program Files\PowerShell\ a través de la variable $psh.

Pero ten en cuenta que este método solo funciona para la sesión actual de PowerShell a menos que persistas la variable, como se demuestra en el siguiente paso.

Navigating to a location stored in a variable

2. A continuación, ejecuta los siguientes comandos, los cuales no proporcionan salida, pero persisten la variable ev_psh como una variable de entorno (SetEnvironmentVariable) con el valor de la ruta completa del directorio.

# Agregar psh como una variable de entorno
[System.Environment]::SetEnvironmentVariable('ev_psh', 'C:\Program Files\PowerShell\', 'Machine')
# Recargar la variable de entorno recién agregada (ev_psh)
$Env:ev_psh = [System.Environment]::GetEnvironmentVariable("ev_psh","Machine")

3. Por último, ejecuta el siguiente comando para establecer el valor de la variable de entorno ev_psh como el directorio actual. Asegúrate de estar en un directorio diferente al de tu variable ev_psh.

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

Ciclado a Través del Historial de Ubicaciones de PowerShell

Otra forma rápida de navegar por directorios en PowerShell es usando el historial de ubicaciones. El parámetro -Path le indica al cmdlet Set-Location que navegue a otro directorio desde el historial de ubicaciones (anterior y siguiente), dependiendo del valor especificado (- o +).

Ejecuta los siguientes comandos para establecer ubicaciones desde el historial como el directorio actual. El carácter + te lleva hacia adelante en el historial de ubicaciones, mientras que el carácter - te lleva hacia atrás.

# Establece el directorio raíz del sistema como directorio actual 
Set-Location -Path $env:SystemRoot

# Navega de regreso al directorio anterior en el historial (proveedor de certificados)
Set-Location -Path -

# Navega de regreso al directorio anterior en el historial nuevamente (directorio raíz del sistema)
Set-Location -Path -

# Navega hacia adelante al siguiente directorio de trabajo en el historial (proveedor de certificados)
Set-Location -Path +

# Navega hacia adelante al siguiente directorio de trabajo en el historial (HIVE HKEY_LOCAL_MACHINE)
Set-Location -Path +
Cycling through locations in the location history

Conclusión

La navegación del sistema de archivos puede ser complicada cuando tus opciones son limitadas. Pero con los comandos de cambio de directorio de PowerShell, como Set-Location, tienes muchas opciones. Cómo deseas navegar por tu sistema de archivos de manera más eficiente depende enteramente de ti.

Además, dominar el uso de Push-Location y Pop-Location para guardar y recuperar ubicaciones recientes es una habilidad valiosa.

Estas técnicas te permiten moverte rápidamente y sin problemas a través de directorios y ubicaciones en PowerShell. Pero para mejorar aún más, ¿por qué no considerar aprender sobre comandos adicionales, como Get-ChildItem, que pueden ahorrarte mucho tiempo en tus tareas diarias?

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