Bash 文件系统与目录导航
在文件系统中进行导航,是任何使用 Bash Shell 的人必须掌握的基础技能。就像你在图形用户界面(GUI)中需要知道如何打开文件夹和使用文件一样,你也需要理解如何在命令行中移动位置以及访问各种文件和目录。
本章将为你提供在 Bash 中导航文件系统所需的基础知识,为更高级的脚本编写和系统管理任务做好准备。
1. 绝对路径与相对路径
路径对于在文件系统中准确定位文件和目录至关重要。主要有两种类型的路径:绝对路径和相对路径。
1.1 绝对路径
绝对路径从根目录(/)开始,指定文件或目录的精确位置。这就像提供一栋建筑的完整街道地址一样。
示例: /home/user/documents/report.txt
这个路径明确无误地指向了 report.txt 文件。该文件位于 documents 目录中,documents 位于 user 目录中,user 位于 home 目录中,而 home 则位于文件系统的根目录(/)下。
1.2 相对路径
相对路径是相对于当前工作目录来指定文件或目录的位置。这就像从你当前所在的位置给出方向指引一样。
示例: 假设你当前的工作目录是 /home/user,那么指向 report.txt 的相对路径就是 documents/report.txt。
相对路径的关键组成部分:
.(单点): 指代当前目录。例如,./my_script.sh明确指向当前目录下的my_script.sh文件。虽然它通常是可选的,但为了清晰起见,或者在某些命令强制要求时,它非常有用。..(双点): 指代父级目录(上一级目录)。例如,如果你当前的目录是/home/user/documents,那么../就指代/home/user。
场景示例:
假设你现在正处于 /var/log 目录中:
- 指向
syslog文件的绝对路径是/var/log/syslog。 - 指向
apache2目录的相对路径(假设它直接位于/var/log下)就是apache2。 - 指向
var目录的相对路径是 ..(因为var是log的父目录)。
1.3 如何选择路径类型
- 使用绝对路径: 当你需要绝对确定引用的是一个特定位置,而不受当前工作目录影响时。这在脚本编写中非常有用,因为无论脚本从哪里被执行,它都需要访问相同的文件或目录。
- 使用相对路径: 当文件或目录的位置是相对于当前工作目录已知时,或者当你希望编写具有可移植性、可以在不同位置运行而无需修改代码的脚本时。
2. pwd 命令
pwd 命令代表 “print working directory”(打印工作目录)。它会在终端上显示你当前工作目录的绝对路径。在执行任何可能影响文件的操作之前,这个命令对于确认你当前在文件系统中的位置极其有用。
示例:
pwd
/home/user/documents这个输出结果表明,你当前所处的工作目录是 /home/user/documents。
3. cd 命令
cd 命令代表 “change directory”(更改目录)。它允许你通过更改当前工作目录在文件系统中进行导航。
3.1 基本用法
cd <目录路径>这里的 <目录路径> 可以是绝对路径,也可以是相对路径。
示例:
cd /var/log: 将当前目录更改为绝对路径/var/log。cd documents: 如果你当前在/home/user,此命令会将目录更改为相对路径/home/user/documents。cd ..: 让你向上移动一个层级,进入父目录。cd: 如果不加任何参数,直接输入cd会将目录更改为你的家目录(通常是/home/<你的用户名>)。cd -: 将目录切换回你上一次所在的目录。
3.2 特殊情况与快捷键
cd ~: 将目录更改为当前用户的家目录。这与不带任何参数的cd命令效果完全相同。波浪号~是家目录的快捷符号。- Tab 键自动补全 (Tab completion): Bash 提供了 Tab 键自动补全功能,帮助你快速准确地输入路径。输入路径的开头几个字母,然后按下 Tab 键。如果只有一个匹配的文件或目录,Bash 会自动为你补全名称;如果有多个匹配项,连续按两次 Tab 键,Bash 会列出所有可能的结果。
4. ls 命令(简要提及)
虽然 ls 命令将在后续章节中详细讲解,但在这里提及它非常重要,因为它是文件系统导航中不可或缺的工具。ls 命令用于列出当前工作目录(默认情况下)或指定目录中的文件和目录。它帮助你“看清”给定位置有哪些内容,从而辅助你进行导航。
示例:
ls /var/log这个命令会列出 /var/log 目录下的所有内容。