一,为何要使用这几个命令?

可能大家会有疑问,为何要使用这几个命令,

难道用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 -v

0  /usr/local/sbin

1  ~

[root@localhost sbin]# pushd /usr/share/kde4/apps/kget/

/usr/share/kde4/apps/kget /usr/local/sbin ~

[root@localhost kget]# dirs -p -v

0  /usr/share/kde4/apps/kget

1  /usr/local/sbin

2  ~

说明: 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 -v

0  /boot/grub

1  /usr/share/kde4/apps/kget

2  /usr/local/sbin

3  ~

[root@localhost grub]# pushd

/usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~

[root@localhost kget]# dirs -v

0  /usr/share/kde4/apps/kget

1  /boot/grub

2  /usr/local/sbin

3  ~

[root@localhost kget]# pushd

/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~

[root@localhost grub]# dirs -v

0  /boot/grub

1  /usr/share/kde4/apps/kget

2  /usr/local/sbin

3  ~

说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,

当前目录总是位于堆栈的最上面

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

用 pushd +n即可

说明:

n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部

需要注意: 堆栈从第0个开始数起

看例子:

[root@localhost grub]# dirs -v

0  /boot/grub

1  /usr/share/kde4/apps/kget

2  /usr/local/sbin

3  ~

[root@localhost grub]# pushd +2

/usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget

[root@localhost sbin]# dirs -v

0  /usr/local/sbin

1  ~

2  /boot/grub

3  /usr/share/kde4/apps/kget

4,如何把目录从堆栈中删除?

用popd即可

看例子:

[root@localhost sbin]# dirs -v

0  /usr/local/sbin

1  ~

2  /boot/grub

3  /usr/share/kde4/apps/kget

[root@localhost sbin]# popd

~ /boot/grub /usr/share/kde4/apps/kget

[root@localhost ~]# dirs -v

0  ~

1  /boot/grub

2  /usr/share/kde4/apps/kget

[root@localhost ~]# popd +1

~ /usr/share/kde4/apps/kget

[root@localhost ~]# dirs -v

0  ~

1  /usr/share/kde4/apps/kget

说明:可以看到popd不加参数的运行情况:

popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录

说明之二: popd 加有参数 +n时,

n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除

四,多学一点知识

1,pushd和popd都可以只影响堆栈而不切换目录

用 -n参数即可

看例子:

[root@localhost ~]# dirs -v

0  ~

1  /usr/share/kde4/apps/kget

[root@localhost ~]# pushd -n /boot/grub

~ /boot/grub /usr/share/kde4/apps/kget

[root@localhost ~]# dirs -v

0  ~

1  /boot/grub

2  /usr/share/kde4/apps/kget

2, dirs可以清空目录堆栈

用 -c参数即可

看例子:

[root@localhost ~]# dirs -v

0  ~

1  /boot/grub

2  /usr/share/kde4/apps/kget

[root@localhost ~]# dirs -c

[root@localhost ~]# dirs -v

0  ~

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

linux在多个目录跳转,如何做到在多个目录直接游刃有余的进行切换 -- linux 下的目录切换...相关推荐

  1. Linux,OS X mark工具(目录跳转工具)

    转帖请注明出处  林夕木大大 在命令行里进行一些操作时,经常会遇到在多个目录之间来回切换的情况.这个时候就会很是苦恼.所以在网上搜索一番后总结如下: Ubuntu/CentOS: 编辑 .bash_p ...

  2. linux目录跳转指令

    1.查看当前目录 pwd  2.跳转至 绝对路径 会从根目录/ 开始跳转.每个目录之间用/隔开 你跳转的目录知道完整目录就用这个 开头带 / cd /目录名       //例如:  cd /var/ ...

  3. 递归遍历Linux下的目录文件源码实现

    网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include ...

  4. linux下 proc 目录

    2019独角兽企业重金招聘Python工程师标准>>> Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制,proc文件系统是一个 ...

  5. Linux系统下查看目录大小

    转载:http://blog.csdn.net/iamlaosong/article/details/7085178 我们有个系统每天要下载数据,为了检查下载数据是否正常,需要查看下载数据目录大小,因 ...

  6. Linux 下各个目录的作用及内容

    Linux 下各个目录的作用及内容 在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对 ...

  7. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  8. linux下各个目录里面都装了什么

    文章来源:http://blog.csdn.net/sunstars2009918/article/details/7038772 搞电脑的人总想知道自己的系统里到底有些什么东西,于是我就在Linux ...

  9. linux 文件大小_整理 | Linux下列出目录内容命令

    IT服务圈儿 有温度.有态度的IT自媒体平台 来源:良许Linux(ID:liangxuxiansheng) 在 Linux 中,有非常多的命令可以让我们用来执行各种各样的任务.当我们想要像使用文件浏 ...

最新文章

  1. C语言hw,[c语言]EmailAddresses(for hw)
  2. Fastboot的安装与使用
  3. SQL SERVER中架构的理解
  4. 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本
  5. Git如何修改文件夹看不清的蓝色显示
  6. 什么是产品的愿景—从一篇博文中学得到
  7. Python安装Talib库
  8. 史蒂夫 乔布斯:遗失的访谈
  9. 关于NRF24L01模块使用的部分个人总结
  10. ccccccccccc
  11. Vista和Win2008中如何卸载IE8
  12. (转)练好太极拳 基本功是必经之路
  13. C#编程,Lazy(延迟初始化)用法
  14. java宠物狗商店交流网站ssm框架
  15. 极简自然语言处理技术发展史
  16. 每日一道Leetcode - 剑指 Offer 14- I. 剪绳子【动态规划】
  17. Linux脚本编程:sudo命令下设置定时任务
  18. onLoad和onShow触发时机及区别
  19. 可由线性表示且表达式唯一_线性代数期末模拟题一8p
  20. 一次同余式的求解和相关理论

热门文章

  1. 整合Flex和Java(上)
  2. Soft Skill
  3. Java中的几种对象(PO、VO、DAO、BO、POJO)
  4. 360互联网技术训练营第七期 -“遇见”PIKA
  5. React 第九章 表单的使用
  6. php获取cpu编码,PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
  7. linux man手册_Linux微操(基于Centos)
  8. 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理
  9. 问题:pom文件飘红, parent.relativePath
  10. Springboot+Spring-Security+JWT 实现用户登录和权限认证