IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)

1. 文件系统层次结构标准(FHS)

FHS是Linux发行版普遍遵循的目录规范,旨在统一不同发行版的文件布局,便于用户和管理员跨系统操作。FHS定义了根目录 / 下各子目录的用途,以及部分子目录(如 /usr/var)的进一步结构。遵循FHS有助于保持系统的组织性和兼容性。


2. 根目录下的主要目录详解

目录 用途说明
/bin 存放基本的用户命令二进制文件 ,如 lscpmv 等。这些命令在单用户模式或修复系统时也必须可用,因此 /bin 通常独立于 /usr 分区。现代发行版常将 /bin 符号链接到 /usr/bin
/boot 包含引导加载器使用的文件 ,如 Linux 内核、initrd/initramfs 映像和引导配置(如 grub 配置)。这个目录通常很小,有时可单独分区。
/dev 设备文件 所在目录。Linux将硬件设备(如硬盘、终端、USB)和虚拟设备(如 /dev/null/dev/random)抽象为文件,便于通过文件I/O操作访问。
/etc 存放系统全局配置文件 。包括网络配置、用户账户信息(passwdshadow)、软件服务配置(如 nginx.conf)等。该目录下的文件多为文本格式,直接编辑即可修改系统行为。
/home 普通用户的家目录 父目录。每个用户通常在此拥有一个以其用户名命名的子目录(如 /home/alice),用于存放个人文件、配置和程序数据。
/lib 存放系统启动和根文件系统中程序所需的基本共享库 和内核模块。包括 C 库(如 libc.so)、动态链接器以及内核模块(/lib/modules)。现代发行版常将 /lib/usr/lib 合并。
/media 可移动媒体的挂载点 。当插入U盘、光盘等设备时,系统通常会自动挂载到此目录下的子目录(如 /media/cdrom)。
/mnt 临时手动挂载点。管理员可以临时将文件系统挂载到此目录进行维护操作,之后应卸载。
/opt 可选的应用软件包 安装目录。主要用于第三方闭源软件或独立发行的软件包,每个软件通常放在 /opt 下的独立子目录中。
/proc 虚拟文件系统 ,以文件形式提供内核和进程的实时信息(如进程列表、CPU信息、内存使用)。大部分文件是只读的,部分可用来调整内核参数(如 /proc/sys)。
/root root用户(超级管理员)的家目录 。注意不要与根目录 / 混淆,它是管理员个人文件的存放位置。
/sbin 存放系统管理命令 的二进制文件,如 fdiskifconfigreboot 等。这些命令通常只有 root 用户执行,普通用户的 PATH 中可能不包含此目录。
/srv 存放系统提供的服务数据 ,如 Web 服务器(/srv/www)、FTP 服务器(/srv/ftp)的站点文件。此目录的用途定义较宽泛,许多发行版未强制使用。
/sys 另一个虚拟文件系统 ,提供比 /proc 更结构化的内核对象(设备、驱动、总线)信息,用于与内核交互,常被硬件管理和电源管理工具使用。
/tmp 临时文件目录。所有用户均可在此创建临时文件,但文件可能被系统定期清理(有些发行版使用 tmpfs,重启后清空)。
/usr 用户级应用程序和文件 的第二级层次。它包含只读、可共享的数据,通常独立分区。/usr 下又有若干重要子目录: - /usr/bin:大多数用户命令(非系统启动必需) - /usr/sbin:非启动必需的系统管理命令 - /usr/lib:应用程序的共享库 - /usr/local:本地安装的软件(手动编译安装的程序) - /usr/share:架构无关的共享数据(文档、图标、man手册) - /usr/include:C 头文件,用于开发
/var 可变数据 目录,存放运行时内容改变的文件,如日志(/var/log)、缓存(/var/cache)、打印队列(/var/spool)、临时文件(/var/tmp)以及数据库文件(如 MySQL 的 /var/lib/mysql)。

