Akemi

高效使用Linux-文件系统目录

2025/02/21

快速进入家目录下的目录

1
2
3
4
5
6
使用~或$HOME

cd ~/work
cd $HOME/work

cd /home/wangsheng/work

使用别名与变量跳转到经常需要访问的目录

这个应该也比较好理解,简单举两个例子

alias work='cd $HOME/work/Project/Web/src/'

或是

work=$HOME/work/Project/Web/src/

cd $work/css

使用函数快速跳转到多个目录

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
qcd() {
case "$1" in
work)
cd $HOME/work/Project/Web/src/
;;
k8s)
cd /etc/kubernetes/pki
;;
recipes)
cd $HOME/Family/Cokking/Recipes
;;
beatles)
cd $HOME/Music/mp3/Artists/Beatles
;;
*)
return 1
;;
esac
pwd
}

将这段函数写入shell的配置文件即~/.bashrc

然后就可以使用这样的方式快速切换目录了:
qcd work

使用CDPATH快速浏览文件系统

CDPATH 是一个用于扩展 cd 命令搜索路径的环境变量,允许用户通过 cd 命令快速切换到多个预定义路径下的目录,而无需输入完整路径。

和$PATH差不多,但$CDPATH搜索的不是二进制命令,而是子目录

CDPATH=$HOME:$HOME/Project:$HOME/work:/usr/local

当我执行cd ws时

会依次搜索
1.当前目录下是否存在ws
2.$HOME下是否存在ws
3.$HOME/Project下是否存在ws
4.$HOME/work下是否存在ws
5./usr/local下是否存在ws

利用CDPATH简化根目录访问

假设/home/wangsheng下还有两级子目录

CDPATH=$HOME:$HOME/Project:$HOME/helm-template:$HOME/git:..

家目录、家目录下的主要常用目录、父目录的相对路径两个点(..)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
快速寻找工作目录
cd staging

cd $HOME/Project/staging

cd chart/platform

$HOME/helm-template/chart/platform

快速同级目录切换,aaa与bbb为同级目录,添加了父目录的相对路径,使其可以快速切换
cd staging/aaa
cd bbb

$HOME/Project/staging/bbb

使用cd -快速切换目录

1
2
3
4
5
6
7
8
pwd
/home/wangsheng/Finances/Bank/xxxx/asd

cd /etc
cd -
就能切换回原本的目录

缺陷是只能保存一个路径,只允许在两个目录之间来回切换

使用popd与pushd快速切换多个目录

这是一个栈结构,通过pushd将目录压入栈,通过popd将目录弹出栈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pushd ~/project1
pushd /tmp

查看当前栈(-v显示序号 -p纵向输出)
dirs -v -p
0 /tmp
1 ~/project1
2 ~

切换回目录pushd
pushd +1
将~/project1重新压入栈,并切换

切换回目录popd
popd +0
切换到之前标签为1的目录下
弹出栈,这个比较复杂,可以只用pushd
CATALOG