文章目录
- 前言
 - 1、Linux文件系统
 - 1.1 核心特点
 - 1.2 重要目录结构
 - 1.3 文件类型
 - 1.4 文件和目录的命名规则
 - 1.5 文件与目录的定位方式
 
- 2、查看目录或文件的详细信息(ls)
 - 2.1 基本语法
 - 2.2 常用操作
 - 2.3 高级用法
 
- 3、切换目录(cd)
 - 3.1 常用操作
 - 3.2 扩展:显示当前工作目录(pwd)
 
- 4、查看、合并文件(cat)
 - 5、复制文件或目录(cp)
 - 6、移动或重命名文件/目录(mv)
 - 7、创建文件或目录
 - 7.1 创建文件(touch)
 - 7.2 创建目录(mkdir)
 
- 8、删除文件或目录
 - 8.1 rm 命令的使用
 - 8.2 rmdir 命令的使用
 
- 9、检测文件类型(file)
 
前言
本篇文章从底层出发,详细讲解了Linux文件系统的结构及特点,同时介绍了许多管理文件和目录的命令,包括ls、cd、cat、cp、touch、mkdir、file等命令,通过学习这些命令,大家可以更好的操作并管理linux文件系统,整篇文章超10000字,每个知识点都进行了详细的讲解并给出了操作实例,适合零基础学习者。
 
 环境准备:
在开始学习Linux命令前,我们首先需要准备好运行命令所需的环境,也就是安装Linux操作系统。这里为了方便学习,我们将通过
VMware Workstation虚拟化软件模拟一台Centos 7操作系统的虚拟机,后续所有操作都将在该虚拟机上进行
安装教程推荐:
 VMware Workstation:https://blog.csdn.net/weixin_74195551/article/details/127288338
 Centos 7 操作系统:https://blog.csdn.net/m0_74950751/article/details/128773027
 
 安装完成后,在桌面鼠标右键,打开终端,后续所有命令都是在终端运行的,若安装的命令行界面,则直接输入命令即可。
 
 
1、Linux文件系统
Linux 文件系统是操作系统中用于管理和组织存储设备(如硬盘、SSD、U盘等)数据的关键组件。它不仅定义了文件和目录的存储方式,还提供了一套逻辑规则和数据结构,确保用户和应用程序能够高效、安全地访问数据。
1.1 核心特点
-  
单根树形结构:所有文件和目录以单一的根目录(
/)为起点,形成层次化的树状结构,所有文件和目录都在根目录(/)下 -  
统一命名空间:无论物理存储设备如何分布,所有文件和目录都在同一逻辑路径下访问,也就是通过路径符
/来进行访问,如:访问 /data/int/log ,路径通过/字符进行分隔 -  
区分大小写:文件名和路径对大小写敏感(例如 File.txt 和 file.txt 是两个不同的文件)。
 -  
一切皆文件:Linux 将硬件设备、进程信息、网络接口等抽象为文件(如 /dev/sda、/proc/cpuinfo)。
 -  
所有目录均可以是挂载点 :挂载点本质就是一个目录,只要目录存在,未被其它文件占用,就可以作为挂载点,包括根目录(
/)都可以成为挂载点 
Tips:
- 在Windows中所有文件和目录都是以
盘符为起点,如:C:\data,D:\image ;而在Linux中则是以根目录(/)为起点,如:/data - Linux中的
目录相当于Windows中的文件夹 文件是操作系统中数据存放的最小单位
1.2 重要目录结构
- /(根目录):所有目录和文件的起点。
 - /root:超级用户(
root)的家目录。 - /bin:存放系统基本命令(如 
ls、cp)。 - /etc:系统全局配置文件(如网络配置、用户账户)。
 - /home:存放普通用户的家目录(每个用户独立子目录)。
 - /var:存放动态数据(系统服务数据、日志文件、数据库文件、邮件等)。
 - /tmp:系统临时文件,重启后可能被清除。
 - /dev:设备文件(如硬盘 
/dev/sda1、终端/dev/tty)。 - /proc和/sys:虚拟文件系统,提供内核和进程的实时信息,反映当前系统运行状态。
 - /usr:用户程序和数据(如应用程序、库文件)。
 - /boot:系统启动所需文件(内核、引导加载程序)。
 - /mnt 和 /media:临时挂载外部设备的目录(如U盘、光盘)。
 - /opt:第三方软件的可选安装位置。
 
