目录操作高手是如何炼成:dirs & pushd & popd

前言

Linux系统中,我们在目录之间切换一般使用cd命令,cd虽然可在目录之间来回切换,但是cd的效率太低,进入之后退出需要反复输入路径;那有没有一种高效简单的目录操作命令?
答案是肯定的,那就是:pushd & popd

命令简述

  • dirs:显示当前所在目录以及目录栈的内容
  • pushd(push dir): 将目录压入目录栈
  • popd(pop dir): 将目录弹出目录栈

目录栈遵循先进后出原则

dirs使用

dirs命令显示当前所在目录及目录栈中的内容。即使目录栈为空,dirs也会显示当前所在的目录

code sample:


# popd
-bash: popd: directory stack empty
# dirs
~
# pwd
/home/ramesh

pushd使用

先创建一些临时的目录然后把他们压入目录堆栈中去,执行pushd的同时也会跳转到对应的目录

code sample:


# mkdir /tmp/dir1
# mkdir /tmp/dir2
# mkdir /tmp/dir3
# mkdir /tmp/dir4

# cd /tmp/dir1
# pushd .
# cd /tmp/dir2
# pushd .
# cd /tmp/dir3
# pushd .
# cd /tmp/dir4
# pushd .

# dirs
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1

dirs显示的第一个目录名总会是当前所在的目录,而不是显式压入堆栈里的内容
当前目录栈的内容如下:

/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1

popd使用

最后被压入的目录会在堆栈的顶端。当你执行“popd”,系统就会跳转到栈顶的目录中,并且从堆栈中把它清除掉。正如上面所展示的,最后压入堆栈的是/tmp/dir4,所以当进行一次popd时,就会跳转到/tmp/dir4目录下同时从堆栈中将它移除

code sample:


# popd
# pwd
/tmp/dir4
[:执行完上popd命令之后,目录栈包括以下目录
/tmp/dir3
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir3
[:执行完上popd命令之后,目录栈包括以下目录
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir2
[:执行完上popd命令之后,目录栈包括以下目录 /tmp/dir1]
# popd
# pwd
/tmp/dir1
[:执行完上popd命令之后,目录栈包括以下目录]
# popd
-bash: popd: directory stack empty

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章