「Linux文件及目录管理」目录结构及显示类命令

发布于:2025-06-15 ⋅ 阅读:(19) ⋅ 点赞:(0)
Linux文件系统的目录结构

Linux文件系统采用严格的树形结构,所有文件和目录都从根目录(/)开始延伸。以下是主要目录的详细说明:

  • /bin:存放系统启动和运行所必需的二进制可执行文件,如lscpmv等基本命令。
  • /etc:存放系统配置文件,如/etc/passwd(用户账户信息)、/etc/fstab(文件系统挂载信息)。
  • /home:用户主目录所在位置,每个用户有一个以用户名命名的子目录。
  • /root:超级用户(root)的主目录。
  • /usr:存放用户程序和数据,如/usr/bin(用户命令)、/usr/lib(库文件)。
  • /var:存放经常变化的数据,如/var/log(日志文件)、/var/spool(邮件、打印队列)。
  • /tmp:临时文件存放目录,系统重启后可能被清空。
  • /sbin:存放系统管理员使用的系统管理程序,如fdiskreboot等。
  • /dev:存放设备文件,如/dev/sda(第一块SCSI硬盘)、/dev/null(空设备)。
  • /proc:虚拟文件系统,存放系统和进程的运行时信息。
文件及目录显示类命令

:以下命令演示均以root账号登录系统后的执行结果。

1. pwd - 显示当前工作目录

功能:显示当前工作目录的绝对路径。
基本语法

pwd

案例:使用pwd命令查看当前工作目录

pwd
# /root  # 运行结果

解析:直接执行pwd命令,输出当前工作目录的绝对路径。

2. cd - 切换目录

功能:改变当前工作目录。
基本语法

cd [目录路径]

特殊路径

  • ~:用户主目录。
  • ..:上一级目录。
  • .:当前目录。
  • -:前一个工作目录。

案例:使用pwdcd命令导航目录

  1. 查看当前工作目录。
  2. 切换到/var/log目录。
  3. 查看当前工作目录确认切换成功。
  4. 切换到当前目录的父目录。
  5. 查看当前工作目录确认切换成功。
  6. 切换到前一个工作目录
  7. 查看当前工作目录确认切换成功。
  8. 切换回用户主目录。
  9. 查看当前工作目录确认切换成功。
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按大小排序,方便查找大文件。
常见错误及解决方法
  1. 错误ls: cannot access 'nonexistent': No such file or directory
    原因:尝试访问不存在的文件或目录。
    解决方法

    • 检查文件或目录名是否正确。
    • 使用ls命令先查看当前目录内容,确认文件或目录是否存在。
  2. 错误cd: no such file or directory: '/path/to/nonexistent'
    原因:尝试切换到不存在的目录。
    解决方法

    • 确认目录路径是否正确。
    • 使用ls命令查看上级目录内容,确认目标目录是否存在。
  3. 错误Permission denied
    原因:没有足够的权限访问文件或目录。
    解决方法

    • 使用sudo命令(如果拥有sudo权限)提升权限。
    • 联系系统管理员获取权限。
  4. 错误ls: invalid option -- 'x'
    原因:使用了无效的选项。
    解决方法

    • 检查命令拼写是否正确。
    • 使用man ls查看ls命令的帮助信息,确认选项是否有效。
  5. 错误stat: cannot stat 'file': Permission denied
    原因:无权限访问文件。
    解决

    • 使用sudo
      sudo stat /etc/shadow
      
    • 切换到有权限的用户。
  6. 错误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

练习:查看系统日志文件

  1. 切换到/var/log目录。
  2. 查看/var/log目录下的所有文件,包括隐藏文件,并以长格式显示。
  3. 查看maillog文件的大小和最后修改时间。

参考答案

cd /var/log
ls -la
ls -l maillog

练习:导航目录并确认位置

  1. 查看当前工作目录。
  2. 切换到/usr/bin目录。
  3. 查看当前工作目录确认切换成功。
  4. 切换回用户主目录。
  5. 再次查看当前工作目录。

参考答案

pwd
cd /usr/bin
pwd
cd ~
pwd

练习:按时间排序文件

  1. 查看当前目录下的文件,按修改时间排序,最新的文件在前。
  2. 查看当前目录下的文件,按修改时间排序,最新的文件在后。

参考答案

ls -lt
ls -ltr

练习:递归显示目录内容

  1. 递归显示/etc目录下的所有文件和子目录。
  2. 递归显示当前目录下的所有文件和子目录。

参考答案

ls -lR /etc
ls -lR

练习:使用ls命令查看文件详细信息

  1. 查看/etc/passwd文件的详细信息。
  2. 查看/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限制递归)。