linux 命令之 pushd、popd、dirs,以及栈的基础知识

栈的定义

栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表

  • 插入、删除这些操作的一端为栈顶(Top),另一端称为栈底(Bottom)
  • 当表中没有元素时称为空栈
  • 栈为一种先进后出的数据结构。或者称为后进先出

栈的修改需要遵循先进后出的原则。每次删除(退栈)的总是当前栈中”最新”元素(最后入栈的元素),而最先插入的元素是被放在栈的底部,要最后才能删除。

如图所示,元素是以 a1,a2,…,a(n-1),an的顺序入栈,退栈的顺序则是 an,a(n-1),…,a2,a1



pushd命令:将目录压入目录栈

pushd [-n] [+N | -N | DIR]

-n : 只加入目录到目录栈,不进行cd动作。

+N : 移出 0 ~ N-1 元素依次插入栈底。(从左到右编号)

-N : 移出0 ~ -N 元素依次压入到栈顶 (从右到左编号)

DIR: 目录名。

示例

$ pwd
/a

$ pushd -n /b; pushd -n /c; pushd -n /d
/a /b
/a /c /b

$ pwd
/a  

##以上结果说明只执行了压入目录栈的动作。没有执行cd动作

$ pushd +1
/d /c /b /a
## 执行 pushd +1 之前, 目录栈的顺序是 /a /d /c /b
## 分别对应 0  1  2  3
## 移出 0 ~ N-1 元素依次插入栈底。(从左到右编号)
## 移出 0 ~ 1-1 ,就是把 /a插入栈底
## 

$ pushd -1
/b /a /d /c
##  执行 pushd -1 之前的目录栈的顺序是 /d /c /b /a
## 移出0 ~ -N 元素依次压入到栈顶 (从右到左编号)
## 移出 0 ~ --1 ,移出 /a 压入栈顶,移出/b压入栈顶
## 

## **对于没有任何参数的pushd,其实就是将栈顶元素和当前目录交换**

popd命令:将目录弹出目录栈

popd [-n] [+N | -N]

    -n : 只弹出栈中目录,不进行cd动作
    +N : 弹出栈中第N个目录(从左到右编号,从0开始)
    -N:弹出栈中第N个目录(从右到左编号,从0开始)

dirs命令:显示目录栈

dirs [-clpv] [+N] [-N]

-c : 清空目录栈
-l : 显示完整路径。
-p :  一个目录一行的显示目录栈中的目录
-v : 一个目录一行的显示目录栈中的目录,目录前加上目录在目录栈中的编号(从左到右编号)
+N : 显示第N个目录。(从左到右编号)
-N : 显示第N个目录。(从右到左编号)
时间: 2024-10-07 07:35:57

linux 命令之 pushd、popd、dirs,以及栈的基础知识的相关文章

linux shell pushd popd dirs命令

1.dirs1)功能显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)2)语法(1)格式:dirs  [-clpv]  [+n]  [-n](2)选项-c    删除目录栈中的所有记录-l     以完整格式显示-p    一个目录一行的方式显示-v    每行一个目录来显示目录栈的内容,每个目录前加上的编号+N  显示从左到右的第n个目录,数字从0开始-N   显示从右到左的第n个日录,数字从0开始注意:dirs始终显示当然目录, 再是堆栈中的内容:即使目录堆栈为空,

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

与linux cd命令相似,用pushd实现在不同目录间切换 在命令行模式下,当你工作在不同目录中,你将发现你有很多时间都浪费在重复输入上如果这些目录不在同一个根目录中,你不得不在转换时输入完整的路径名,这难免让人有些难以忍受但你可以用以下的一个或两个步骤来避免所有多余的输入:用命令行解释器中的历史记录,或者用命令行函数pushd 用命令行解释器中的历史记录的好处是只需按很少的键在命令行中用向上的箭头来查找你用过的命令,直到你找到,然后按回车键如果你所切换的两个目录在整个驱动器的子目录结构中很接

Linux命令:时间,用户及系统常用基础总结

一.日期相关命令 Linux系统有两个时钟,硬件时钟和系统时钟 系统启动时从硬件读取日期和时间信息:读取完成后不再与硬件相关联: 1. date:系统时钟 (1)设定日期时间:date  [MMDDhhmm[[CC]YY][.ss]] 格式:月日时分[年].秒 秒默认为00,年可以用两位或者四位数值表示 (2)显示日期时间:date [OPTION]... [+FORMAT] FORMAT 显示格式符  +% :  %F,%T,%Y,%m,%d,%H,%M,%S %s: seconds sinc

Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

 一.WiFi相关基础概念 1.什么是wifi  我们看一下百度百科是如何定义的: Wi-Fi是一种可以将个人电脑.手持设备(如pad.手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号.[1]  无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有.目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性.有人把使用IEEE 802.11系列协议的局域网就称为无线保真.甚至把无线保真等同于无线网际网路(Wi-Fi是WLAN的重要组成部分). wifi 英文全称

1)Linux程序设计入门--基础知识

1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们 以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,

常用的46个linux命令

问题一: 绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案:绝对路径: 如/etc/init.d当前目录和上层目录: ./  ../主目录: ~/切换目录: cd 问题二: 怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程: ps执行退出: exit查看当前路径: pwd 问题三: 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?答案:清屏: clear退出当前命令: ctrl+c

工作中一些常用的linux命令

问题一: 绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案:绝对路径:如/etc/init.d当前目录和上层目录:./  ../主目录:~/切换目录:cd 问题二: 怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程:ps执行退出:exit查看当前路径:pwd 问题三: 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?答案:清屏:clear退出当前命令:ctrl+c 彻底退出执行睡眠

十年linux命令总结

十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令,其中关于外部命令.关键字或内建命令的划分,不一定正确.有很多命令,既是内建命令也 可能是外部命令,为啥?Bash为了更高效率的执行命令和脚本,把很多外部命令以内建命令的方式实现了.我们使用type这个命令就可以知道一个命令的类 型了,如下所示: [[email protected] ~]# typ

linux命令集

线上查询及帮助 [[email protected] ~]# man help (help command内建命令帮助)NAME       bash,  :,  .,  [,  alias,  bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue,       declare, dirs, disown, echo, enable, eval, exec, exit, export