1.软文推荐

2.软文推荐

3.软文推荐

pushd和popd是对一个目录栈进行操作,而dirs是显示目录栈的内容。而目录栈就是一个保存目录的栈结构,该栈结构的顶端永远都存放着当前目录。

1、pushd、popd和dirs 1.1 dirs

dirs常用的有两个参数:

选项 含义
-p 每行显示一条记录
-v 每行显示一条记录,同时展示该记录在栈中的index
-c 清空目录栈

下面没有显示地对目录栈进行任何操作,我们来看下当前目录栈的内容是什么:

pwd
/home/lfqy
$ dirs -v
0  ~
$ cd /
$ dirs -v
0  /
$ dirs -c
$ dirs -v
0  /
$

可以看出,目录栈中只有一个目录(当然是在栈顶),就是当前所在的目录。当切换目录之后,栈中的目录也随之改变。通过-c选项可以将目录栈中除当前目录之外的其它目录清除,由于上面的例子中目录栈只包含当前目录,所以没有变化。

1.2 pushd

每次pushd命令执行完成之后,默认都会执行一个dirs命令来显示目录栈的内容。pushd的用法主要有如下几种:

pushd 目录

pushd后面如果直接跟目录使用,会切换到该目录并且将该目录置于目录栈的栈顶。(时时刻刻都要记住,目录栈的栈顶永远存放的是当前目录。如果当前目录发生变化,那么目录栈的栈顶元素肯定也变了;反过来,如果栈顶元素发生变化,那么当前目录肯定也变了。)下面是一个例子:

pwd
/home/lfqy
$ pushd /
/ ~
$ dirs -v
0  /
1  ~
$ pushd ~/Music/
~/Music / ~
$ dirs -v
0  ~/Music
1  /
2  ~
$

这样,不难看出,用pushd在切换目录的同时,也将历史目录以栈结构的形式保存了下来。

pushd不带任何参数。

pushd不带任何参数执行的效果就是,将目录栈最顶层的两个目录进行交换。前面说过,栈顶目录和当前目录一个发生变化,另一个也变。这样,实际上,就实现了cd -的功能。下面是一个例子(这个例子接上文的执行现场):

dirs -v
0  ~/Music
1  /
2  ~
$ pushd
/ ~/Music ~
$ dirs -v
0  /
1  ~/Music
2  ~
$ pushd
~/Music / ~
$ dirs -v
0  ~/Music
1  /
2  ~
$

pushd +n

到这里,可能会想如果想切换到目录栈中的任意一个目录,该如何?pushd +n正是这个作用:pushd +n切换到目录栈中的第n个目录(这里的n就是dirs -v命令展示的index),并将该目录以栈循环的方式推到栈顶。下面是一个例子(接上文的执行现场),注意栈循环的方式带来的栈中内容的变化规律:

dirs -v
0  ~/Music
1  /
2  ~
$ pushd +2
~ ~/Music /
$ dirs -v
0  ~
1  ~/Music
2  /
$ pushd +1
~/Music / ~
$ dirs -v
0  ~/Music
1  /
2  ~
$
1.3 popd

每次popd命令执行完成之后,默认都会执行一个dirs命令来显示目录栈的内容。popd的用法主要有如下几种:

popd不带参数

popd不带任何参数执行的效果,就是将目录栈中的栈顶元素出栈。这时,栈顶元素发生变化,自然当前目录也会发生相应的切换(接上文的执行现场),下面是一个例子:

dirs -v
0  ~/Music
1  /
2  ~
$ popd
/ ~
$ dirs -v
0  /
1  ~
$ popd
~
$ dirs -v
0  ~
$

popd +n

将目录栈中的第n个元素删除(这里的n就是命令dirs -v显示的目录index)。下面是一个例子:

dirs -v
0  ~/Music
1  /
2  ~
$ popd +2
~/Music /
$

这里可以发现,如果对于目录栈的操作没有引发栈顶元素的变化,将不会导致当前目录的切换。

2、pushd和popd的+n和-n

上面我们用的都是+n作为参数,实际在使用pushd和popd的时候,有时候也会用到-n参数。两者的差别如下:+n的含义是从栈顶往栈底方向进行计数,从0开始;-n的含义刚好相反,从栈底向栈顶方向计数,从0开始。这样有点拗口,实际上,从默认的dirs命令(不带任何参数)的输出来解释最好理解了:+n是指从左往右数,-n是指从右往左数,都是从0开始。

本文来源:www.lxlinux.net/6652.html,若引用不当,请联系修改。

相关文章 8

2

这 20 个好习惯,助你写出好代码! 4分钟前

无论做什么行业,良好的习惯会让我们受益终生。 放在我们程序员写代码的过程中,想要写出好的代码,也要不断养成一些必要的好习惯,...

3

详解shell语法检查 6分钟前

写过shell脚本的人都知道,即便出现一些简单的语法错误,运行的时候也可能没有办法发现。有些看似运行正确的脚本,实际上 可能在某些...

4

超云主机(超云服务器) 7分钟前

目录:1、云主机和服务器到底哪个比较好?2、云主机有什么好处呢?3、云主机有什么好处的4、如何判断服务器是独立主机还是云主机5、云...

5

最详细的Linux系统sed使用教程 9分钟前

sed是Linux系统中一个非常好用的文本处理工具,能够很好的配合正则表达式使用,其功能非常的强大,下面良许教程网为大家分享一下Linux系...

6

Ubuntu中使用Grafana 监控 Docker具体方法 11分钟前

Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器。Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB,下...

7

湘潭网页制作(湘潭网站建设 案例湘潭磐石网络) 13分钟前

目录:1、怎样制作网页,麻烦详细一点,谢谢!2、怎样制做网页3、怎样制作个人网页?4、怎么制做网页?5、如何制作网页,希望由最简单的...

8

Linux系统部署Docker详细步骤 14分钟前

Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux...