`
天梯梦
  • 浏览: 13754945 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

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

 
阅读更多

一,为何要使用这几个命令?
  可能大家会有疑问,为何要使用这几个命令,
  难道用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出去的

 

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

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

 

 

 

 

 

分享到:
评论

相关推荐

    linux shell之pushd、popd和dirs的使用讲解

    总结来说,`pushd`、`popd`和`dirs`是Linux Shell中非常实用的工具,它们能够帮助用户有效地管理目录栈,方便在多个工作目录之间快速切换。熟练掌握这些命令,可以极大地提高日常的Shell工作效率。在日常的Linux系统...

    pushd、popd 和 dirs:用于在目录之间移动的快捷方式,如 Unix pushd、popd 和 dirs 命令。-matlab开发

    是否曾经发现自己在使用 Matlab 并希望能够快速返回到刚才所在的目录? 还是之前的那个? 是否曾经希望在Matlab中实现Unix... 在 Matlab 命令行中键入“help pushd”、“help popd”或“help dirs”以获取更多信息。

    Linux操作系统中巧用CD和Pushd切换目录

    "Linux操作系统中巧用CD和Pushd切换目录" 在Linux操作系统中,切换目录是我们在命令行中工作的必备技能。使用cd和pushd命令可以快速地切换目录,节省时间和精力。本文将介绍Linux操作系统中巧用CD和Pushd切换目录的...

    Solaris用户命令中英文对照参考.doc

    - cd,chdir, pushd, popd, dirs:改变工作目录 - cdc, sccs-cdc:改变 SCCS 增量更改的增量更改说明 - chdir:改变工作目录 - checheq:排版数学测试 - checknr:检查 nroff 和 troff 输入文件的错误 - chgrp:改变...

    Pushd、Popd、dirs:Unix 风格的 pushd、popd 和 dirs 的 MATLAB 实现。-matlab开发

    pushd、popd 和 dirs 实现了一个 unix 风格的目录栈。 它使用一个全局变量来保存堆栈。 用法示例: > cd myDir myDir> pushd('anotherDir') anotherDir> %excute 命令在这里另一个目录> 目录目录另一个目录> popd ...

    linux 切换路径使用方法指南.docx

    Linux 切换路径使用方法指南 Linux 操作系统中,经常需要在不同的目录之间切换路径。在命令行中使用 cd 命令可以实现...使用 cd、pushd、dirs 等命令可以方便地在不同的目录之间切换,提高工作效率,节省时间和精力。

    Linux操作系统命令大全

    - 示例:`pushd /path/to/directory` 将当前目录压入栈并切换到指定目录。 - **1.1.10 从栈顶弹出目录:`popd`** - 用途:从工作目录栈中弹出顶部的目录并切换回该目录。 - 示例:`popd` 从栈顶弹出一个目录,并...

    Linux 命令 Linux常用命令全集.CHM 电子书

    - **示例**: `cd /usr/local` 将当前工作目录切换到 `/usr/local`。 **1.1.2 显示当前目录 -- pwd** - **用途**: `pwd` 命令用于显示当前工作目录的完整路径。 - **语法**: `pwd` - **示例**: 执行 `pwd` 后,会...

    关于linux日常使用的shell命令

    20. **pushd**:将当前目录推送到目录栈,并切换到另一个目录。 - 示例:`pushd /home/user`。 21. **set**:设置 shell 的选项。 - 示例:`set -x`。 22. **shopt**:配置 shell 的选项。 - 示例:`shopt -s ...

    Linux常用命令

    - `pushd`和`popd`:这两个命令用于管理目录堆栈,`pushd`将当前目录压入堆栈,并切换到新目录;`popd`则从堆栈中弹出一个目录,返回上一个目录。 - `dirname`:提取文件路径中的目录部分。 - `ls`:列出目录内容...

    Linux-101-Hacks

    - **概述**:可以通过定义 `cd` 的别名来实现更快速、更简洁的目录切换方式。 - **命令示例**: ```bash alias cdu='cd ..' ``` - **应用场景**:在需要频繁返回上级目录时非常有用。 #### Hack 3:单条命令同时...

    pushd.vim:Vim的push,popd和dirs的小实现

    小型实现push / popd / dirs 像外壳中的推入式,弹出式和脏式一样? 现在,您可以在vim中执行相同的操作。 我写这篇文章是为了拥有一个不错的小脚本,以便在vim中使用push和popd。 还有其他插件,但是它们很大,并且...

    Linux 101 Hacks (英文原版)

    - **Hack 5: 使用`dirs`, `pushd`和`popd`操纵目录栈** - `dirs`显示目录栈的内容。 - `pushd`将当前目录压入目录栈,并更改到指定的新目录。 - `popd`从目录栈弹出顶部目录,并返回到这个目录。 - 示例: ```...

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

    本文将详细介绍四个用于切换目录的命令:`cd`、`pushd`、`popd` 和 `dirs`。 首先,最基础的命令是 `cd`(change directory),用于进入指定的目录。例如,`cd learn/fd` 将会将当前工作目录切换到 `learn/fd`。而 ...

    Linux下如何高效切换目录的方法

    本文将详细介绍如何利用`cd`命令之外的其他工具,如`pushd`、`popd`和`dirs`,来提升在Linux下的目录切换效率。 首先,我们熟悉的`cd`命令用于改变当前工作目录,但当需要在复杂的目录结构之间频繁切换时,它的效率...

    Linux 101 hacks (2nd)

    - **概述**:利用`dirs`、`pushd`和`popd`命令可以方便地管理和切换多个目录。 - **应用场景**:适用于需要同时处理多个目录的场景。 - **使用方法**: ```bash pushd /path/to/first/directory # 执行一些操作.....

    linux 基础文档

    - **cd -:** 回到上一次所在的目录。 - **cd -{N}:** 切换到目录栈中的第N个目录,如`cd -2`将切换到第二个目录。 以上是关于Linux基础操作中的一些核心概念和命令介绍,这些操作对于日常使用Linux系统至关重要。...

Global site tag (gtag.js) - Google Analytics