一,为何要使用这几个命令?
  可能大家会有疑问,为何要使用这几个命令,
  难道用cd不就可以切换目录了吗?
  没错,使用cd就可以切换到需要访问的目录,
  但是有时会是一个路径很长,层次很多的目录,进到此目录下后,这时我们不小心运行了 cd命令,
  理所当然,我们回到了自己的home目录,这时如果想回去怎么办?

还有:因为工作的需要,我们需要不停在几个很深层的目录之间切换,不止一个,
  那么即使有tab键帮忙,我们也会因为一个cd命令花费很多时间,如何在多个目录之间切换时能更方便些
  pushd,popd是我们的好帮手

说明:  pushd,popd,dirs这几个我们讲到的命令是bash内建的命令,
        所以只要登录到了bash,这几个命令就可以使用了

二, 如何在两个目录之间切换?

如果只是在两个目录之间切换,那么还不必使用pushd,
 这时只需使用 cd -就可以了

cd -的作用是可以回到前一个目录,
 看例子:

  [root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/[root@localhost pics]# cd -/root[root@localhost ~]# cd -/usr/share/kde4/apps/kget/pics[root@localhost pics]#

怎么样?在两个目录之间切换非常方便,无需再输入很长的路径

说明:
 为何cd -能够回到前一个目录?
 这是因为 -在此处等同于 $OLDPWD变量,
 此问题可以参见bash的info信息,
 cd 一项有相关的说明: An argument of - is equivalent to $OLDPWD.

$OLDPWD变量就是bash所记录的前一个目录
 也就是说:$OLDPWD和-相等

下面我们再看一个例子:

 [root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/[root@localhost pics]# echo $OLDPWD;/root[root@localhost pics]# cd $OLDPWD[root@localhost ~]# echo $OLDPWD;/usr/share/kde4/apps/kget/pics[root@localhost ~]# cd $OLDPWD;[root@localhost pics]# echo $OLDPWD;/root

我们可以得到结构:  用cd -和cd $OLDPWD都可以在最近所操作的两个目录之间进行切换

三, 如何在多个目录之间切换?

因为 cd -和 cd $OLDPWD都是只支持最近操作的两个目录,所以要在多个目录之间操作时,
 我们需要使用 pushd

1, 先来介绍我们会用到的3条命令

pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中
        如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换

popd: 弹出堆栈中最近的目录
 dirs: 列出当前堆栈中保存的目录列表

看例子:

 [root@localhost ~]# pushd /usr/local/sbin//usr/local/sbin ~[root@localhost sbin]# dirs/usr/local/sbin ~[root@localhost sbin]# dirs -p -v0  /usr/local/sbin1  ~[root@localhost sbin]# pushd /usr/share/kde4/apps/kget//usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhost kget]# dirs -p -v0  /usr/share/kde4/apps/kget1  /usr/local/sbin2  ~

说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表
             -v参数可以在目录前加上编号
             注意:有 -v时,不添加 -p也可以每行一个目录的形式显示
 说明之二:我们可以看到:最近压入堆栈的目录位于最上面

2, 如何在最近的两个目录之间切换?

在最近的两个目录之间切换:用pushd不加参数即可

 [root@localhost kget]# pushd /boot/grub//boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhost grub]# dirs -v0  /boot/grub1  /usr/share/kde4/apps/kget2  /usr/local/sbin3  ~[root@localhost grub]# pushd/usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~[root@localhost kget]# dirs -v0  /usr/share/kde4/apps/kget1  /boot/grub2  /usr/local/sbin3  ~[root@localhost kget]# pushd/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhost grub]# dirs -v0  /boot/grub1  /usr/share/kde4/apps/kget2  /usr/local/sbin3  ~

说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,
       当前目录总是位于堆栈的最上面

3, 如何在多个目录之间切换?

用 pushd +n即可
  说明:
  n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部
  需要注意: 堆栈从第0个开始数起

看例子:

  [root@localhost grub]# dirs -v0  /boot/grub1  /usr/share/kde4/apps/kget2  /usr/local/sbin3  ~[root@localhost grub]# pushd +2/usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget[root@localhost sbin]# dirs -v0  /usr/local/sbin1  ~2  /boot/grub3  /usr/share/kde4/apps/kget

4, 如何把目录从堆栈中删除?
  用popd即可

看例子:

 [root@localhost sbin]# dirs -v0  /usr/local/sbin1  ~2  /boot/grub3  /usr/share/kde4/apps/kget[root@localhost sbin]# popd~ /boot/grub /usr/share/kde4/apps/kget[root@localhost ~]# dirs -v0  ~1  /boot/grub2  /usr/share/kde4/apps/kget[root@localhost ~]# popd +1~ /usr/share/kde4/apps/kget[root@localhost ~]# dirs -v0  ~1  /usr/share/kde4/apps/kget

说明:可以看到popd不加参数的运行情况:
       popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录
  说明之二: popd 加有参数 +n时,
  n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除

四,多学一点知识

1, pushd和popd都可以只影响堆栈而不切换目录
    用 -n参数即可
   
   看例子:

    [root@localhost ~]# dirs -v0  ~1  /usr/share/kde4/apps/kget[root@localhost ~]# pushd -n /boot/grub~ /boot/grub /usr/share/kde4/apps/kget[root@localhost ~]# dirs -v0  ~1  /boot/grub2  /usr/share/kde4/apps/kget

2, dirs可以清空目录堆栈
     用 -c参数即可

看例子:

     [root@localhost ~]# dirs -v0  ~1  /boot/grub2  /usr/share/kde4/apps/kget[root@localhost ~]# dirs -c[root@localhost ~]# dirs -v0  ~

说明:  位于堆栈顶部的目录是当前目录,它不能被pop出去的

原文:http://www.cnblogs.com/zhengyuxin/articles/1933920.html

转自:Linux: 让切换目录更方便: pushd,popd,dirs,cd -

Linux: 让切换目录更方便: pushd,popd,dirs,cd -相关推荐

  1. linux怎么连续退回上次目录?cd - 只能在两个目录间来回切换(autojump)(pushd popd dirs)

    方法1 GitHub 搜索 autojump ,可能会满足你的需求. 参考文章:linux怎么连续退回上次目录? - Nlage的回答 - 知乎 方法2 pushd popd dirs 当进到想保存的 ...

  2. Linux shell - 目录栈操作(pushd popd dirs)

    说明 使用shell开发一些较为复杂的系统,例如:复杂的编译系统等,可能会遇到类似需求:source 脚本后,在任意目录执行封装好的编译命令,跳转到其它目录执行相应的编译命令,编译完后再跳转回来. 常 ...

  3. Linux之切换目录命令

    Linux之切换目录命令 1. 切换目录命令的使用 命令 说明 cd 目录 切换到指定目录 cd ~    [与直接cd效果是一样的] 切换到当前用户的主目录 cd .. 切换到上一级目录 cd . ...

  4. linux shell pushd popd dirs命令

    1.dirs 1)功能 显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录) 2)语法 (1)格式:dirs  [-clpv]  [+n]  [-n] (2)选项 -c    删 ...

  5. linux切换目录使用命令,linux命令切换目录的使用方法

    1.cd - 作用是快速切换到前一个目录,如下: amosli@amosli-pc:~$ cd learn/fd/ amosli@amosli-pc:~/learn/fd$ cd - /home/am ...

  6. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客

    今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/oft ...

  7. linux 脚本 切换目录,在shell脚本中切换目录ros生成

    用VB打造自己的SQL连接器 大家好.....好长时间没上网了...祝大家新年快乐....好了.工程开始 现建一个普通窗口..放上3个textBox控件. 一个是用来输入ip的txtaddres..还 ...

  8. Linux常见的目录及作用

    目录 导语 Linux的树目录结构 ​ Linux的目录和作用 目录的相关命令 绝对路径与相对路径的区别 导语 1.Linux中使用的都是从 /[根] 目录开始的  2.在Linux中一切皆文件  3 ...

  9. ubuntu切换目录命令

    Ubuntu Linux命令查看目录信息 1. 切换目录命令的使用 cd ~效果: cd ..效果: cd .效果 cd -效果 1. 切换目录命令的使用 命令 说明 cd目录 切换到指定目录 cd ...