3. 关键概念补充

3.1 路径表示

  • 绝对路径 :从根目录 / 开始完整描述文件位置,如 /home/alice/docs/note.txt

  • 相对路径 :相对于当前工作目录的路径,不使用 / 开头。例如,当前在 /home/alice 时,docs/note.txt 表示同一文件。

  • .... 表示当前目录,.. 表示父目录,常用于路径操作(如 cd ..)。

3.2 挂载与卸载

  • Linux文件系统可以动态地将一个设备或分区挂载 到一个目录(挂载点)上,使得该目录成为访问该文件系统的入口。例如,将 /dev/sda1 挂载到 /boot,则 /boot 下的文件实际存储在 /dev/sda1 分区。

  • 常用命令:mountumount,以及 /etc/fstab 文件定义开机自动挂载。

3.3 文件类型

  • 普通文件-):文本、二进制数据等。

  • 目录d):包含其他文件的文件夹。

  • 符号链接l):指向另一个文件或目录的快捷方式。

  • 设备文件c字符设备,b块设备):如终端、硬盘。

  • 管道文件p)和套接字文件s):用于进程间通信。

3.4 权限与所有权

  • 每个文件都有所有者 (user)、所属组 (group)和其他用户(others)的读(r)、写(w)、执行(x)权限。

  • 目录的执行权限允许进入该目录,读取权限允许列出内容。

  • 权限管理命令:chmodchownchgrp

3.5 硬链接与符号链接

  • 硬链接:多个文件名指向同一个 inode(文件数据块),删除一个链接不影响其他链接。硬链接不能跨文件系统,也不能用于目录。

  • 符号链接(软链接):一个特殊的文件,内容指向另一个文件或目录的路径。类似于快捷方式,可跨文件系统,支持目录。

4. 当前工作目录:pwd

作用:显示当前所在的目录(绝对路径)。

常用选项

  • -L:显示逻辑路径(若使用了符号链接,则显示链接路径,默认)

  • -P:显示物理路径(显示实际路径,解析所有符号链接)

5. 切换目录:cd

作用:改变当前工作目录到指定路径。

语法

复制代码
cd [目录]

常用用法

  • cd /绝对路径:切换到绝对路径

  • cd 相对路径:切换到相对路径(相对于当前目录)

  • cd ..:切换到上一级目录

  • cd ~cd:切换到当前用户的家目录

  • cd -:切换到上一次所在的目录(类似"后退")

示例

复制代码
$ pwd
/home/user
$ cd Documents
$ pwd
/home/user/Documents
$ cd /var/log
$ pwd
/var/log
$ cd ~
$ pwd
/home/user
$ cd -
/var/log

6. 列出目录内容:ls

作用:列出目录中的文件和子目录。

语法

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

常用选项(与目录相关)

选项 说明
-l 长格式显示,包括权限、链接数、所有者、大小、修改时间
-a 显示所有文件,包括隐藏文件(以.开头)
-A 几乎全部显示,但不包括 ...
-d 将目录当作文件处理,显示目录本身信息而非内容
-h 人类可读大小(与 -l 配合使用)
-R 递归显示子目录内容
-t 按修改时间排序(最新的在前)
-S 按文件大小排序
-r 逆序排序
-i 显示 inode 号
--color 彩色输出(许多发行版默认启用)

示例

复制代码
$ ls                   # 简单列出当前目录
$ ls -l                # 详细信息
$ ls -la               # 包含隐藏文件的详细信息
$ ls -ld /etc          # 只显示 /etc 目录本身的属性
$ ls -lh               # 以K/M/G显示文件大小
$ ls -R /usr/share     # 递归列出所有子目录内容

目录相关注意事项

  • 使用 ls -d */ 可以只列出当前目录下的子目录(以斜杠结尾表示目录)。

  • 使用 ls -l | grep "^d" 可过滤出目录行(每行第一个字符为 d)。

7. 创建目录:mkdir

作用:创建新目录。

语法

复制代码
mkdir [选项] 目录名...

常用选项

  • -p:递归创建父目录(如果父目录不存在则自动创建)

  • -m 模式:创建时直接设置权限模式(如 755)

示例

复制代码
$ mkdir newdir                 # 创建单个目录
$ mkdir -p parent/child/grand  # 递归创建多级目录
$ mkdir -m 700 private         # 创建权限为 drwx------ 的目录
$ mkdir dir1 dir2 dir3         # 同时创建多个目录

注意 :如果不加 -p,父目录不存在时会报错。

8. 删除空目录:rmdir

作用 :删除空目录。
常用选项

  • -p:递归删除空父目录(如果父目录也空)

示例

复制代码
$ rmdir emptydir               # 删除空目录 emptydir
$ rmdir -p a/b/c               # 删除 c,若 b 变空则删除 b,以此类推

注意 :目录非空时不能用 rmdir 删除,需用 rm -r

9. 删除非空目录:rm

作用:递归删除目录及其所有内容。

常用选项

  • -r-R:递归删除

  • -f:强制删除,不提示

  • -i:交互式删除,每个文件确认

示例

复制代码
$ rm -r olddir                 # 删除 olddir 及其内部所有内容
$ rm -rf /tmp/cache            # 强制删除 cache 目录(谨慎使用!)

10. 复制目录:cp

作用:复制目录及其内容。

语法

复制代码
cp [选项] 源目录 目标目录

常用选项

  • -r-R:递归复制(必须)

  • -a:归档模式,保留权限、时间戳等(等同于 -dR --preserve=all

  • -i:覆盖前提示

  • -u:只复制源中更新或目标不存在的文件

  • -v:显示详细过程

示例

复制代码
$ cp -r docs/ /backup/         # 将 docs 目录复制到 /backup 下
$ cp -a sourcedir/ destdir/    # 完整复制目录,保留所有属性
$ cp -r /etc/ .                # 复制 /etc 目录到当前目录

注意 :目标路径结尾有无 / 会影响行为。通常 cp -r sourcedir/ destdir/ 会将 sourcedir 复制为 destdir/sourcedir。

11. 移动/重命名目录:mv

作用:移动目录到另一位置,或重命名目录。

语法

复制代码
mv [选项] 源目录 目标目录

常用选项

  • -i:交互式,覆盖前提示

  • -u:仅在源比目标新或目标不存在时移动

  • -v:显示过程

示例

复制代码
$ mv oldname newname           # 重命名目录
$ mv mydir /home/user/         # 移动 mydir 到 /home/user 下
$ mv -i dir1/* dir2/           # 移动 dir1 下所有内容到 dir2,若有重名则提示

注意mv 在同一文件系统内只是重命名,速度快;跨文件系统时会复制再删除。

  • -L 层数:限制显示的目录深度

  • -d:只显示目录

  • -f:显示完整路径

  • -h:显示文件大小

  • --dirsfirst:目录优先显示

示例

复制代码
$ tree -L 2                     # 显示当前目录下两层结构
$ tree -d /etc                  # 只显示 /etc 下的目录
$ tree -h projects              # 显示 projects 目录树并带大小

输出示例

复制代码
├── docs
│   ├── guide.txt
│   └── README.md
└── src
    ├── main.c
    └── utils.c

12. 统计目录大小:du

作用:估算文件或目录占用的磁盘空间。

常用选项

  • -h:人类可读格式(K、M、G)

  • -s:只显示总计(汇总)

  • -a:显示所有文件(不仅仅是目录)

  • -c:最后加上总计

  • --max-depth=N:限制递归深度

  • --exclude=模式:排除匹配的文件

示例

复制代码
$ du -sh /home/user             # 显示 /home/user 总大小
$ du -h --max-depth=1 /var      # 显示 /var 下一级子目录大小
$ du -ah docs/                  # 显示 docs 下每个文件大小

输出示例

复制代码
4.0K    ./docs/note.txt
8.0K    ./docs
12K     .

13. 查找目录:find

作用:在目录树中查找符合条件的文件或目录。

与目录相关的常用表达式

  • -type d:查找目录

  • -name "模式":按名称匹配

  • -iname "模式":忽略大小写

  • -empty:查找空目录

  • -size 0:大小为0(也适用于空文件)

  • -mtime -7:最近7天内修改过的目录

  • -user 用户名:属于特定用户的目录

  • -perm 755:权限为755的目录

示例

复制代码
$ find /home -type d -name "projects"          # 查找所有名为 projects 的目录
$ find . -type d -empty                         # 查找当前目录下的空目录
$ find /var -type d -mtime -3                   # 查找 /var 下3天内修改过的目录
$ find / -type d -user alice 2>/dev/null        # 查找 alice 拥有的目录,忽略错误
$ find . -type d -exec chmod 755 {} \;          # 将当前目录下所有目录权限设为755

14 目录权限与所有权

14.1 查看目录权限

ls -ld 目录名 显示目录权限。目录权限第一位为 d,例如 drwxr-xr-x

14.2 更改目录权限:chmod

目录的权限意义:

  • 读(r):允许列出目录内容(需配合执行权限才能实际访问)。

  • 写(w):允许在目录中创建、删除、重命名文件。

  • 执行(x) :允许进入目录(cd)和访问内部文件(路径解析)。

示例

复制代码
chmod 755 mydir          # 所有者 rwx,组 r-x,其他 r-x
chmod +x mydir           # 给所有用户添加进入权限
chmod g-w mydir          # 移除组的写权限
chmod -R 644 docs/       # 递归设置 docs 下所有文件为644(目录会变成 drw-r--r--,需单独处理)

递归处理目录和文件权限:通常需要分开设置目录和文件:

复制代码
find docs -type d -exec chmod 755 {} \;
find docs -type f -exec chmod 644 {} \;

14.3 更改目录所有者:chown

复制代码
sudo chown user:group mydir    # 更改目录所有者和组
sudo chown -R user:group docs/ # 递归更改 docs 及其内容

15.总结

命令 主要用途 常用选项示例
pwd 显示当前目录 pwd -P
cd 切换目录 cd ~, cd -
ls 列出目录内容 ls -la, ls -d */
mkdir 创建目录 mkdir -p a/b/c, mkdir -m 700 dir
rmdir 删除空目录 rmdir -p a/b/c
rm -r 删除非空目录 rm -rf dir
cp -r 复制目录 cp -a source dest
mv 移动/重命名目录 mv old new
tree 树状显示目录 tree -L 2 -d
du 统计目录大小 du -sh *, du --max-depth=1
find 查找目录 find . -type d -name "pattern"
chmod 修改目录权限 chmod 755 dir, chmod +x dir
chown 修改目录所有者 chown -R user:group dir
dirname 提取路径的目录部分 dirname /a/b/c
basename 提取路径的最后一级 basename /a/b/c
pushd/popd 目录栈切换 pushd /tmp, popd
相关推荐
嵌入式小企鹅1 小时前
CPU供需趋紧、DeepSeek V4全链适配、小米开源万亿模型
人工智能·学习·开源·嵌入式·小米·算力·昇腾
草莓熊Lotso1 小时前
Vibe Coding 时代:LangChain 与 LangGraph 全链路解析
linux·运维·服务器·数据库·人工智能·mysql·langchain
三品吉他手会点灯6 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
代码AI弗森6 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
sakiko_6 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
生信碱移7 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
蜡台7 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
^—app5668667 小时前
游戏运存小启动不起来临时解决方法
运维·服务器
Ujimatsu7 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元7 小时前
zookeeper启不来了
linux·zookeeper·debian