栈的定义
栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表
栈的修改需要遵循先进后出的原则。每次删除(退栈)的总是当前栈中”最新”元素(最后入栈的元素),而最先插入的元素是被放在栈的底部,要最后才能删除。
如图所示,元素是以 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个目录。(从右到左编号)