Original author(s) | Bill Joy |
---|---|
Developer(s) | Various open-source and commercial developers |
Operating system | Unix, Unix-like, DOS, Windows, ReactOS |
Platform | Cross-platform |
Type | Command |
In computing, pushd
and popd
are commands used to work with the command line directory stack.[1][2] They are available on command-line interpreters such as 4DOS, Bash,[3] C shell, tcsh, Hamilton C shell, KornShell, cmd.exe, and PowerShell for operating systems such as Windows and Unix-like systems.
The pushd
command, when called with a filepath as an argument, saves the current working directory in memory (via a directory stack) so it can be returned to at any time, places the new filepath at the top of the stack, and changes to the new filepath. The popd
command returns to the path at the top of the directory stack.[4][5] This directory stack is accessed by the command dirs
in Unix or Get-Location -stack
in Windows PowerShell.
The first Unix shell to implement a directory stack was Bill Joy's C shell.[citation needed] The syntax for pushing and popping directories is essentially the same as that used now.[6][7]
Both commands are available in FreeCOM, the command-line interface of FreeDOS.[8]
In 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 pushd
and popd
commands.
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, which has the effect of toggling between two directories.popd
[user@server /usr/ports] $ pushd /etc
/etc /usr/ports
[user@server /etc] $ popd
/usr/ports
[user@server /usr/ports] $
C:\Users\root>pushd C:\Users
C:\Users>popd
C:\Users\root>
@echo off
rem This batch file deletes all .txt files in a specified directory
pushd %1
del *.txt
popd
echo All text files deleted in the %1 directory