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

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 - 显示当前工作目录

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

bash 复制代码
pwd

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

bash 复制代码
pwd
# /root  # 运行结果

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

2. cd - 切换目录

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

bash 复制代码
cd [目录路径]

特殊路径

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

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

  1. 查看当前工作目录。
  2. 切换到/var/log目录。
  3. 查看当前工作目录确认切换成功。
  4. 切换到当前目录的父目录。
  5. 查看当前工作目录确认切换成功。
  6. 切换到前一个工作目录
  7. 查看当前工作目录确认切换成功。
  8. 切换回用户主目录。
  9. 查看当前工作目录确认切换成功。
bash 复制代码
pwd    # 查看当前工作目录
# /root
cd /var/log   # 切换到/var/log目录
pwd   # 查看当前工作目录确认切换成功
# /var/log
cd ..  # 切换到父目录
pwd   # 查看当前工作目录确认切换成功
# /var
cd -  # 切换到前一个工作目录
pwd   # 查看当前工作目录确认切换成功
# /var/log
cd ~    # 切换回用户主目录
pwd    # 再次查看当前工作目录
# /root
3. ls - 列出目录内容

功能 :显示目录下的文件和子目录。
基本语法

bash 复制代码
ls [选项] [目录或文件]

常用选项

  • -l:长格式显示,包括权限、所有者、大小、修改日期等。
  • -a:显示所有文件,包括以.开头的隐藏文件。
  • -h:以人类可读的方式显示文件大小(如KB、MB)。
  • -t:按修改时间排序,最新的文件在前。
  • -r:反向排序。
  • -R:递归显示子目录内容。

案例 :使用ls命令列出当前目录内容(长格式)

bash 复制代码
ls -lh
# -rw-------. 1 root root 1.2K 8月  26 2021 anaconda-ks.cfg

解析

  • -l:以长格式显示文件信息,包括权限、所有者、大小、修改日期等。
  • -h:以人类可读的方式显示文件大小(如KB、MB)。
  • 输出中每一行的第一个字段是文件权限,第二个字段是硬链接数,第三个字段是所有者,第四个字段是所属组,第五个字段是文件大小,第六个字段是最后修改时间,最后是文件名。

案例 :使用ls命令查看/var/log目录内容(长格式)

bash 复制代码
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目录目录内容(包括隐藏文件)

bash 复制代码
ls -a /root
# .  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .pki  .tcshrc  .viminfo

解析

  • -a:显示所有文件,包括以.开头的隐藏文件。

案例 :使用ls命令查看/root目录下的内容及隐藏内容

bash 复制代码
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命令按时间排序文件,查看当前目录下的文件,按修改时间排序,最新的文件在前。

bash 复制代码
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 - 显示文件或目录状态

功能 :输出文件或目录的元数据(如权限、大小、修改时间等)。
基本语法

bash 复制代码
stat [选项]... 文件...

常用选项

  • -L:跟随符号链接(显示链接指向的文件信息)
  • -f:显示文件系统状态而非文件状态
  • -c: 使用指定格式输出
  • --printf=FORMAT:类似 -c 但支持转义字符
  • -t:以简洁格式显示信息

案例

bash 复制代码
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目录的总大小

bash 复制代码
du -sh /var/log
# 3.1M    /var/log

案例:统计/var/log目录及其子目录的大小(递归一层)

bash 复制代码
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限制递归一层。

案例:统计当前目录下所有文件的大小(按大小排序)

bash 复制代码
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

      bash 复制代码
      sudo stat /etc/shadow
    • 切换到有权限的用户。

  6. 错误du: cannot access 'dir': Permission denied
    原因 :无权限读取目录。
    解决

    • 使用sudo

      bash 复制代码
      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目录下的所有文件,包括隐藏文件,并以长格式显示。
参考答案

bash 复制代码
ls -la /etc

练习:查看系统日志文件

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

参考答案

bash 复制代码
cd /var/log
ls -la
ls -l maillog

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

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

参考答案

bash 复制代码
pwd
cd /usr/bin
pwd
cd ~
pwd

练习:按时间排序文件

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

参考答案

bash 复制代码
ls -lt
ls -ltr

练习:递归显示目录内容

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

参考答案

bash 复制代码
ls -lR /etc
ls -lR

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

  1. 查看/etc/passwd文件的详细信息。
  2. 查看/etc/passwd文件的大小(以人类可读的方式显示)。

参考答案

bash 复制代码
ls -l /etc/passwd
ls -lh /etc/passwd

练习 :统计/var/log目录的总大小,结果以人类可读格式显示。
参考答案

bash 复制代码
du -sh /var/log

练习 :统计当前目录下所有文件的大小,并按大小排序。 参考答案

bash 复制代码
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限制递归)。
相关推荐
眠修9 分钟前
Kuberrnetes 服务发布
linux·运维·服务器
即将头秃的程序媛3 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin3 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
爱奥尼欧4 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天5 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
tan77º6 小时前
【Linux网络编程】网络基础
linux·服务器·网络
笑衬人心。6 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
chanalbert8 小时前
CentOS系统新手指导手册
linux·运维·centos
星宸追风8 小时前
Ubuntu更换Home目录所在硬盘的过程
linux·运维·ubuntu
热爱生活的猴子9 小时前
Poetry 在 Linux 和 Windows 系统中的安装步骤
linux·运维·windows