让切换目录更方便: 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不加参数在最近的两个目录之间切换时,
当前目录总是位于堆栈的最上面
分享到:
相关推荐
本文将详细介绍如何利用`cd`命令之外的其他工具,如`pushd`、`popd`和`dirs`,来提升在Linux下的目录切换效率。 首先,我们熟悉的`cd`命令用于改变当前工作目录,但当需要在复杂的目录结构之间频繁切换时,它的效率...
- **概述**:利用`dirs`、`pushd`和`popd`命令可以方便地管理和切换多个目录。 - **应用场景**:适用于需要同时处理多个目录的场景。 - **使用方法**: ```bash pushd /path/to/first/directory # 执行一些操作.....
- **Hack 5: 使用`dirs`, `pushd`和`popd`操纵目录栈** - `dirs`显示目录栈的内容。 - `pushd`将当前目录压入目录栈,并更改到指定的新目录。 - `popd`从目录栈弹出顶部目录,并返回到这个目录。 - 示例: ```...
- 目录处理:提供了`pushd`, `popd`和`dirs`等命令。 - 作业控制:支持`fg`和`bg`命令以及通过Ctrl+Z暂停任务。 - 大括号扩展:可以生成任意字符串。 - `~`扩展:用于表示用户的家目录。 - 别名:允许为命令或...
使用`pushd`和`popd`命令可以在多个目录之间切换。 ```bash pushd /path/to/firstdir pushd /path/to/seconddir popd ``` #### Hack 5. Manipulate Directory Stack `dirs`命令可以显示当前的目录栈,而`pushd`和`...
**技巧1:CDPATH: 设置cd命令的基目录** - **知识点**: `CDPATH` 是一个环境变量,用于定义当用户试图切换到不存在的目录时,`cd` 命令应该搜索的一系列目录路径。 - **应用场景**: 当用户尝试进入一个不存在的目录...
- **pushd {dirname}:** 将当前目录压入目录栈,并切换到指定的目录。 - **popd:** 弹出目录栈顶部的目录,并切换到该目录。 - **dirs -v:** 列出当前的目录栈。 - **cd -:** 回到上一次所在的目录。 - **cd -{N}:**...
《发布Linux Hack 101》是一本专为Linux爱好者及专业人员编写的书籍,它深入浅出地讲解了一系列Linux小技巧与高级命令用法,旨在帮助读者更高效、更灵活地操作Linux系统。以下是对该书中部分核心知识点的详细解析。 ...
#### 技巧1:CDPATH: 设置cd命令的基目录 - **解释**:`CDPATH`是一个环境变量,用于指定`cd`命令查找目录的位置列表。当你尝试进入一个子目录但未找到时,`cd`命令会根据`CDPATH`变量中列出的路径依次查找相应的子...
除了`pushd`和`popd`外,还可以使用`dirs`命令查看目录栈的内容,使用`popd`+数字来弹出特定位置的目录,或使用`pushd`+数字来切换到目录栈中的某个位置。 **Hack 6. Automatically Correct Mistyped Directory ...
还有技巧比如单命令完成创建目录和进入目录的操作,使用“cd -”在最近两个目录之间切换,以及使用dirs、pushd和popd来操作目录栈。此外,还有一个技巧是开启“cdspell”选项,使得在使用cd命令时自动更正拼写错误的...
- **`cd`**:切换目录。 - **`cp`**:复制文件或目录。 - **`mv`**:移动文件或目录,也可以用于重命名文件。 - **`mkdir`**:创建新目录。 - **`rmdir`**:删除空目录。 - **`rm`**:删除文件或目录,需要注意使用...