Difference between revisions of "Linux dirs stack - pushd and popd"

From Ever changing code
Jump to navigation Jump to search
(Created page with "<code>pushd</code>, <code>popd</code>, and <code>dirs </code>are shell builtins which allow you manipulate the [http://www.gnu.org/software/bash/manual/html_node/The-Directory...")
(No difference)

Revision as of 13:38, 18 August 2018

pushd, popd, and dirs are shell builtins which allow you manipulate the directory stack. This can be used to change directories but return to the directory from which you came.


FILO first-in-dir last-out-dir flow

pushd navigate/ #cd to navigate/ dir and adds absolute path to navigate/ dir to directory stack
dirs -v #manages dir stack, -v lists the stack verbosely
popd #consumes first pushed/added directory from stack


Demonstrate

mkdir -p ./navigate/dir{1..3}
piotr@ubuntu /tmp $ pushd navigate/ #cd and added to left/top of the stack
/tmp/navigate /tmp
piotr@ubuntu /tmp/navigate $ pushd dir1/ #cd and added to left/top of the stack
/tmp/navigate/dir1 /tmp/navigate /tmp
piotr@ubuntu /tmp/navigate/dir1 $ pushd ../dir2/ #cd and added to left/top of the stack
/tmp/navigate/dir2 /tmp/navigate/dir1 /tmp/navigate /tmp 
piotr@ubuntu /tmp/navigate/dir2 $ pushd ../dir3/ #cd and added to left/top of the stack
/tmp/navigate/dir3 /tmp/navigate/dir2 /tmp/navigate/dir1 /tmp/navigate /tmp
piotr@ubuntu /tmp/navigate/dir3 $ dirs -v #show the directory stack
 0  /tmp/navigate/dir3
 1  /tmp/navigate/dir2
 2  /tmp/navigate/dir1
 3  /tmp/navigate
 4  /tmp
piotr@ubuntu /tmp/navigate/dir3 $ popd #cd to last added /or left /or with the index [1]
/tmp/navigate/dir2 /tmp/navigate/dir1 /tmp/navigate /tmp
piotr@ubuntu /tmp/navigate/dir2 $ popd
/tmp/navigate/dir1 /tmp/navigate /tmp
piotr@ubuntu /tmp/navigate/dir1 $ popd
/tmp/navigate /tmp
piotr@ubuntu /tmp/navigate $ popd
/tmp
piotr@ubuntu /tmp $ popd
bash: popd: directory stack empty


Additional options and switches

dirs -c #clears out the directory stack
cd ~2 #cd taking advantage using directory stack, here cd to index.2 dir in the stack
#just remember index.0 always changes, to preserve the order always pushd dummy dir /or current dir .