Linux 基础命令详解:文件与目录操作篇
前言
在 Linux 系统中,文件和目录的管理是日常操作的核心。无论是开发者、运维工程师还是Linux爱好者,熟练掌握文件与目录的基本操作命令都是必不可少的技能。这些命令看似简单,却蕴含着高效管理系统的关键——从查看文件列表到创建、删除、移动文件,每一个命令都有其独特的用法和场景。
本文将详细介绍 Linux 中最常用的文件与目录操作命令,包括 ls、mkdir、rmdir、echo、touch、rm、cp、mv、cat 等,结合具体示例和参数说明,帮助读者快速理解并掌握这些命令的使用技巧。无论你是刚接触 Linux 的新手,还是需要巩固基础的老手,本文都能为你提供清晰的指引。
一、查看目录文件:ls 命令
ls(list)命令用于列出目录中的文件和子目录,是最常用的 Linux 命令之一。通过不同的选项,可以灵活地控制显示的内容和格式。
1. 基本用法
ls:默认列出当前目录下的非隐藏文件和目录(不包括以.开头的隐藏文件)。ls 路径:列出指定路径下的文件和目录,例如ls /home列出/home目录的内容。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-a | 显示所有文件和目录,包括隐藏文件(以 . 开头的文件)。 |
-l | 以长格式显示文件详细信息,包括权限、所有者、大小、修改时间等。 |
-h | 与 -l 结合使用,以人类可读的格式显示文件大小(如 1K、2M、3G)。 |
-R | 递归显示目录及其子目录中的所有文件(遍历所有层级)。 |
-t | 按文件修改时间排序(最新的文件在前)。 |
-S | 按文件大小排序(最大的文件在前)。 |
-i | 显示文件的 inode 编号(用于标识文件的唯一编号)。 |
3. 示例
# 显示当前目录的所有文件(包括隐藏文件)的详细信息
ls -al
# 以人类可读的格式显示 /var/log 目录下的文件大小和详细信息
ls -lh /var/log
# 递归显示当前目录及其子目录的所有文件
ls -lR
4. 长格式(-l)输出解读
长格式输出的每一行代表一个文件或目录,格式如下:
drwxr-xr-x 2 ly ly 4096 7月13日 18:21 公共
各部分含义:
- 权限字段(drwxr-xr-x):第一位为文件类型(
d表示目录,-表示普通文件,l表示软链接),后9位分为3组,分别表示所有者、所属组、其他用户的权限(r读、w写、x执行)。 - 硬链接数(2):指向该文件的硬链接数量(目录默认至少为2,包含
.和自身)。 - 所有者(ly):文件的拥有者用户名。
- 所属组(ly):文件所属的用户组名。
- 大小(4096):文件大小(目录默认显示为块大小,如4096字节)。
- 修改时间(7月13日 18:21):文件最后一次修改的时间。
- 文件名(公共):文件或目录的名称。
二、创建目录:mkdir 命令
mkdir(make directories)命令用于创建新目录。
1. 基本用法
mkdir 目录名:在当前目录下创建一个新目录,例如mkdir test创建test目录。mkdir 路径/目录名:在指定路径下创建目录,例如mkdir /home/ly/docs在/home/ly下创建docs目录。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-p | 递归创建目录,若父目录不存在则自动创建。例如 mkdir -p a/b/c 会创建 a、a/b、a/b/c 三级目录。 |
-m | 创建目录时指定权限,例如 mkdir -m 777 data 创建权限为 777 的 data 目录(所有用户可读写执行)。 |
3. 示例
# 创建单个目录
mkdir test
# 递归创建多级目录
mkdir -p project/src/main
# 创建指定权限的目录
mkdir -m 755 public
三、删除空目录:rmdir 命令
rmdir(remove empty directories)命令用于删除空目录,仅能删除空目录(若目录中存在文件或子目录,删除会失败)。
1. 基本用法
rmdir 目录名:删除当前目录下的空目录,例如rmdir test删除空目录test。rmdir 路径/目录名:删除指定路径下的空目录。
2. 示例
# 删除空目录
rmdir empty_dir
# 若目录非空,删除失败
rmdir non_empty_dir # 报错:rmdir: 删除 'non_empty_dir' 失败: 目录非空
注意
若需删除非空目录,需使用 rm -r 命令(见下文)。
四、向文件追加内容:echo 命令
echo 命令主要用于输出字符串,结合重定向符号(> 和 >>)可向文件写入或追加内容。
1. 基本用法
echo "内容":在终端输出指定内容,例如echo "Hello Linux"输出Hello Linux。echo "内容" > 文件名:将内容写入文件,覆盖文件原有内容(若文件不存在则创建)。echo "内容" >> 文件名:将内容追加到文件末尾,不覆盖原有内容(若文件不存在则创建)。
2. 示例
# 向文件写入内容(覆盖原有内容)
echo "这是第一行" > test.txt
# 向文件追加内容
echo "这是第二行" >> test.txt
# 查看文件内容(结合 cat 命令)
cat test.txt
# 输出:
# 这是第一行
# 这是第二行
五、创建文件与修改时间:touch 命令
touch 命令有两个主要功能:创建空白文件,以及修改文件的时间参数。
1. 创建空白文件
touch 文件名:创建一个空白文件,若文件已存在则不修改内容,仅更新时间参数。touch 文件1 文件2 ...:同时创建多个文件。
示例:
# 创建单个空白文件
touch note.txt
# 同时创建多个文件
touch a.txt b.md c.sh
2. 修改文件时间参数
Linux 中每个文件有三个关键时间参数,可通过 stat 文件名 查看:
- 访问时间(atime):文件内容被读取时更新。
- 修改时间(mtime):文件内容被修改时更新(最常用的时间参数)。
- 变更时间(ctime):文件属性(如权限、所有者)被修改时更新。
touch 命令可修改这些时间参数,常用选项:
| 选项 | 功能描述 |
|---|---|
-a | 仅更新访问时间(atime)。 |
-m | 仅更新修改时间(mtime)。 |
-t 时间 | 自定义时间(格式:YYYYMMDDhhmm.ss),例如 202310011230.00 表示 2023年10月1日12:30:00。 |
示例:
# 查看文件时间参数
stat test.txt
# 仅更新访问时间
touch -a test.txt
# 仅更新修改时间
touch -m test.txt
# 自定义文件时间为2023年10月1日12:30:00
touch -t 202310011230.00 test.txt
六、删除文件与目录:rm 命令
rm(remove)命令用于删除文件或目录,功能强大但需谨慎使用(删除后默认不可恢复)。
1. 基本用法
rm 文件名:删除指定文件。rm 选项 目录名:删除目录(需配合-r选项)。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-f | 强制删除,不提示确认(即使文件只读)。 |
-i | 删除前提示确认(默认行为,可省略)。 |
-r | 递归删除目录及其所有子文件和子目录(删除目录必须使用)。 |
3. 示例
# 删除文件(带确认提示)
rm test.txt # 提示:rm: 是否删除普通文件 'test.txt'? y(输入y确认)
# 强制删除文件(无提示)
rm -f data.txt
# 删除空目录
rm -r empty_dir
# 强制删除非空目录(无提示,慎用!)
rm -rf non_empty_dir
注意
rm -rf /是极其危险的命令,会递归删除根目录下所有文件,导致系统崩溃,绝对禁止执行!- 删除前务必确认文件/目录的路径和内容,重要文件建议先备份。
七、复制文件与目录:cp 命令
cp(copy)命令用于复制文件或目录。
1. 基本用法
cp 源文件 目标文件:复制单个文件到指定位置。cp 源文件1 源文件2 ... 目标目录:复制多个文件到目标目录。cp -r 源目录 目标目录:递归复制目录(包括子文件和子目录)。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-i | 若目标文件已存在,提示是否覆盖(推荐日常使用)。 |
-r | 递归复制目录(必须用于目录复制)。 |
-a | 等价于 -d、-p、-r,保留文件属性、软链接并递归复制(适合备份)。 |
-p | 复制后保留源文件的属性(权限、修改时间等)。 |
-s | 创建软链接(而非复制文件内容,类似快捷方式)。 |
-u | 仅复制源文件比目标文件新的内容(用于更新文件)。 |
3. 示例
# 复制文件到目录(带覆盖提示)
cp -i test.txt /home/docs/
# 递归复制目录到另一个目录
cp -r project/ /backup/
# 创建软链接
cp -s /usr/bin/python3 /usr/bin/python # 执行python即调用python3
八、移动与重命名:mv 命令
mv(move)命令用于移动文件或目录,也可用于重命名(同一目录下的移动)。
1. 基本用法
mv 源文件/目录 目标路径:移动文件或目录到指定路径。mv 旧名称 新名称:在同一目录下重命名文件或目录。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-i | 若目标文件已存在,提示是否覆盖(默认行为)。 |
-f | 强制覆盖目标文件,不提示。 |
-n | 若目标文件已存在,不移动也不提示(避免覆盖)。 |
-u | 仅移动源文件比目标文件新的内容(用于更新)。 |
3. 示例
# 移动文件到目录
mv test.txt /home/docs/
# 重命名文件
mv report_v1.doc report_v2.doc
# 移动并覆盖目标文件(无提示)
mv -f new_data.txt /data/old_data.txt
# 重命名目录
mv old_dir/ new_dir/
九、显示文件内容:cat 命令
cat(concatenate)命令用于显示文本文件的内容,也可合并多个文件。
1. 基本用法
cat 文件名:显示文件内容。cat 文件1 文件2 > 新文件:合并多个文件内容到新文件。
2. 常用选项
| 选项 | 功能描述 |
|---|---|
-n | 对所有行编号(包括空行)。 |
-b | 仅对非空行编号。 |
-E | 在每行结尾显示 $(标识换行符)。 |
-T | 将 Tab 键显示为 ^I(区分 Tab 和空格)。 |
-s | 压缩连续空行(合并为一行)。 |
3. 示例
# 显示文件内容并编号
cat -n notes.txt
# 合并多个文件
cat part1.txt part2.txt > full.txt
# 显示换行符和Tab键
cat -ET script.sh
注意
cat 适合查看小文件,大文件建议使用 less 或 more 分页查看。
总结
本文介绍的 ls、mkdir、rm、cp、mv 等命令是 Linux 文件管理的基础,掌握这些命令的用法和选项,能显著提高日常操作效率。记住,Linux 命令的灵活性在于选项的组合,多练习不同场景下的命令搭配,才能真正做到熟练运用。
后续将介绍更多高级命令(如文本处理、权限管理等),敬请关注。

1616

被折叠的 条评论
为什么被折叠?