1.3 文件类型
 Linux 文件系统支持多种文件类型:
-  
普通文件(Regular File):文本、二进制、图像等数据。
 -  
目录(Directory):包含其他文件或子目录的容器。
 -  
符号链接(Symbolic Link):指向另一个文件或目录的快捷方式。
 -  
设备文件(Device File):
- 块设备(Block Device):按块访问的设备(如硬盘)。
 - 字符设备(Character Device):按字符流访问的设备(如键盘)。
 
 -  
管道(Pipe)和套接字(Socket):用于进程间通信。
 -  
命名管道(FIFO):类似管道,但有文件名。
 
1.4 文件和目录的命名规则
 1、基本规则
-  
区分大小写
- 文件名和目录名对大小写敏感,例如 
file.txt、File.txt 和 FILE.TXT是三个不同的文件。 
 - 文件名和目录名对大小写敏感,例如 
 -  
允许的字符
- 可以使用字母(
A-Z、a-z)、数字(0-9)、下划线(_)、点(.)、连字符(-)等。 - 避免特殊字符:如
!@#$%^&*(){}[]|\;:'"<>?等,因为它们可能在 Shell 中有特殊含义(需用引号或转义符)。 
 - 可以使用字母(
 -  
长度限制
- 通常最大长度为 
255字节(UTF-8 编码下可能少于 255 个字符)。 - 完整路径(含 /)的最大长度为 
4096字节(PATH_MAX 限制)。 
 - 通常最大长度为 
 -  
不能以
/命名/是路径分隔符,不能作为文件名的一部分。
 
 2、特殊名称
-  
.和...表示当前目录,..表示父目录(是每个目录默认存在的硬链接)。
 -  
隐藏文件或目录
- 以 
.开头的文件或目录(如 .bashrc)默认隐藏,需用ls -a查看。 
 - 以 
 -  
避免使用空格
- 虽然允许(如 
my file.txt),但空格在 Shell 中会被解析为参数分隔符,需用引号或转义符(\)处理,如下:touch "my file.txt" # 正确(使用引号包裹) touch my\ file.txt # 正确(使用反斜杠转义) 
 - 虽然允许(如 
 
3、推荐写法
-  
使用小写字母和下划线
例如
project_notes.txt,避免大小写混用导致的混淆。 -  
避免特殊字符和空格
优先用
-或_代替空格(如 backup-2023.tar.gz)。 -  
扩展名非强制要求但有用
Linux 不依赖扩展名识别文件类型(如
.txt、.sh仅为约定),但推荐保留以便管理。 
4、 禁止使用的名称
-  
系统保留名称:如
/dev/null、/proc等路径下的特殊文件。 -  
设备文件:避免直接命名文件为
sda、tty等,可能与系统设备冲突。 
1.5 文件与目录的定位方式
在 Linux 中,绝对路径和相对路径是两种不同的文件或目录定位方式,它们的核心区别在于参照点不同。以下是详细解释和对比:
1、绝对路径(Absolute Path)
-  
定义:从文件系统的
根目录(/)开始的完整路径,唯一指向目标文件或目录。 -  
特点:
- 以 
/开头(例如/home/user/file.txt)。 - 无论当前工作目录在哪里,绝对路径始终指向同一目标。
 
 - 以 
 -  
用途:
- 脚本或配置文件中需要明确指定文件位置时(如服务配置文件路径)
 - 跨目录操作时避免歧义。
 
 -  
示例:
cat /etc/passwd # 直接访问根目录下的文件 ls /usr/local/bin # 列出绝对路径指向的目录内容 
2、相对路径(Relative Path)
-  
定义:以
当前工作目录(pwd)为参照点的路径,无需从根目录开始。 -  
特点:
- 不以 
/开头(例如docs/report.txt)。 - 路径的实际含义依赖当前所在目录。
 
 - 不以 
 -  
特殊符号:
.表示当前目录(例如./script.sh)。
..表示父目录(例如../project/file.c)。 -  
用途:
- 快速访问当前目录附近的文件。
 - 简化命令行操作(减少长路径输入)。
 
 
2、查看目录或文件的详细信息(ls)
2.1 基本语法
语法:
ls [选项] [文件/目录]
ls是 Linux 中最常用的命令之一,用于列出目录中的文件和子目录
注意:
-  
如果不指定目录,默认列出当前目录的内容。
 -  
可以指定文件或目录名,查看特定路径下的内容。
 
常用选项
| 选项 | 说明 | 
|---|---|
-a | 显示所有文件(包括隐藏文件,以 . 开头的文件) | 
-l | 以长格式显示详细信息(权限、所有者、大小、修改时间等) | 
-h | 与 -l 一起使用,以人类可读的格式显示文件大小(如 KB、MB) | 
-t | 按修改时间排序(最新修改的在前) | 
-r | 反向排序 | 
-S | 按文件大小排序(大的在前) | 
-R | 递归列出子目录内容 | 
-i | 显示文件的 inode 编号 | 
--color | 彩色输出(默认启用,目录、文件等类型显示不同颜色) | 
2.2 常用操作
 1、列出当前目录内容
ls
 
 2、显示所有文件(包括隐藏文件)
ls -a
 
 3、以长格式显示详细信息
ls -l
 
输出示例:
-rw-r--r-- 1 user group  1024 Jan 10 10:00 file.txt   # 文件
drwxr-xr-x 2 user group  4096 Jan 11 11:00 dir   # 目录
 
信息说明:
-  
第一列:文件类型和权限(
-表示文件,d表示目录)。 -  
第二列:硬链接数。
 -  
第三列:所有者。
 -  
第四列:所属组。
 -  
第五列:文件大小(默认字节)。
 -  
第六列:最后修改时间。
 -  
第七列:文件名。
 
4、组合选项(如 -lh 显示易读的文件大小)
ls -lh
 
输出大小会显示为 1.0K、2.5M 等格式。
 
 5、按时间排序(最新修改的在前)
ls -lt
 
 6、递归列出子目录内容
ls -R
 
 7、显示文件的 inode 编号
ls -i
 
 8、列出指定目录的内容
ls /path/to/directory
 
 9、反向排序
ls -lr
 
 10、按文件大小排序(大的在前)
ls -lS
 
2.3 高级用法
 1、过滤显示特定文件(结合通配符)
ls *.txt       # 列出所有 .txt 文件
ls file[1-3].* # 列出 file1.txt, file2.log 等
 
 2、忽略某些文件(需搭配 --ignore)
ls --ignore='*.log'  # 不显示 .log 文件
 
 3、自定义时间显示格式(需搭配 --time-style)
ls -l --time-style="+%Y-%m-%d %H:%M:%S"
 
 注意事项:
-  
如果文件名包含空格或特殊字符,需要用引号包裹:
ls "my file.txt" -  
默认情况下,ls 输出的颜色可能因系统配置而异。如果颜色不显示,可以强制启用:
ls --color=auto 
通过灵活组合选项,ls 可以满足大部分文件列表需求。如需更多帮助,可以通过 man ls 查看完整手册。
3、切换目录(cd)
语法:
cd [选项] [目录路径]
在Linux中,cd(Change Directory)命令用于切换当前工作目录。它是日常操作中最基础且频繁使用的命令之一。
3.1 常用操作
 1、切换到指定目录
-  
使用绝对路径进行切换:
cd /usr/local # 进入/usr/local目录 -  
使用相对路径进行切换,假设当前目录是/home/user:
cd Downloads # 进入/home/user/Downloads cd ./Documents # ./表示当前目录(可省略) 
2、返回家目录
cd          # 直接输入cd,不加参数,默认切换为家目录
cd ~        # ~代表用户的家目录
cd $HOME    # 使用环境变量$HOME
 
 3、返回上一级目录
cd ..       # 两个点表示上一级目录
 
 4、返回上两级目录
cd ../..    # 每多一个..就再往上一级
 
 5、切换到上一个工作目录
cd -        # 在最近使用的两个目录之间快速切换
 
 6、切换到带有空格或特殊字符的目录
-  
用引号包裹路径或使用转义符:
cd "My Documents" # 路径包含空格 cd My\ Documents # 使用反斜杠转义空格 
7、常见问题解决
-  
目录不存在时
如果路径错误或目录不存在,会提示:bash: cd: no such file or directory # 检查路径拼写或先用ls确认目录是否存在。 -  
权限不足
若目录无执行权限(x),会提示:bash: cd: permission denied # 用ls -l查看权限,并通过chmod或sudo解决。 
3.2 扩展:显示当前工作目录(pwd)
 假如当前工作目录为: /path/data
pwd    # 输入命令后显示: /path/data
 
4、查看、合并文件(cat)
cat是 Linux 中一个常用的命令,用于查看、合并或创建文件。它的名称来源于 concatenate(连接),但它的功能不仅限于文件连接。
1、常用方法使用示例:
-  
查看文件内容
cat filename- 这会显示 
filename文件 的全部内容到终端。 - 示例:
cat /etc/os-release # 查看系统信息文件 
 - 这会显示 
 -  
查看多个文件
cat file1 file2- 依次显示 
file1和file2的内容。 - 示例:
cat notes.txt backup.txt 
 - 依次显示 
 -  
合并文件内容并输出到新文件
cat file1 file2 > merged_file- 将 
file1和file2的内容合并后写入merged_file(会覆盖目标文件)。 - 示例:
cat part1.txt part2.txt > complete.txt 
 - 将 
 -  
追加内容到文件
cat file1 >> file2- 将 
file1的内容追加到file2的末尾(不会覆盖file2)。 - 示例:
cat log.txt >> archive.log 
 - 将 
 -  
创建新文件(或编辑小文件)
cat > newfile.txt-  
从键盘输入内容,按
Ctrl+d保存到newfile.txt(会覆盖已有文件)。 -  
示例:
cat > greeting.txt Hello World! # 输入内容 Ctrl+d # 保存并退出 
 -  
 -  
显示行号
cat -n filename- 显示文件内容并加上行号(包括空行)。
 - 示例:
cat -n /etc/hosts 
 -  
显示非空行的行号
cat -b filename- 只对非空行编号(类似 
-n,但忽略空行)。 - 示例:
cat -b script.sh 
 - 只对非空行编号(类似 
 -  
显示特殊字符(如制表符、换行符等)
cat -A filename- 用 
^I表示制表符(Tab),$表示行尾。 - 示例:
cat -A /etc/profile 
 - 用 
 -  
避免输出中的多行空行
cat -s filename- 将连续的空行压缩为一行。
 - 示例:
cat -s logfile.txt 
 -  
与其他命令结合使用
- 通过管道
(|)将cat输出传递给其他命令:cat file.txt | grep "keyword" # 搜索文件中的关键词 cat file.txt | less # 分页查看内容 
 - 通过管道
 
2、注意事项
-  
大文件警告:
cat会一次性输出整个文件,如果文件很大(如日志文件),建议用less或more分页查看:less hugefile.log -  
文件覆盖风险:
>会覆盖目标文件,使用前请确认。 
总结:
 cat 的核心功能是快速查看、合并或创建小文件。对于复杂操作(如编辑、分页),建议结合其他工具(如 less、vim 或 grep)。
5、复制文件或目录(cp)
 1、基础语法
cp是 Linux 中用于复制文件或目录的基本命令,语法如下:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
 
 2、基本用法
-  
复制文件到目标文件(重命名):
cp file1.txt file2.txt # 将 file1.txt 复制为 file2.txt -  
复制文件到目录:
cp file1.txt /path/to/directory/ # 将 file1.txt 复制到指定目录 -  
复制多个文件到目录:
cp file1.txt file2.txt /path/to/directory/ # 复制多个文件到目录 
2、常用选项
| 选项 | 说明 | 
|---|---|
-r 或 -R | 递归复制目录(用于复制文件夹) | 
-i | 覆盖前提示确认(交互模式) | 
-f | 强制覆盖,不提示(慎用) | 
-v | 显示复制过程的详细信息 | 
-u | 仅当源文件比目标文件新时复制(更新) | 
-p | 保留原文件的属性(权限、时间戳等) | 
-a | 归档模式(相当于 -rp,保留所有属性) | 
 3、常用方法使用示例
-  
递归复制目录:
cp -r dir1/ dir2/ # 将 dir1 目录及其内容复制到 dir2 -  
交互式复制(覆盖前询问):
cp -i file1.txt /path/to/directory/ -  
保留文件属性:
cp -p file1.txt /backup/ # 保留权限、时间戳等 -  
仅更新新文件:
cp -u *.txt /backup/ # 仅将目标目录中没有的文件复制进去 
4、注意事项
-  
如果目标文件已存在,
cp会默认覆盖(除非使用-i选项)。 -  
复制目录时必须加
-r或-a。 -  
使用
-a可以完整保留文件属性(适合备份)。 
5、高级用法
-  
通配符复制:
cp *.jpg /path/to/images/ # 复制所有 .jpg 文件 -  
复制到当前目录:
cp /path/to/file1.txt . # 目标 `.` 表示当前目录 
示例完整命令:
cp -av source_dir/ backup_dir/  # 递归复制并保留所有属性,显示详细信息
 
通过灵活组合选项,可以满足不同场景的复制需求。
6、移动或重命名文件/目录(mv)
 1、基本语法
mv命令是 Linux 中用于移动或重命名文件/目录的基本命令,其名称来源于 “move”。语法如下:
mv [选项] 源文件或目录 目标文件或目录
 
常用选项:
| 选项 | 作用 | 
|---|---|
-i | 覆盖前提示确认 | 
-n | 禁止覆盖已存在文件 | 
-f | 强制覆盖,不提示 | 
-v | 显示操作详情 | 
-u | 仅在源文件比目标新时移动 | 
 2、常用方法使用实例
-  
移动文件/目录
mv file.txt /path/to/destination/ # 将文件移动到目标目录 mv dir1 /path/to/destination/ # 将目录移动到目标目录 -  
重命名文件/目录
mv oldname.txt newname.txt # 重命名文件 mv olddir newdir # 重命名目录 -  
移动多个文件到目录
mv file1.txt file2.txt /target/dir/ # 移动多个文件到目标目录 -  
覆盖文件时的提示
-  
默认情况下,
mv会直接覆盖已存在的目标文件。 -  
使用
-i(交互模式)会在覆盖前提示确认:mv -i file.txt existing_file.txt 
 -  
 -  
禁止覆盖(安全模式)
mv -n file.txt existing_file.txt # 如果目标存在,则不移动 -  
强制覆盖(忽略提示)
mv -f file.txt /target/ # 强制覆盖,不询问 -  
显示详细操作(调试)
mv -v file.txt /target/ # 显示移动的详细信息 
3、注意事项
-  
权限问题:需要有对源文件的读取权限和目标目录的写入权限。
 -  
跨设备移动:如果目标在另一设备(如U盘),
mv实际是复制+删除,速度较慢。 -  
符号链接:移动符号链接时,默认移动链接本身(而非指向的文件)。
 
通过灵活组合选项和参数,mv 可以高效管理文件位置和名称。使用前建议用 ls 确认路径,避免误操作。
7、创建文件或目录
7.1 创建文件(touch)
 1、基本语法
在 Linux 中,
touch命令主要用于创建空文件或更新文件的时间戳(访问时间和修改时间)。语法格式如下:
touch [选项] 文件名...
 
常用选项:
| 选项 | 说明 | 
|---|---|
-a | 仅更新访问时间(atime) | 
-m | 仅更新修改时间(mtime) | 
-c | 不创建新文件(若文件不存在) | 
-t | 指定时间戳(格式:[[CC]YY]MMDDhhmm[.ss]) | 
-r | 使用参考文件的时间戳 | 
-d | 使用字符串描述时间(如 touch -d “2024-01-01” file.txt) | 
 2、常用方法使用示例
-  
创建一个空文件
touch file.txt如果
file.txt不存在,则会创建一个空文件;如果已存在,则会更新其时间戳(默认为当前时间)。 -  
同时创建多个文件
touch file1.txt file2.txt file3.txt -  
强制不创建新文件(仅更新时间戳)
touch -c non_existent_file.txt如果文件不存在,
-c(或--no-create)选项会避免创建新文件。 -  
指定时间戳(而非当前时间)
touch -t 202401011200 file.txt-t后接时间格式:[[CC]YY]MMDDhhmm[.ss](例如:202401011200表示2024 年 1 月 1 日 12:00:00)。 -  
使用参考文件的时间戳
touch -r reference_file.txt target_file.txt-r(或--reference)将target_file.txt的时间戳设置为与reference_file.txt相同。 -  
仅更新访问时间(atime)或修改时间(mtime)
touch -a file.txt # 只更新访问时间 touch -m file.txt # 只更新修改时间 
3、注意事项
-  
如果文件名包含空格或特殊字符,需用引号包裹:
touch "my file.txt" -  
需要权限:对目标目录有写入权限才能创建文件。
 
通过灵活组合选项,touch 可以高效管理文件的时间戳或快速创建空文件。
7.2 创建目录(mkdir)
 1、基本语法
mkdir是 Linux 中用于创建目录(文件夹)的命令,语法格式如下:
mkdir [选项] 目录名
 
常用选项:
| 选项 | 作用 | 
|---|---|
-p | 递归创建多级目录 | 
-m | 设置权限(如 755、644) | 
-v | 显示操作详情 | 
2、常用方法使用示例
-  
创建单个目录
mkdir dir1会在当前目录下创建名为
dir1的文件夹。 -  
同时创建多个目录
mkdir dir1 dir2 dir3一次性创建多个同级目录。
 -  
创建嵌套目录(递归创建)
mkdir -p parent/child/grandchild-p选项会自动创建路径中所有不存在的父目录。 -  
设置目录权限(创建时指定权限)
mkdir -m 755 mydir-m选项直接设置目录权限(此处 755 表示所有者可读/写/执行,其他用户可读/执行)。 -  
显示创建过程(verbose 模式)
mkdir -v dir1 dir2-v选项会输出每个目录的创建信息。 
3、常见问题解决
-  
目录已存在时报错:
使用-p选项可忽略此错误(不会覆盖原有目录)。 -  
权限不足:
确保对目标路径有写入权限,或用sudo提权:sudo mkdir /protected_path/newdir 
8、删除文件或目录
8.1 rm 命令的使用
rm是 Linux 中用于删除文件或目录的命令,使用时需谨慎,因为删除后通常无法恢复。
 1、基本语法
rm [选项] 文件或目录名
 
常用选项:
| 选项 | 作用 | 
|---|---|
-f | 强制删除(忽略不存在的文件,不提示确认) | 
-i | 删除前逐一询问确认(交互式) | 
-r 或 -R | 递归删除目录及其内容(用于删除目录) | 
-v | 显示删除的详细过程 | 
--help | 查看帮助信息 | 
--version | 显示版本信息 | 
 2、常用方法使用示例
-  
删除单个文件
rm file.txt -  
强制删除文件(无警告)
rm -f file.txt -  
交互式删除(逐个确认)
rm -i file1.txt file2.txt -  
删除目录(递归删除)
rm -r mydir/ -  
强制递归删除目录(慎用!)
rm -rf mydir/ -  
*删除多个文件(通配符 )
rm *.log # 删除所有 .log 文件 -  
显示删除过程(verbose)
rm -v old_* 
3、危险操作警告
-  
rm -rf /或rm -rf /*
这会强制删除根目录下的所有文件(系统毁灭性操作!),现代系统通常会有保护机制,但仍需绝对避免。 -  
无备份删除重要数据
建议先使用mv命令将文件移到临时目录,确认无影响后再彻底删除。 
4、注意事项
-  
权限问题: 删除文件需对所在目录有写权限。
 -  
隐藏文件: 通配符
*不匹配以.开头的隐藏文件,需显式指定(如rm -r .*需谨慎)。 
建议在使用 rm -r 前先用 ls 确认目标文件/目录,避免误删。
8.2 rmdir 命令的使用
rmdir是 Linux 中用于删除空目录的命令
1、基本语法
rmdir [选项] 目录名
 
常用选项:
| 选项 | 描述 | 
|---|---|
-p | 递归删除父目录(如果它们为空)。 | 
--ignore-fail-on-non-empty | 忽略因目录非空导致的错误(不报错,但仍不会删除)。 | 
-v | 显示操作详情(verbose 模式)。 | 
 2、常用方法使用示例:
-  
删除单个空目录
rmdir mydir仅当
mydir为空时才会删除。 -  
递归删除空目录
若目录结构为parent/child,且两者均为空:rmdir -p parent/child会先删除
child,再删除parent(如果父目录也变为空)。 -  
忽略非空目录的错误
rmdir --ignore-fail-on-non-empty mydir如果
mydir非空,命令会静默退出,不会报错。 -  
显示操作详情
rmdir -v mydir输出:
rmdir: removing directory 'mydir' 
3、注意事项
-  
仅能删除空目录
如果目录中有文件或其他子目录,rmdir会报错:rmdir: failed to remove 'mydir': Directory not empty此时需用
rm -r 目录名强制递归删除(谨慎使用!)。 -  
路径中的父目录必须存在
例如rmdir a/b/c要求a/b存在,否则会报错。 -  
与
rm -r的区别-  
rmdir:安全,只删空目录。 -  
rm -r:危险,递归删除目录及所有内容(无确认提示!)。 
 -  
 
4、适用场景
-  
在脚本中安全删除空目录(避免误删数据)。
 -  
清理空的日志或临时目录结构。
 
如果需要删除非空目录,请改用:
rm -r 目录名  # 谨慎操作!数据不可恢复!
 
9、检测文件类型(file)
file命令是 Linux 中用于检测文件类型的实用工具,它会根据文件内容(而非文件扩展名)判断文件类型。
1、基本语法
file [选项] 文件名
 
常用选项:
| 选项 | 作用 | 
|---|---|
-b | 简洁输出(不显示文件名) | 
-i | 输出 MIME 类型 | 
-L | 跟随软链接 | 
-f <文件> | 从文件中读取待检测的文件名列表 | 
-k | 不停止在第一个匹配结果(继续检测更多可能类型) | 
-z | 尝试检测压缩文件内部内容 | 
 2、常用方法使用示例
-  
检测单个文件类型
file /bin/ls输出示例:
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped -  
检测多个文件类型
file file1.txt file2.jpg -  
检测目录下所有文件类型
file * -  
显示更详细的输出(-i 选项)
输出文件的
MIME类型:file -i filename示例输出:
filename: text/plain; charset=utf-8 -  
不压缩软链接(-L 选项)
直接检测链接指向的文件类型:file -L /path/to/symlink -  
从标准输入读取文件(-f 选项)
通过列表文件批量检测:file -f file_list.txt # file_list.txt文件中存放着要检测的文件名,一行一个文件名 
3、高级用法
-  
检测压缩文件内容:
file -z backup.tar.gz -  
仅输出匹配的文本描述(结合 grep):
file * | grep "text" 
4、原理说明
 
 file 命令通过以下步骤判断文件类型:
-  
检查文件的
magic number(如ELF 头、PNG 头等)。 -  
若无特殊标识,则分析文件内容(如文本编码、可读字符比例等)。
 -  
结合
/usr/share/misc/magic或/etc/magic中的规则库进行匹配。 
通过灵活使用 file 命令,你可以快速识别未知文件的类型,尤其在处理无扩展名文件时非常有用。