Linux/Mac的目录切换

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

无论是Mac还是Linux,其实都一样,在终端下经常都需要进行目录的切换,但每次都用cd命令有点太繁琐了,特别是在目录很长,文件夹名字很长的情况下。本文主要是对终端下的一些目录切换名字的总结。

1. 两个目录之间的切换

-代表的是前一个目录,如果只在两个目录中切换,这个命令就够了,-等价于$OLDPWD$OLDPWD也是前一个目录。其目录切换的形式如下:

1
2
3
4
5
6
7
8
9
$ cd ~/MyEclipse/
$ cd -
/Users/***/Hexo
$ cd -
/Users/***/MyEclipse
$ cd -
/Users/***/Hexo
$ cd -
/Users/***/MyEclipse

2. 多个目录之间的切换

多个目录的切换要用到pushd,popd,dirs命令,下面是三个命令的解释:

  • dirs:显示目录栈

  • pushd:将目录压入目录栈,并切换目录(虚拟堆栈)

  • popd:将目录弹出目录栈,并切换目录(虚拟堆栈)

多余的话不说,直接上例子更直观:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# pushd会将参数目录和当前目录压入目录栈(虚拟堆栈)中,并跳转到参数目录,压入目录栈是按顺序压入的,~是当前用户的根目录
$ pushd Hexo
~/Hexo ~
$ pwd
/Users/***/Hexo

# pushd不加参数,回到前一个目录,并将当前目录压入目录栈中
$ pushd
~ ~/Hexo
$ pwd
/Users/***


# dirs查看目录栈中的目录
$ dirs
~/Hexo ~

# dirs -v显示目录的编号,并将目录按行排列,0代表新压入目录栈的目录
$ dirs -v
0 ~/Hexo
1 ~


# 压入一个新的目录到目录栈
$ pushd MyEclipse/
~/MyEclipse ~ ~/Hexo
$ pwd
/Users/***/MyEclipse


# dirs -p是按行显示目录栈中的目录
$ dirs -p
~/MyEclipse
~
~/Hexo

# popd是将栈顶的目录弹出,即编号为0的目录,并将目录切换到目录弹出后的栈顶目录
$ popd
~ ~/Hexo
$ pwd
/Users/***

$ popd
~/Hexo

# 如果栈中只有一个目录,即当前目录,是不能使用popd的
$ popd
-bash: popd: directory stack empty

# 如果栈中只有一个目录,是不能使用pushd的
$ pushd
-bash: pushd: no other directory


# dirs -c 清空目录栈,只剩当前目录在目录栈中
dirs -c



$ pushd MyEclipse/
~/MyEclipse ~

$ pushd ~/Hexo/
~/Hexo ~/MyEclipse ~

$ pushd ~/Practice/
~/Practice ~/Hexo ~/MyEclipse ~

$ dirs -v
0 ~/Practice
1 ~/Hexo
2 ~/MyEclipse
3 ~


# popd +n 弹出目录栈中指定位置的目录,并将目录切换到栈顶目录
$ popd +2
~/Practice ~/Hexo ~

$ dirs -v
0 ~/Practice
1 ~/Hexo
2 ~

# push +n 将目录切换到指定位置的目录,并将其压入目录栈栈顶
$ pushd +2
~ ~/Practice ~/Hexo
$ dirs -v
0 ~
1 ~/Practice
2 ~/Hexo

备注:如例子所示,如果只有两个目录的情况下,可以一直用pushd切换目录。

如果有收获,可以请我喝杯咖啡!