最新文章

  1. 《Maven官方指南》指南第三方部署到远程仓库
  2. Linux的mount命令简介
  3. 图解 navicat for oracle 的使用
  4. 无根树转有根树的一般方法
  5. Docker(二)容器操作容器
  6. Mr.J-- jQuery学习笔记(九)--事件绑定移除冒泡
  7. [***]HZOI20190714 T2熟练剖分
  8. 小程序navigator跳转路径url写法
  9. jQuery学习(一)—jQuery应用步骤以及ready事件和load事件的区别
  10. 从安装、管理到防御,阿里云安骑士全向测评
  11. css3 混合,css3混合模式
  12. 毛星云opencv入门边缘检测Canny代码
  13. 【物理学】扫描隧道显微镜(Scanning Tunneling Microscope)
  14. nebula graph调研
  15. 阴天快乐 -- 陈奕迅(eason)
  16. 服务机器人研究报告:产业链分析及投资前景预测
  17. 前端HTML页面实现批量下载
  18. python爬京东延迟加载_python大规模爬取京东
  19. 第五章 资本主义发展的历史进程
  20. 鸿蒙系统安装第三方,网友表示:鸿蒙最新系统可以通过连接U盘安装第三方软件了...

热门文章

  1. 回文字符串(51Nod-1092)
  2. 过山车(HDU-2063)
  3. 装箱问题(信息学奥赛一本通-T1295)
  4. 取余运算(信息学奥赛一本通-T1326)
  5. python的os模块使用_Python学习笔记之os模块使用总结
  6. python安装插件报错原因_Sublime Text3 python自动补全问题——Sublime Text3安装Anaconda插件...
  7. python dict方法_python dict()方法学习笔记
  8. OpenGL:关于获取渲染结果的深度信息的问题
  9. Opencl cl_khr_fp16
  10. 将 EndNote 文献信息导出成 BibTeX 格式(可根据label排序)以及出现三个问号