Linux上使用pushd的时候,遇到了奇怪的问题,当我在/root/test folder下创建了tmp1,tmp2,tmp3 三个文件夹
drwx-----T 5 root root 4096 2011-08-11 05:09 ./
drwx------ 8 root root 4096 2011-08-10 05:21 ../
drwxr-xr-x 2 root root 4096 2011-08-11 05:09 tmp1/
drwxr-xr-x 2 root root 4096 2011-08-10 05:09 tmp2/
drwxr-xr-x 2 root root 4096 2011-08-10 05:09 tmp3/
然后执行在test folder下执行pushd,如下:
root@computer:~/test# pushd ./tmp1
~/test/tmp1 ~/test ~/test
root@computer:~/test/tmp1# dirs -v
0 ~/test/tmp1
1 ~/test
2 ~/test
此时我们是在tmp1目录下,执行cd ..回到上一级目录,再进行dirs查询:
root@computer:~/test/tmp1# cd ..
root@computer:~/test# dirs -v
0 ~/test
1 ~/test
2 ~/test
root@computer:~/test#
诡异的一幕出现了,栈中原来的目录没有了,全部换成了~/test。至今不明白为什么会这样。
但是当我使用以下面的方式使用pushd的时候则没有此问题
root@computer:~/test/tmp1# dirs
~/test/tmp1
root@computer:~/test/tmp1# pushd .
~/test/tmp1 ~/test/tmp1
root@computer:~/test/tmp1# cd ..
root@computer:~/test# cd tmp2
root@computer:~/test/tmp2# pushd .
~/test/tmp2 ~/test/tmp2 ~/test/tmp1
root@computer:~/test/tmp2# cd ..
root@computer:~/test# dirs -v
0 ~/test
1 ~/test/tmp2
2 ~/test/tmp1
或者我们可以使用-n参数,如下:
root@computer:~/test# dirs
~/test
root@computer:~/test# pushd -n ./tmp1
~/test ./tmp1
root@computer:~/test# pushd -n ./tmp2
~/test ./tmp2 ./tmp1
root@computer:~/test# pushd -n ./tmp3
~/test ./tmp3 ./tmp2 ./tmp1
root@computer:~/test# dirs -v
0 ~/test
1 ./tmp3
2 ./tmp2
3 ./tmp1
在这里,-n参数只将其后的参数即目录压入到栈中,但是并不切换目录,当前目录始终是test目录。
分享到:
相关推荐
使用 `cd -` 命令可以快速返回上一个工作目录。这对于在多个目录间频繁切换非常有用。 #### Hack-5 操纵目录栈 Linux 提供了 `pushd` 和 `popd` 命令来管理目录栈。使用 `pushd` 可以将当前目录压入栈顶,并自动...
当你使用`cd`命令跳转到一个子目录时,如果该子目录在当前工作目录下不存在,Linux会根据`CDPATH`中的路径进行查找。例如,如果你设置了`CDPATH`为`:/home/user/subdir1:/home/user/subdir2`,那么执行`cd subdir`时...
通过设置bash的自动补全功能,可以在键入部分目录名后按Tab键,bash会尝试自动补全目录名。如果存在多个匹配项,则再次按Tab键会显示所有可能的选择。 ### Chapter 2: Essential Linux Commands **Hack 7. Grep ...
本书通过一系列实用的技巧(hacks),帮助读者掌握核心命令及其应用方法,从而更好地在Linux环境中工作。 #### 目录概览 本书按章节组织,涵盖了从基本命令到高级配置的各种主题。每一章都针对特定方面提供了深入的...
这份文档是由哈尔滨工业大学IBM技术俱乐部的同学在暑假期间翻译完成的一份关于Linux系统管理方面的资料,旨在帮助初学者更好地理解和掌握Linux系统的使用技巧。文档中包含了多个章节,每个章节都聚焦于特定领域的...
- **应用场景**: 在退出会话之前获取有关当前会话的一些信息。 - **示例**: 使用退出字符 `~.` 并显示会话信息: ```bash ~. ``` #### 四、重要的Linux命令 **技巧17:grep命令** - **知识点**: `grep` 命令...
在Linux操作系统中,掌握常用的命令是提升工作效率的关键。...了解并熟练使用这些Linux命令,能够使你在系统管理、文件操作和Shell脚本编写等方面更加得心应手。记住,熟能生巧,多实践才能真正掌握这些命令。
- 使用Tab键自动补全:在输入目录或文件名时,按下Tab键,Linux会尝试自动完成你输入的部分,大大提高了输入速度。 - `pushd`和`popd`:这两个命令可以让你像堆栈一样管理目录。`pushd`将当前目录推入堆栈并切换到...
例如,若用户尝试在`/usr`下寻找`csh`,但未找到,可以使用上箭头键回顾并修改命令为`/bin`下的`csh`。 - **命令行自动完成**:Bash支持命令和文件名的自动补全。当用户键入一部分命令或文件名后,按下制表符键,...
在计算机领域,尤其是Linux和Unix系统中,"cd"是一个非常基础且常用的命令,用于在终端或命令行界面中切换当前工作目录。而“CD武士”可能是对熟练掌握这一技能的用户的形象比喻,意味着他们能够快速、精准地在文件...
### Unix/Linux命令大全知识点 #### 一、启动、关机、登入、登出相关命令 - **登录**:`<login>` - 用户登录系统。...掌握这些命令对于任何使用Unix/Linux系统的开发者和管理员来说都是必不可少的技能。