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

linux中的pushd命令及栈原理

 
阅读更多

今天看了linux下面的pushd的命令:感觉不错。
我们可以将目录pushd到目录栈中,然后通过pushd进行切换目录。
但是这个命令多了一个功能 +n和-n。就将对栈中的元素进行移动,其实pushd不添加参数就是移动栈中元素的。
这个是怎么移动的哪,我看网上介绍不是很清楚,自己打开数据结构,看了一下。
栈是限定在表的一端进行元素的插入和删除运算的线性表,将进行插入和删除的这一端称为栈顶,另一端称为栈底。
栈的基本操作有下面几类:
(1)InitStack(S)
     构造一个空栈S。
(2)StackEmpty(S)
     判栈空。若S为空栈,则返回TRUE,否则返回FALSE。
(3)StackFull(S)
     判栈满。若S为满栈,则返回TRUE,否则返回FALSE。
注意:该运算只适用于栈的顺序存储结构。
(4)Push(S,x)
     进栈。若栈S不满,则将元素x插入S的栈顶。
(5)Pop(S)
     退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。
(6)StackTop(S)
     取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。
对于栈的基本操作命令:
1,操作1,2,3我们就不用考虑了,这三个命令在调用之前已经处理了,对我们使用者是透明的。
2,操作4,进栈:pushd 目录  就是这个操作
3,操作5,退栈:popd  就是这个操作
4,操作6,取栈顶元素,好像没有这个操作,但其实用dirs查看这个栈中所有元素。
加强的栈功能:
1,对于没有参数的pushd,其实就是将栈顶的第一个元素和第二元素交换位置。
提示:这个操作的所有操作,当前目录显示的有当前栈中第一个元素。
2,push +n和-n是我主要解释的。
这个命令中有队列的影子的。栈中元素移动时,都是从栈顶移出,然后插入到栈底。
(1)我们将栈按像数组一样进行编号,从栈顶开始:0,1,2,3 ...
pushd +n 不是将编号为n的移到栈顶,移出的0到n-1个元素依次插到栈底。
例如:栈中的元素为a,b,c,d
pushd +1后元素为b,c,d,a
pushd +2后元素为c,d,a,b
pushd +0后元素没有变化:a,b,c,d
(2)对于pushd -n命令和上面一样,只是编号不一样。
这次编号从栈底从开始(假如有4个元素):-3,-2,-1,-0
pushd -n,将编号为-n的移到栈顶,移出的从栈顶到-n+1的元素依次插到栈底。
例如:栈中的元素为a,b,c,d
pushd -1后元素为c,d,a,b
pushd -2后元素为b,c,d,a
pushd -0后元素没有变化:d,a,b,c
(3)总结一下:
假设有n个元素,那么pushd -i 与pushd +(n-1-i) 是相同的。
例如有4个元素的话:
pushd -2与pushd +(4-1-2)是相同的。
这样就清楚这个命令对栈中元素是怎么移动的了。

分享到:
评论

