目录
一、Linux 目录结构初相识
初次接触 Linux 系统,其目录结构或许会让你感到困惑,甚至有些 “反直觉”。但当你深入了解后就会发现,它有着独特的逻辑和组织方式,并且遵循着一个统一的标准 —— 文件系统层次化标准(FHS,Filesystem Hierarchy Standard) 。这一标准为 Linux 系统的目录布局提供了规范,使得不同版本的 Linux 系统在目录结构上保持了一定的一致性。
与我们熟悉的 Windows 系统相比,Linux 的目录结构可谓是大相径庭。Windows 系统中,我们常见的是 C:\、D:\ 这样的盘符,每个盘符都有自己独立的目录树。而在 Linux 的世界里,一切皆从根目录 “/” 开始,如同大树的主干,其他所有目录和文件都是从这个根目录衍生出来的分支。这种树形结构简洁而高效,使得文件管理更加有序。在 Linux 中,文件路径的分隔符是 “/”,而 Windows 则使用 “\”。例如,在 Linux 中,一个文件的路径可能是 “/home/user/Documents/file.txt”,而在 Windows 中则是 “C:\Users\user\Documents\file.txt”。
下面,我们来认识一下 Linux 根目录下一些常见且重要的子目录及其作用:
-
/bin:存放二进制可执行文件,这里面的命令是系统正常运行所必需的,并且所有用户都可以执行,像我们常用的 ls(列出目录内容)、cp(复制文件或目录)、mv(移动或重命名文件)等命令都存放在这个目录下。
-
/sbin:同样是存放二进制可执行文件,但这些文件主要是系统管理员使用的管理工具和系统命令,普通用户没有权限直接运行,例如 ifconfig(配置网络接口)、reboot(重启系统)、fsck(检查和修复文件系统)等。
-
/etc:这是一个非常重要的目录,存放着系统的各种配置文件,涵盖了系统和程序运行所需的各种设置。比如 /etc/passwd 存储着用户账号信息,/etc/fstab 记录着文件系统的挂载信息,/etc/hosts 则是主机名和 IP 地址的映射表。这些配置文件通常都是纯文本格式,方便用户和管理员进行查看和修改。
-
/home:普通用户的主目录,每个用户在这个目录下都有一个以自己用户名命名的专属文件夹,用户可以在这里存放个人文件、设置个性化的配置等。例如,用户 “user1” 的主目录就是 “/home/user1” 。
-
/root:超级用户(root)的主目录,与普通用户的主目录不同,这个目录拥有更高的权限,主要用于系统管理相关的操作。
-
/lib 和 /lib64:存放系统运行所需的共享库文件,类似于 Windows 中的.dll 文件。其中 /lib 用于 32 位系统,/lib64 用于 64 位系统。这些库文件是系统和应用程序运行时不可或缺的依赖项。
-
/usr:这是一个庞大的目录,存放着用户级的程序和文件,占用的磁盘空间通常也比较大。它包含多个子目录,例如 /usr/bin 存放用户可以执行的二进制文件;usr/sbin 是系统管理员的命令工具;/usr/lib 存储与应用程序相关的库文件;/usr/share 则保存着共享数据,如文档、帮助文件等。
-
/var:存放经常变化的数据,比如 /var/log 目录下存储着各种日志文件,系统管理员可以通过分析这些日志来了解系统的运行状态、排查故障;/var/spool 用于存放任务队列,像打印任务等;/var/lib 保存着程序运行所需的动态数据,如数据库文件等。
-
/tmp:临时文件目录,所有用户都可以在这个目录下创建和访问临时文件。系统在重启后,该目录下的文件通常会被自动清理,所以不适合存放重要的数据。
-
/dev:这个目录存放着设备文件,通过这些文件,系统可以访问硬件设备。比如 /dev/sda 表示第一个 SATA 硬盘,/dev/null 是一个特殊的空设备,写入其中的数据会被直接丢弃。设备文件的存在,使得硬件设备在 Linux 系统中可以像文件一样被操作和管理。
-
/proc:这是一个虚拟文件系统,存放着与进程和内核相关的信息,例如 /proc/cpuinfo 可以查看 CPU 信息,/proc/meminfo 用于显示内存使用情况。这些文件并不占用实际的磁盘空间,它们是系统在运行时动态生成的,反映了系统当前的运行状态。
-
/sys:另一个虚拟文件系统,主要用于管理设备和驱动程序信息,提供了一种更现代化的方式与设备进行交互。
-
/opt:用于存放第三方软件或可选应用程序,将软件安装到这个目录下,不会影响系统的其他部分,方便进行软件的管理和卸载。
-
/boot:存放系统启动相关的文件,其中 /boot/vmlinuz 是 Linux 内核,/boot/grub 是 GRUB 引导加载器的配置文件。这些文件对于系统的正常启动至关重要。
-
/media 和 /mnt:/media 通常用于挂载可移动设备,如 U 盘、光盘等;/mnt 则作为临时挂载点,可以用来挂载硬盘或网络文件系统等。两者的功能类似,都用于将外部存储设备挂载到系统中,以便进行访问和使用,但 /mnt 通常更多地用于手动管理挂载操作。
-
/srv:存放由系统提供的服务相关数据,比如网站数据可能存放在 /srv/www 中,不同的服务会在这个目录下有相应的子目录来存储其数据。
二、Linux 目录操作基础指令
在了解了 Linux 的目录结构之后,接下来让我们一同探索在 Linux 系统中对目录进行操作的基础指令。这些指令就像是我们在 Linux 文件系统这个庞大的数字森林中穿梭的得力工具,掌握它们,你就能轻松地管理和操作目录。
(一)ls - 目录内容大揭秘
ls 命令是我们探索 Linux 目录内容的首要工具,它的英文全称是 “list”,正如其名,用于列出指定目录下的文件和子目录信息 。如果不指定任何参数,ls 会默认列出当前目录下的内容。例如,在终端中直接输入 “ls”,就可以看到当前目录中的文件和子目录列表。
在实际使用中,ls 命令常常搭配各种参数来满足不同的查看需求,以下是一些常用参数:
-
-l:以长格式(long format)显示目录下的内容列表,这个参数非常实用,它会展示出文件的详细信息,包括文件类型与权限、硬链接数、所有者名称、所属组、文件大小、最后修改日期和时间以及文件或目录名称。例如,执行 “ls -l” 命令,输出结果可能如下:
-rw-r--r-- 1 user group 1024 Jun 10 15:30 file1.txt
drwxr-xr-x 2 user group 4096 Jun 11 09:45 dir1
在这个输出中,第一列的第一个字符表示文件类型,“-” 表示普通文件,“d” 表示目录,“l” 表示符号链接等;接下来的九个字符分为三组,分别表示文件所有者的权限、所属组的权限以及其他用户的权限 。第二列是硬链接数,第三列和第四列分别是所有者和所属组,第五列是文件大小,第六列和第七列是最后修改的日期和时间,最后一列是文件名或目录名。
-
-a:显示所有文件及目录(all),包括以 “.” 开头的隐藏文件和目录。在 Linux 系统中,以 “.” 开头的文件和目录通常是隐藏的,它们在日常操作中不会被直接显示出来,因为这些文件大多是系统或应用程序的配置文件等,对于普通用户来说,直接查看可能会造成混淆。但在某些情况下,我们需要查看这些隐藏文件,这时就可以使用 “ls -a” 命令。比如,在用户主目录下执行该命令,会看到像 “.bashrc”(用于配置 bash 环境)、“.ssh”(存放 SSH 相关配置和密钥)等隐藏文件和目录。
-
-h:与 “-l” 参数配合使用时,将文件大小以人类较易读的方式显示(human-readable),例如以 KB、MB、GB 等为单位,而不是单纯的字节数。这样我们能更直观地了解文件的大小。比如,一个大小为 1048576 字节的文件,在使用 “ls -lh” 命令时,会显示为 “1.0M”,相比原始的字节数,这样的显示方式更便于理解。
-
-R:递归(recursive)列出目录及其子目录下的所有内容。当我们需要查看一个目录及其所有子目录的完整结构时,这个参数就派上用场了。例如,有一个名为 “project” 的目录,其下包含多个子目录和文件,执行 “ls -R project” 命令,就可以看到 “project” 目录下的所有层级的文件和目录信息,无论嵌套多深都能一览无余。
(二)cd - 随心所欲的目录切换
cd 命令的英文全称是 “change directory”,正如其名,它用于改变当前所在的工作目录,是我们在 Linux 文件系统中自由穿梭的关键指令。