`
kongweile
  • 浏览: 517446 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux [bash]切换目录更方便: pushd,popd,dirs,cd

 
阅读更多

让切换目录更方便: 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不加参数在最近的两个目录之间切换时,
当前目录总是位于堆栈的最上面

分享到:
评论

相关推荐

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

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

    Linux 101 hacks (2nd)

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

    Linux 101 Hacks (英文原版)

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

    Bash_shell学习笔记

    - 目录处理:提供了`pushd`, `popd`和`dirs`等命令。 - 作业控制:支持`fg`和`bg`命令以及通过Ctrl+Z暂停任务。 - 大括号扩展:可以生成任意字符串。 - `~`扩展:用于表示用户的家目录。 - 别名:允许为命令或...

    Linux-101-Hacks

    使用`pushd`和`popd`命令可以在多个目录之间切换。 ```bash pushd /path/to/firstdir pushd /path/to/seconddir popd ``` #### Hack 5. Manipulate Directory Stack `dirs`命令可以显示当前的目录栈,而`pushd`和`...

    Linux_101_Hacks_CN

    **技巧1:CDPATH: 设置cd命令的基目录** - **知识点**: `CDPATH` 是一个环境变量,用于定义当用户试图切换到不存在的目录时,`cd` 命令应该搜索的一系列目录路径。 - **应用场景**: 当用户尝试进入一个不存在的目录...

    linux 基础文档

    - **pushd {dirname}:** 将当前目录压入目录栈,并切换到指定的目录。 - **popd:** 弹出目录栈顶部的目录,并切换到该目录。 - **dirs -v:** 列出当前的目录栈。 - **cd -:** 回到上一次所在的目录。 - **cd -{N}:**...

    发布Linux Hack 101

    《发布Linux Hack 101》是一本专为Linux爱好者及专业人员编写的书籍,它深入浅出地讲解了一系列Linux小技巧与高级命令用法,旨在帮助读者更高效、更灵活地操作Linux系统。以下是对该书中部分核心知识点的详细解析。 ...

    Linux_101_Hacks统稿by朱涛(经典英文版朋友翻译的)

    #### 技巧1:CDPATH: 设置cd命令的基目录 - **解释**:`CDPATH`是一个环境变量,用于指定`cd`命令查找目录的位置列表。当你尝试进入一个子目录但未找到时,`cd`命令会根据`CDPATH`变量中列出的路径依次查找相应的子...

    Linux101 Hacks 2rd

    除了`pushd`和`popd`外,还可以使用`dirs`命令查看目录栈的内容,使用`popd`+数字来弹出特定位置的目录,或使用`pushd`+数字来切换到目录栈中的某个位置。 **Hack 6. Automatically Correct Mistyped Directory ...

    Linux-101-Hacks.pdf

    还有技巧比如单命令完成创建目录和进入目录的操作,使用“cd -”在最近两个目录之间切换,以及使用dirs、pushd和popd来操作目录栈。此外,还有一个技巧是开启“cdspell”选项,使得在使用cd命令时自动更正拼写错误的...

    华为内部学习资料——Linux常用命令及基础知识介绍

    - **`cd`**:切换目录。 - **`cp`**:复制文件或目录。 - **`mv`**:移动文件或目录,也可以用于重命名文件。 - **`mkdir`**:创建新目录。 - **`rmdir`**:删除空目录。 - **`rm`**:删除文件或目录,需要注意使用...

Global site tag (gtag.js) - Google Analytics