相关推荐

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

    在Linux的多目录命令提示符中工作是一种痛苦的事情,在Linux命令提示中,可以用cd命令来改变当前目录。用pushd实现在不同目录间切换。文中介绍了利用cd和pushd切换目录的技巧有助于你节省时间和精力。

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

    在Linux的多目录命令提示符中工作是一种痛苦的事情,但以下这些利用cd和pushd切换目录的技巧有助于你节省时间和精力。本文介绍了Linux操作系统中巧用CD和Pushd切换目录的方法。

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

    今天小编就为大家分享一篇关于linux shell之pushd、popd和dirs的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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

    是否曾经希望在Matlab中实现Unix命令push,popd和dirs的实现? 他们来了。 像 cd 一样使用 pushd。 唯一的区别是:每次使用 pushd 时,您留下的目录都会保存在堆栈中。 要返回,只需键入 popd,它会将您带到堆栈...

    Linux 101 hacks (2nd)

    技巧5:用―dirs‖、―pushd‖、―popd‖来操作目录栈 技巧6:用―shopt –s cdspell‖自动纠正―cd‖命令的目录名输入错误 第二章:日期操作 技巧7:设置系统日期和时间 技巧8:设置硬件日期和时间 技巧9:用特定...

    ubuntu-编译时出现-bin-sh-1-pushd- not found.pdf

    ubuntu ubuntu_编译时出现_bin_sh_1_pushd_ not found

    cmd延时执行命令

    @echo off pushd "%~dp0" timeout /t 20 /nobreak start msconfig.exe ------------------------------- 延时20秒 启动 msconfig.exe 内容就这些

    pushd:pushd 和 popd 的 MATLAB 版本,均可在 UNIX/Linux 和 DOS 中使用。 添加一些特定于 Matlab 的专长-matlab开发

    PUSHD(directory/file-spec) 存储当前工作目录并将当前目录更改为字符串 directory-spec 中指定的目录。 要返回存储目录调用 POPD,请... PUSHD 和 POPD 这两个文件旨在模仿 UNIX/Linux 和 DOS 中具有相同名称的函数。

    CMD命令大全 学习的必要工具

    FOR 为一套文件中的每个文件运行一个指定的命令。 FORMAT 格式化磁盘,以便跟 Windows 使用。 FTYPE 显示或修改用于文件扩展名关联的文件类型。 GOTO 将 Windows 命令解释程序指向批处理程序 中某个标明的行。 ...

    DOS命令大全_速查手册

    将 Windows 命令解释程序指向批处理程序 中某个标明的行。 GRAFTABL 启用 Windows 来以图像模式显示 扩展字符集。 HELP 提供 Windows 命令的帮助信息。 IF 执行批处理程序中的条件性处理。 LABEL 创建、更改...

    dos命令大全.pdf

    FOR 为一组文件中的每个文件运行一个指定的命令。 FORMAT 格式化磁盘,以便用于 Windows。 FSUTIL 显示或配置文件系统属性。 FTYPE 显示或修改在文件扩展名关联中使用的文件 类型。 GOTO 将 Windows 命令解释程序...

    pushd, 快速的多协议移动和网络推送通知服务.zip

    pushd, 快速的多协议移动和网络推送通知服务 通用移动推送守护进程这就是一个可以向移动本地应用程序发送服务器端通知的服务器,你可以从一个入口点向任何支持的移动平台,网络应用程序或者HTTP服务器发送推送通知。...

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

    切换目录的方式有很多种,最常用的莫过于cd 命令了,这里介绍四个命令pushd,popd,dirs,cd -的使用方法

    pushd:开源分布式pubsubIM服务器

    pushd.mac如何使用应该在防火墙中打开端口2222(可选)和2223,我们将其用作tcp服务器和s2s网关独立删除“ etc_servers”部分或将其留空运行服务器:bin / pushd。(linux | mac) 运行客户端(例如telnet):telne

    CMD以及VBS的所有命令帮助

    有CMD的所有函数命令帮助:ASSOC AT ATTRIB BREAK CACLS CALL CD CHCP CHDIR CHKDSK CHKNTFS CLS CMD COLOR COMP COMPACT CONVERT COPY DATE DEL DIR DISKCOMP DISKCOPY DOSKEY ECHO ENDLOCAL ERASE EXIT FC FIND ...

    DOS编程高级技巧,命令详解,相关知识

    第三章 FOR命令中的变量 一、 ~I - 删除任何引号("),扩展 %I 二、 %~fI - 将 %I 扩展到一个完全合格的路径名 三、 %~dI - 仅将 %I 扩展到一个驱动器号 四、 %~pI - 仅将 %I 扩展到一个路径 五、 %~nI - 仅将 %I ...

    网管常用命令

    网管常用的网络命令集 如果你玩过路由器的话,就知道路由器里面那些很好玩的命令缩写。  例如,"sh int" 的意思是 "show interface"。  现在 Windows 2000 也有了类似界面的工具,叫做 netsh。  我们在...

    Linux Shell Scripting Cookbook

    Fast command-line navigation using pushd and popd 126 Counting number of lines, words, and characters in a file 128 Printing directory tree 129 Chapter 4: Texting and Driving 131 Introduction 132 ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics