Linux 路径与目录
1. Linux 的目录结构
Linux 的目录结构和 Windows 不太一样。
Windows 通常使用盘符:
text
C:\
D:\
E:\Linux 没有 C:、D: 这样的盘符概念。
Linux 所有文件和目录都从根目录开始:
text
/整个文件系统可以理解成一棵树:
text
/
├── home
│ └── user
│ ├── Documents
│ ├── Downloads
│ └── project
├── etc
├── usr
├── var
└── tmp其中 / 就是 Linux 文件系统的最顶层目录。
2. 根目录 /
Linux 中:
text
/表示根目录。
例如:
bash
cd /进入根目录。
查看根目录中的内容:
bash
ls /通常可以看到:
text
bin
boot
dev
etc
home
lib
media
mnt
opt
proc
root
run
srv
tmp
usr
var3. 当前目录
在 Shell 中,我们始终处于某一个目录。
查看当前所在目录:
bash
pwd例如:
text
/home/moonlit/project表示当前位于:
text
/
└── home
└── moonlit
└── project4. 绝对路径
绝对路径是从:
text
/开始写的完整路径。
例如:
text
/home/moonlit/Documents这是一个绝对路径。
因为它从根目录 / 开始。
进入这个目录:
bash
cd /home/moonlit/Documents无论当前在哪个目录,都可以使用绝对路径访问它。
例如当前位于:
text
/etc依然可以:
bash
cd /home/moonlit/Documents5. 相对路径
相对路径是相对于当前目录而言的路径。
假设当前目录:
text
/home/moonlit里面有:
text
Documents
Downloads
project可以直接:
bash
cd Documents这里的:
text
Documents就是相对路径。
完整路径其实是:
text
/home/moonlit/Documents6. 绝对路径和相对路径的区别
假设当前目录是:
text
/home/moonlit进入 Documents:
绝对路径
bash
cd /home/moonlit/Documents相对路径
bash
cd Documents两种方式最终进入的是同一个目录。
简单理解:
text
绝对路径:从 / 开始找
相对路径:从当前位置开始找7. . 当前目录
Linux 中:
text
.表示当前目录。
例如当前目录:
text
/home/moonlit/project那么:
text
.就代表:
text
/home/moonlit/project例如:
bash
ls .相当于:
bash
ls8. .. 上一级目录
text
..表示当前目录的父目录。
例如当前:
text
/home/moonlit/project执行:
bash
cd ..会进入:
text
/home/moonlit再次:
bash
cd ..进入:
text
/home再执行:
bash
cd ..进入:
text
/9. 多级返回
可以连续使用 ..。
例如当前:
text
/home/moonlit/project/src执行:
bash
cd ../..相当于:
text
src
↓
project
↓
moonlit最终进入:
text
/home/moonlit10. ~ 用户主目录
text
~表示当前用户的主目录。
例如用户名是:
text
moonlit那么:
text
~通常表示:
text
/home/moonlit执行:
bash
cd ~可以快速回到用户主目录。
也可以直接:
bash
cd效果基本相同。
11. 使用 ~ 构造路径
例如:
bash
cd ~/Documents实际上相当于:
bash
cd /home/moonlit/Documents再比如:
bash
cd ~/.config表示进入:
text
/home/moonlit/.config所以在 Linux 配置文件中,经常能看到:
text
~/.config
~/.local
~/.cache12. - 上一次所在目录
text
-表示上一次所在的目录。
例如:
bash
cd /etc然后:
bash
cd ~/Documents现在执行:
bash
cd -会重新回到:
text
/etc再次:
bash
cd -又会回到:
text
~/Documents适合在两个目录之间快速切换。
13. / 和 ~ 不一样
初学时很容易把:
text
/和:
text
~混淆。
它们完全不同。
/
系统根目录:
text
/整个 Linux 文件系统的最顶层。
~
当前用户的主目录,例如:
text
/home/moonlit所以:
bash
cd /和:
bash
cd ~去的是完全不同的位置。
14. 路径中的 /
Linux 使用:
text
/分隔目录。
例如:
text
/home/moonlit/Documents/project可以拆成:
text
/
home/
moonlit/
Documents/
project表示:
text
根目录
└── home
└── moonlit
└── Documents
└── project15. Linux 路径区分大小写
Linux 文件系统通常区分大小写。
例如:
text
Documents
documents
DOCUMENTS可以是三个完全不同的目录。
例如:
bash
cd Documents不等于:
bash
cd documents这一点和部分 Windows 使用习惯不同。
16. 隐藏文件和目录
Linux 中,以:
text
.开头的文件或目录通常属于隐藏文件。
例如:
text
.bashrc
.zshrc
.gitconfig
.config
.local普通:
bash
ls不会显示它们。
使用:
bash
ls -a可以查看隐藏文件。
例如:
bash
ls -la ~查看用户主目录中的所有文件。
17. 常见用户目录
用户主目录通常类似:
text
/home/用户名例如:
text
/home/moonlit其中可能包含:
text
Desktop
Documents
Downloads
Music
Pictures
Videos以及隐藏目录:
text
.config
.local
.cache
.ssh18. /home
text
/home通常用于存放普通用户的主目录。
例如:
text
/home/alice
/home/bob
/home/moonlit如果有三个普通用户:
text
alice
bob
moonlit那么可能对应三个主目录。
19. /root
text
/root是 root 用户的主目录。
注意:
text
/root和:
text
/不是一回事。
/:
text
系统根目录/root:
text
root 用户的主目录20. /etc
text
/etc主要存放系统和软件的配置文件。
例如:
text
/etc/ssh
/etc/nginx
/etc/hosts查看:
bash
ls /etc很多 Linux 软件的系统级配置都会放在这里。
21. /usr
text
/usr主要存放用户级程序、库和资源。
常见目录:
text
/usr/bin
/usr/lib
/usr/local例如很多命令实际位于:
text
/usr/bin可以使用:
bash
which git查看某个命令的位置。
22. /var
text
/var主要存放经常变化的数据。
例如:
text
/var/log
/var/cache其中:
text
/var/log常用于保存日志。
例如:
bash
ls /var/log23. /tmp
text
/tmp用于存放临时文件。
很多程序运行时会把临时数据放在这里。
例如:
bash
cd /tmp24. /dev
text
/dev用于表示设备。
Linux 中有一个重要思想:
text
Everything is a file很多硬件设备也会以文件形式出现在 /dev 中。
例如:
text
/dev/null
/dev/sda
/dev/tty25. /proc
text
/proc是一个虚拟文件系统。
主要提供:
text
进程信息
内核信息
系统运行状态例如:
bash
cat /proc/cpuinfo可以查看 CPU 信息。
26. /mnt 和 /media
/mnt
通常用于临时挂载文件系统:
text
/mnt例如挂载一个磁盘:
text
/mnt/data/media
很多桌面 Linux 系统会把:
text
U 盘
移动硬盘
光盘自动挂载到 /media 附近。
27. /opt
text
/opt通常用于安装一些额外的软件。
例如第三方大型软件可能安装到:
text
/opt/software28. .config
用户配置文件经常保存在:
text
~/.config例如:
text
~/.config/nvim表示 Neovim 配置目录。
完整路径可能是:
text
/home/moonlit/.config/nvim这也是为什么经常可以看到:
bash
cd ~/.config/nvim29. .local
用户自己的程序和数据经常位于:
text
~/.local常见:
text
~/.local/bin
~/.local/share
~/.local/state例如:
text
~/.local/share/nvim可能用于保存 Neovim 下载的插件等数据。
30. .cache
text
~/.cache一般存放程序缓存。
例如:
text
~/.cache/nvim通常属于可以重新生成的数据。
但不要在不了解内容的情况下随意删除整个:
text
~/.cache31. 路径中有空格
如果路径包含空格,例如:
text
My Project直接执行:
bash
cd My ProjectShell 会把它理解成两个参数。
可以使用引号:
bash
cd "My Project"或者转义空格:
bash
cd My\ Project32. Tab 自动补全
在输入路径时,不需要总是手动输入完整名称。
例如:
text
Doc按:
text
TabShell 可能自动补全:
text
Documents/因此实际使用 Shell 时,应该多使用:
text
Tab可以减少输入错误。
33. 查看目录本身的信息
例如:
bash
ls -ld Documents其中:
text
-d表示显示目录本身,而不是显示目录内部的内容。
34. 创建多级目录
普通:
bash
mkdir project如果要创建:
text
project/src/components可以:
bash
mkdir -p project/src/components其中:
text
-p表示自动创建缺失的父目录。
35. 一个完整例子
假设当前目录:
text
/home/moonlit创建项目:
bash
mkdir -p project/src进入项目:
bash
cd project现在:
bash
pwd输出:
text
/home/moonlit/project进入 src:
bash
cd src返回项目目录:
bash
cd ..回到主目录:
bash
cd ~再次进入项目:
bash
cd ~/project这些命令分别使用了:
text
相对路径
..
~
绝对/主目录路径组合36. 路径符号速查
| 符号 | 含义 |
|---|---|
/ | 根目录 |
. | 当前目录 |
.. | 上一级目录 |
~ | 当前用户主目录 |
- | 上一次所在目录 |
例如:
bash
cd /进入根目录。
bash
cd .仍然停留在当前目录。
bash
cd ..进入父目录。
bash
cd ~返回用户主目录。
bash
cd -返回上一次所在目录。
37. 常见 Linux 目录速查
| 目录 | 主要用途 |
|---|---|
/ | 文件系统根目录 |
/home | 普通用户主目录 |
/root | root 用户主目录 |
/etc | 系统配置 |
/usr | 程序、库和资源 |
/var | 日志、缓存等可变数据 |
/tmp | 临时文件 |
/dev | 设备文件 |
/proc | 内核和进程信息 |
/mnt | 临时挂载目录 |
/media | 移动设备挂载目录 |
/opt | 第三方软件 |
小结
Linux 路径最重要的是理解下面几个符号:
text
/ 根目录
~ 用户主目录
. 当前目录
.. 上一级目录
- 上一次所在目录同时要区分:
text
/home/moonlit/project这种从 / 开始的路径是:
text
绝对路径而:
text
project/src这种从当前位置开始计算的路径是:
text
相对路径只要掌握绝对路径、相对路径、/、~、. 和 ..,Linux 中绝大多数目录导航操作就能看懂了。