# pushd and popd

In computing, pushd and popd are commands in various Unix shell programs, such as e.g. Bash, and also in the Windows PowerShell. Both commands are used to work with the command line directory stack.

The pushd command saves the current working directory in memory so it can be returned to at any time, optionally changing to a new directory. The popd command returns to the path at the top of the directory stack. This directory stack is accessed by the command dirs in Unix or Get-Location -stack in Windows PowerShell.

In the Windows PowerShell, pushd is a predefined command alias for the Push-Location cmdlet and popd is a predefined command alias for the Pop-Location cmdlet. Both serve basically the same purpose as the Unix-like pushd and popd commands.

The commands were first used by William Sturka in 1976.

## Syntax

### pushd

pushd [path | ..]


Arguments:

• path This optional command-line argument specifies the directory to make the current directory. If path is omitted, the path at the top of the directory stack is used. This has the effect of toggling between two directories.

### popd

popd


## Examples

### Unix

[/usr/ports]$pushd /etc /etc /usr/ports [/etc]$ popd
/usr/ports
[/usr/ports]\$


### DOS

C:\Users\root>pushd \

C:\>popd

C:\Users\root>


### Batch File

@echo off
rem This batch file deletes all .txt files in a specified directory
pushd %1
del *.txt
popd
cls
echo All text files deleted in the %1 directory