赵走x博客
网站访问量:151887
首页
书籍
软件
工具
古诗词
搜索
登录
20、命令提示符
19、Bash 启动环境
18、mktemp 命令,trap 命令
17、脚本除错
16、set 命令
15、数组
14、Bash 函数
13、循环
12、条件判断
11、read 命令
10、Bash 脚本入门
9、目录堆栈
8、Bash 行操作
7、Bash 的算术运算
6、字符串操作
5、Bash 变量
4、引号和转义
3、Bash 的模式扩展
2、Bash 的基本语法
1、Bash 简介
9、目录堆栈
资源编号:76511
linux
Bash 脚本教程
热度:77
为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。
为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。 ## cd - Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,`cd -`命令可以返回前一次的目录。 ```bash # 当前目录是 /path/to/foo $ cd bar # 重新回到 /path/to/foo $ cd - ``` 上面例子中,用户原来所在的目录是`/path/to/foo`,进入子目录`bar`以后,使用`cd -`可以回到原来的目录。 ## pushd,popd 如果希望记忆多重目录,可以使用`pushd`命令和`popd`命令。它们用来操作目录堆栈。 `pushd`命令的用法类似`cd`命令,可以进入指定的目录。 ```bash $ pushd dirname ``` 上面命令会进入目录`dirname`,并将该目录放入堆栈。 第一次使用`pushd`命令时,会将当前目录先放入堆栈,然后将所要进入的目录也放入堆栈,位置在前一个记录的上方。以后每次使用`pushd`命令,都会将所要进入的目录,放在堆栈的顶部。 `popd`命令不带有参数时,会移除堆栈的顶部记录,并进入新的堆栈顶部目录(即原来的第二条目录)。 下面是一个例子。 ```bash # 当前处在主目录,堆栈为空 $ pwd /home/me # 进入 /home/me/foo # 当前堆栈为 /home/me/foo /home/me $ pushd ~/foo # 进入 /etc # 当前堆栈为 /etc /home/me/foo /home/me $ pushd /etc # 进入 /home/me/foo # 当前堆栈为 /home/me/foo /home/me $ popd # 进入 /home/me # 当前堆栈为 /home/me $ popd # 目录不变,当前堆栈为空 $ popd ``` 这两个命令的参数如下。 **(1)-n 参数** `-n`的参数表示仅操作堆栈,不改变目录。 ```bash $ popd -n ``` 上面的命令仅删除堆栈顶部的记录,不改变目录,执行完成后还停留在当前目录。 **(2)整数参数** 这两个命令还可以接受一个整数作为参数,该整数表示堆栈中指定位置的记录(从0开始),作为操作对象。这时不会切换目录。 ```bash # 从栈顶算起的3号目录(从0开始),移动到栈顶 $ pushd +3 # 从栈底算起的3号目录(从0开始),移动到栈顶 $ pushd -3 # 删除从栈顶算起的3号目录(从0开始) $ popd +3 # 删除从栈底算起的3号目录(从0开始) $ popd -3 ``` 上面例子的整数编号都是从0开始计算,`popd +0`是删除第一个目录,`popd +1`是删除第二个,`popd -0`是删除最后一个目录,,`popd -1`是删除倒数第二个。 **(3)目录参数** `pushd`可以接受一个目录作为参数,表示将该目录放到堆栈顶部,并进入该目录。 ```bash $ pushd dir ``` `popd`没有这个参数。 ## dirs 命令 `dirs`命令可以显示目录堆栈的内容,一般用来查看`pushd`和`popd`操作后的结果。 ```bash $ dirs ``` 它有以下参数。 - `-c`:清空目录栈。 - `-l`:用户主目录不显示波浪号前缀,而打印完整的目录。 - `-p`:每行一个条目打印目录栈,默认是打印在一行。 - `-v`:每行一个条目,每个条目之前显示位置编号(从0开始)。 - `+N`:`N`为整数,表示显示堆顶算起的第 N 个目录,从零开始。 - `-N`:`N`为整数,表示显示堆底算起的第 N 个目录,从零开始。