Linux文件系统的目录结构
Linux文件系统采用严格的树形结构,所有文件和目录都从根目录(/
)开始延伸。以下是主要目录的详细说明:
- /bin:存放系统启动和运行所必需的二进制可执行文件,如
ls
、cp
、mv
等基本命令。 - /etc:存放系统配置文件,如
/etc/passwd
(用户账户信息)、/etc/fstab
(文件系统挂载信息)。 - /home:用户主目录所在位置,每个用户有一个以用户名命名的子目录。
- /root:超级用户(root)的主目录。
- /usr:存放用户程序和数据,如
/usr/bin
(用户命令)、/usr/lib
(库文件)。 - /var:存放经常变化的数据,如
/var/log
(日志文件)、/var/spool
(邮件、打印队列)。 - /tmp:临时文件存放目录,系统重启后可能被清空。
- /sbin:存放系统管理员使用的系统管理程序,如
fdisk
、reboot
等。 - /dev:存放设备文件,如
/dev/sda
(第一块SCSI硬盘)、/dev/null
(空设备)。 - /proc:虚拟文件系统,存放系统和进程的运行时信息。
文件及目录显示类命令
注
:以下命令演示均以root
账号登录系统后的执行结果。
1. pwd
- 显示当前工作目录
功能:显示当前工作目录的绝对路径。
基本语法:
pwd
案例:使用pwd
命令查看当前工作目录
pwd
# /root # 运行结果
解析:直接执行pwd
命令,输出当前工作目录的绝对路径。
2. cd
- 切换目录
功能:改变当前工作目录。
基本语法:
cd [目录路径]
特殊路径:
~
:用户主目录。..
:上一级目录。.
:当前目录。-
:前一个工作目录。
案例:使用pwd
和cd
命令导航目录
- 查看当前工作目录。
- 切换到
/var/log
目录。 - 查看当前工作目录确认切换成功。
- 切换到当前目录的父目录。
- 查看当前工作目录确认切换成功。
- 切换到前一个工作目录
- 查看当前工作目录确认切换成功。
- 切换回用户主目录。
- 查看当前工作目录确认切换成功。
pwd # 查看当前工作目录
# /root
cd /var/log # 切换到/var/log目录
pwd # 查看当前工作目录确认切换成功
# /var/log
cd .. # 切换到父目录
pwd # 查看当前工作目录确认切换成功
# /var
cd - # 切换到前一个工作目录
pwd # 查看当前工作目录确认切换成功
# /var/log
cd ~ # 切换回用户主目录
pwd # 再次查看当前工作目录
# /root
3. ls
- 列出目录内容
功能:显示目录下的文件和子目录。
基本语法:
ls [选项] [目录或文件]
常用选项:
-l
:长格式显示,包括权限、所有者、大小、修改日期等。-a
:显示所有文件,包括以.
开头的隐藏文件。-h
:以人类可读的方式显示文件大小(如KB、MB)。-t
:按修改时间排序,最新的文件在前。-r
:反向排序。-R
:递归显示子目录内容。
案例:使用ls
命令列出当前目录内容(长格式)
ls -lh
# -rw-------. 1 root root 1.2K 8月 26 2021 anaconda-ks.cfg
解析
-l
:以长格式显示文件信息,包括权限、所有者、大小、修改日期等。-h
:以人类可读的方式显示文件大小(如KB、MB)。- 输出中每一行的第一个字段是文件权限,第二个字段是硬链接数,第三个字段是所有者,第四个字段是所属组,第五个字段是文件大小,第六个字段是最后修改时间,最后是文件名。
案例:使用ls
命令查看/var/log
目录内容(长格式)
ls -l /var/log
# 总用量 908
# drwxr-xr-x. 2 root root 204 8月 26 2021 anaconda
# drwx------. 2 root root 23 8月 26 2021 audit
# -rw-------. 1 root root 33480 6月 14 07:58 boot.log
# -rw-------. 1 root utmp 384 12月 6 2024 btmp
# drwxr-xr-x. 2 chrony chrony 6 8月 8 2019 chrony
# -rw-------. 1 root root 3364 6月 14 11:01 cron
# -rw-r--r-- 1 root root 122701 6月 14 07:58 dmesg
# -rw-r--r-- 1 root root 123094 12月 6 2024 dmesg.old
# -rw-r-----. 1 root root 186 8月 26 2021 firewalld
# -rw-r--r--. 1 root root 193 8月 26 2021 grubby_prune_debug
# -rw-r--r--. 1 root root 292000 6月 14 07:59 lastlog
# -rw-------. 1 root root 768 6月 14 07:58 maillog
# -rw-------. 1 root root 558027 6月 14 11:01 messages
# drwxr-xr-x. 2 ntp ntp 6 6月 23 2020 ntpstats
# drwxr-xr-x. 2 root root 6 8月 26 2021 rhsm
# -rw-------. 1 root root 8394 6月 14 07:59 secure
# -rw-------. 1 root root 0 8月 26 2021 spooler
# -rw-------. 1 root root 64000 8月 26 2021 tallylog
# drwxr-xr-x. 2 root root 23 8月 26 2021 tuned
# -rw-rw-r--. 1 root utmp 11136 6月 14 07:59 wtmp
# -rw-------. 1 root root 2332 8月 26 2021 yum.log
解析
-l
:以长格式显示文件信息,包括权限、所有者、大小、修改日期等。- 输出中每一行的第一个字段是文件权限,第二个字段是硬链接数,第三个字段是所有者,第四个字段是所属组,第五个字段是文件大小,第六个字段是最后修改时间,最后是文件名。
案例:使用ls
命令查看/root
目录目录内容(包括隐藏文件)
ls -a /root
# . .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .pki .tcshrc .viminfo
解析
-a
:显示所有文件,包括以.
开头的隐藏文件。
案例:使用ls
命令查看/root目录下的内容及隐藏内容
ls -la /etc # 查看`/etc`目录下的所有文件,包括隐藏文件,并以长格式显示
# 总用量 1064
# drwxr-xr-x. 75 root root 8192 6月 14 07:58 .
# dr-xr-xr-x. 17 root root 244 12月 7 2024 ..
# -rw-r--r--. 1 root root 16 8月 26 2021 adjtime
# -rw-r--r--. 1 root root 1529 4月 1 2020 aliases
# -rw-r--r--. 1 root root 12288 8月 26 2021 aliases.db
# ...
解析
-l
:以长格式显示文件信息,包括权限、所有者、大小、修改日期等。-a
:显示所有文件,包括以.
开头的隐藏文件。- 输出中每一行的第一个字段是文件权限,第二个字段是硬链接数,第三个字段是所有者,第四个字段是所属组,第五个字段是文件大小,第六个字段是最后修改时间,最后是文件名。
案例:使用ls
命令按时间排序文件,查看当前目录下的文件,按修改时间排序,最新的文件在前。
ls -lt
# 总用量 8
# -rwxrwxrwx. 1 root root 3061 8月 26 2021 netset.sh
# -rw-------. 1 root root 1228 8月 26 2021 anaconda-ks.cfg
# ...
解析:
-t
:按修改时间排序。默认情况下,-t
选项会将最新的文件排在最前面。-l
:以长格式显示文件信息,包括权限、所有者、大小、修改日期等。- 输出中每一行的第一个字段是文件权限,第二个字段是硬链接数,第三个字段是所有者,第四个字段是所属组,第五个字段是文件大小,第六个字段是最后修改时间,最后是文件名。
4. stat
- 显示文件或目录状态
功能:输出文件或目录的元数据(如权限、大小、修改时间等)。
基本语法:
stat [选项]... 文件...
常用选项:
-L
:跟随符号链接(显示链接指向的文件信息)-f
:显示文件系统状态而非文件状态-c
: 使用指定格式输出--printf=FORMAT
:类似-c
但支持转义字符-t
:以简洁格式显示信息
案例:
stat /etc/passwd
# 文件:"/etc/passwd"
# 大小:882 块:8 IO 块:4096 普通文件
# 设备:fd00h/64768d Inode:16788925 硬链接:1
# 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
# 最近访问:2025-06-14 07:58:45.318000160 +0800
# 最近更改:2021-08-26 21:05:11.788935009 +0800
# 最近改动:2021-08-26 21:05:11.789935107 +0800
# 创建时间:-
解析:显示文件的权限、大小、所有者及时间戳。
5. du
- 估算文件空间使用
功能:计算目录或文件的磁盘使用量。
常用选项:
-h
:人类可读格式-s
:仅显示总计--max-depth=N
:限制递归深度
案例:统计/var/log目录的总大小
du -sh /var/log
# 3.1M /var/log
案例:统计/var/log目录及其子目录的大小(递归一层)
du -h --max-depth=1 /var/log
# 8.0K /var/log/tuned
# 180K /var/log/audit
# 0 /var/log/chrony
# 2.0M /var/log/anaconda
# 0 /var/log/rhsm
# 0 /var/log/ntpstats
# 3.1M /var/log
解析
-sh
显示总大小.--max-depth=1
限制递归一层。
案例:统计当前目录下所有文件的大小(按大小排序)
du -h * | sort -h
# 4.0K anaconda-ks.cfg
解析:
-sh
显示总大小,--max-depth=1
限制递归一层。du -h * | sort -h
按大小排序,方便查找大文件。
常见错误及解决方法
错误:
ls: cannot access 'nonexistent': No such file or directory
原因:尝试访问不存在的文件或目录。
解决方法:- 检查文件或目录名是否正确。
- 使用
ls
命令先查看当前目录内容,确认文件或目录是否存在。
错误:
cd: no such file or directory: '/path/to/nonexistent'
原因:尝试切换到不存在的目录。
解决方法:- 确认目录路径是否正确。
- 使用
ls
命令查看上级目录内容,确认目标目录是否存在。
错误:
Permission denied
原因:没有足够的权限访问文件或目录。
解决方法:- 使用
sudo
命令(如果拥有sudo权限)提升权限。 - 联系系统管理员获取权限。
- 使用
错误:
ls: invalid option -- 'x'
原因:使用了无效的选项。
解决方法:- 检查命令拼写是否正确。
- 使用
man ls
查看ls
命令的帮助信息,确认选项是否有效。
错误:
stat: cannot stat 'file': Permission denied
原因:无权限访问文件。
解决:- 使用
sudo
:sudo stat /etc/shadow
- 切换到有权限的用户。
- 使用
错误:
du: cannot access 'dir': Permission denied
原因:无权限读取目录。
解决:- 使用
sudo
:sudo du -sh /var/log
- 联系管理员获取权限。
- 使用
理论练习
选择题:以下哪个命令用于显示当前工作目录?
A. ls
B. pwd
C. cd
D. mkdir
答案:B
选择题:以下哪个目录存放系统启动和运行所必需的二进制可执行文件?
A. /etc
B. /bin
C. /usr
D. /var
答案:B
选择题:以下哪个命令用于以长格式显示文件信息,并包括隐藏文件?
A. ls -l
B. ls -a
C. ls -la
D. ls -h
答案:C
选择题:以下哪个路径表示用户主目录?
A. ..
B. .
C. ~
D. -
答案:C
填空题:使用ls
命令以长格式显示文件信息,并包括隐藏文件的命令是ls _______
。
答案:-la
或 -al
(顺序可交换)
填空题:使用ls
命令以人类可读的方式显示文件大小的选项是_______
。
答案:-h
填空题:使用cd
命令切换回前一个工作目录的选项是_______
。
答案:-
判断题:/etc
目录用于存放用户程序和数据。( )
答案:×(正确:/usr
目录用于存放用户程序和数据)
判断题:pwd
命令用于改变当前工作目录。( )
答案:×(正确:cd
命令用于改变当前工作目录)
判断题:ls -R
命令可以递归显示子目录内容。( )
答案:√
问答题:ls -l
输出的第一列(如-rw-r--r--
)代表什么?
答案:文件权限和类型。
问答题:du -sh
中的-s
和-h
分别表示什么?
答案:-s
显示总计,-h
人类可读格式。
问答题:ls -l
输出的第一列(如-rw-r--r--
)代表什么?
答案:文件类型和权限。
- 第一个字符表示文件类型(
-
为普通文件,d
为目录)。 - 后9个字符分为三组,分别表示所有者、所属组、其他用户的权限(
r
读、w
写、x
执行)。
问答题:du -sh
中的-s
和-h
分别表示什么?
答案:
-s
:仅显示总计(不递归显示子目录)。-h
:人类可读格式(如KB、MB)。
问答题:stat
命令输出的Modify
时间表示什么?
答案:文件内容的最后修改时间。
实操练习
练习:使用ls
命令查看/etc
目录下的所有文件,包括隐藏文件,并以长格式显示。
参考答案:
ls -la /etc
练习:查看系统日志文件
- 切换到
/var/log
目录。 - 查看
/var/log
目录下的所有文件,包括隐藏文件,并以长格式显示。 - 查看
maillog
文件的大小和最后修改时间。
参考答案:
cd /var/log
ls -la
ls -l maillog
练习:导航目录并确认位置
- 查看当前工作目录。
- 切换到
/usr/bin
目录。 - 查看当前工作目录确认切换成功。
- 切换回用户主目录。
- 再次查看当前工作目录。
参考答案:
pwd
cd /usr/bin
pwd
cd ~
pwd
练习:按时间排序文件
- 查看当前目录下的文件,按修改时间排序,最新的文件在前。
- 查看当前目录下的文件,按修改时间排序,最新的文件在后。
参考答案:
ls -lt
ls -ltr
练习:递归显示目录内容
- 递归显示
/etc
目录下的所有文件和子目录。 - 递归显示当前目录下的所有文件和子目录。
参考答案:
ls -lR /etc
ls -lR
练习:使用ls
命令查看文件详细信息
- 查看
/etc/passwd
文件的详细信息。 - 查看
/etc/passwd
文件的大小(以人类可读的方式显示)。
参考答案:
ls -l /etc/passwd
ls -lh /etc/passwd
练习:统计/var/log
目录的总大小,结果以人类可读格式显示。
参考答案:
du -sh /var/log
练习:统计当前目录下所有文件的大小,并按大小排序。
参考答案:
du -h * | sort -h
知识总结
- Linux文件系统采用树形结构,从根目录开始延伸。
/bin
、/sbin
、/etc
、/dev
、/proc
、/var
、/tmp
、/usr
、/home
、/root
是主要的系统目录。ls
:用于列出目录内容,支持多种选项(-l
详细信息,-a
隐藏文件,-h
可读大小)。pwd
:用于显示当前工作目录的绝对路径。cd
:命令用于改变当前工作目录,支持绝对路径、相对路径,支持特殊路径如~
、..
、.
、-
。stat
:获取文件详细信息(权限、大小、时间戳等)。du
:评估磁盘空间占用(-s
总计,-h
可读格式,--max-depth
限制递归)。