Linux 基础文件操作命令详解

目录

一、课程目标

  • 掌握Linux基础文件操作命令
  • 理解命令选项的含义和用法
  • 能够熟练进行文件/目录的创建、复制、移动和删除
  • 培养良好的操作习惯和安全意识

二、touch 命令 - 创建文件或更新时间戳

2.1 命令功能

  • 创建新的空文件
  • 更新文件的访问和修改时间

2.2 基本语法

touch [选项] 文件名1 文件名2 ...

2.3 常用选项

选项 说明 示例
-a 只更改访问时间 touch -a file.txt
-m 只更改修改时间 touch -m file.txt
-c 不创建新文件 touch -c nonexistent.txt
-t 指定时间戳 touch -t 202312251200 file.txt

2.4 实战示例

# 创建单个文件
touch example.txt

# 创建多个文件
touch file1.txt file2.txt file3.log

# 查看文件详细信息
ls -l file1.txt

# 更新文件时间戳(文件已存在)
touch example.txt

# 不创建文件,只更新时间戳(如果文件存在)
touch -c maybe_exists.txt

2.5 时间戳操作

# 查看文件详细时间信息
stat example.txt

# 设置特定时间戳
touch -t 202312251430.00 example.txt  # 2023年12月25日14:30

# 只更新访问时间
touch -a example.txt

# 只更新修改时间
touch -m example.txt

三、mkdir 命令 - 创建目录

3.1 命令功能

  • 创建新目录(文件夹)
  • 支持一次性创建多级目录

3.2 基本语法

mkdir [选项] 目录名1 目录名2 ...

3.3 常用选项

选项 说明 示例
-p 创建多级目录 mkdir -p a/b/c
-v 显示创建过程 mkdir -v newdir
-m 设置目录权限 mkdir -m 755 secure_dir

3.4 实战示例

# 创建单个目录
mkdir my_documents

# 创建多个目录
mkdir dir1 dir2 dir3

# 创建多级目录(重要!)
mkdir -p project/src/main/java

# 显示创建过程
mkdir -v backup/photos/2023

# 创建带特定权限的目录
mkdir -m 700 private_dir    # 只有所有者可读写执行
mkdir -m 755 public_dir     # 所有者全权限,其他人读执行

# 查看目录结构
tree project/

3.5 目录权限说明

# 常见权限设置
mkdir -m 700 personal     # 完全私有:rwx------
mkdir -m 755 shared       # 公开可读:rwxr-xr-x  
mkdir -m 777 temp         # 完全开放:rwxrwxrwx(谨慎使用)

四、cp 命令 - 复制文件/目录

4.1 命令功能

  • 复制文件和目录
  • 支持保留文件属性和递归复制

4.2 基本语法

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

4.3 常用选项

选项 说明 示例
-r-R 递归复制目录 cp -r dir1 dir2
-i 交互模式(覆盖前确认) cp -i file1 file2
-v 显示复制过程 cp -v file* backup/
-p 保留文件属性 cp -p important.conf backup/
-u 只复制更新的文件 cp -u source/* dest/
-l 创建硬链接而非复制 cp -l bigfile.txt link.txt

4.4 实战示例

# 复制单个文件
cp file1.txt file1_backup.txt

# 复制到目录
cp file1.txt backup/

# 复制多个文件
cp file1.txt file2.txt file3.txt documents/

# 递归复制目录(重要!)
cp -r my_project project_backup

# 交互式复制(避免误覆盖)
cp -i important.txt backup/

# 详细显示复制过程
cp -rv photos/ vacation_backup/

# 保留所有属性复制
cp -p system.conf system.conf.backup

# 只复制新文件(增量备份)
cp -u daily_logs/* archive/

4.5 高级复制技巧

# 使用通配符复制
cp *.txt text_files/
cp *.jpg *.png images/

# 复制时重命名
cp original.txt renamed.txt

# 创建硬链接节省空间
cp -l large_video.mp4 link_to_video.mp4

# 备份整个家目录
cp -rp ~/ /backup/home_backup/

五、mv 命令 - 移动/重命名文件

5.1 命令功能

  • 移动文件/目录到新位置
  • 重命名文件/目录

5.2 基本语法

mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录

5.3 常用选项

选项 说明 示例
-i 交互模式(覆盖前确认) mv -i old new
-v 显示移动过程 mv -v file* dest/
-b 覆盖前创建备份 mv -b important.txt new.txt
-n 不覆盖已存在文件 mv -n new.txt existing.txt

5.4 实战示例

# 重命名文件
mv old_name.txt new_name.txt

# 移动文件到目录
mv document.txt documents/

# 移动并重命名
mv file.txt backup/archived_file.txt

# 移动多个文件
mv pic1.jpg pic2.jpg pic3.jpg photos/

# 交互式移动(安全)
mv -i important_data.txt storage/

# 显示移动过程
mv -v *.log logs/

# 覆盖前备份
mv -b config.conf new_config.conf  # 生成config.conf~备份文件

# 安全移动(不覆盖)
mv -n new_data.txt existing_data.txt

5.5 批量重命名技巧

# 批量修改扩展名
mv *.jpeg *.jpg

# 批量添加前缀
for file in *.txt; do mv "$file" "backup_$file"; done

# 批量移动特定类型文件
mv *.{jpg,png,gif} images/

六、rm 命令 - 删除文件/目录

6.1 ⚠️ 危险命令!使用要极其谨慎!

6.2 基本语法

rm [选项] 文件或目录...

6.3 常用选项

选项 说明 示例
-r-R 递归删除目录 rm -r old_dir
-f 强制删除(无确认) rm -f temp_file
-i 交互模式(每个文件确认) rm -i *.tmp
-v 显示删除过程 rm -v old_files/*
-d 删除空目录 rm -d empty_dir

6.4 ⚠️ 危险操作示例(了解但不要轻易尝试)

# ❌ 极其危险的命令!绝对不要运行!
rm -rf /          # 删除整个系统!
rm -rf ~/*        # 删除家目录所有文件!

# ✅ 相对安全的删除方式
# 删除单个文件(确认)
rm -i important.txt

# 删除目录及其内容
rm -r old_project

# 强制删除临时文件
rm -f /tmp/cache_*

# 交互式删除多个文件
rm -i *.log

# 显示删除过程
rm -rv temp_dir/

6.5 安全删除最佳实践

# 1. 先列出要删除的文件确认
ls *.tmp
rm *.tmp

# 2. 使用交互模式
rm -i important_*

# 3. 先移动到临时目录再删除
mkdir to_delete
mv old_files/* to_delete/
# 确认无误后再删除
rm -r to_delete

# 4. 使用trash-cli工具(如果安装)
trash-put file.txt    # 移动到回收站

七、综合课堂练习

练习1:基础文件操作(20分钟)

任务:创建个人项目目录结构

# 1. 创建以下目录结构
my_project/
├── src/
│   ├── main/
│   │   └── java/
│   └── test/
│       └── java/
├── docs/
├── backup/
└── logs/

# 2. 在src/main/java/中创建3个.java文件
# 3. 在docs/中创建readme.txt和help.txt
# 4. 将整个项目备份到backup/目录
# 5. 将readme.txt重命名为README.md

参考答案

# 1. 创建目录结构
mkdir -p my_project/src/{main/java,test/java} my_project/docs my_project/backup my_project/logs

# 2. 创建Java文件
touch my_project/src/main/java/{Main.java,Utils.java,Config.java}

# 3. 创建文档文件
touch my_project/docs/{readme.txt,help.txt}

# 4. 备份项目
cp -r my_project/src my_project/backup/

# 5. 重命名文件
mv my_project/docs/readme.txt my_project/docs/README.md

# 验证结构
tree my_project/

练习2:日志文件管理(15分钟)

任务:模拟日志文件管理

# 1. 创建logs目录和3个日志文件
# 2. 更新最新日志文件的时间戳
# 3. 将3天前的日志移动到archive目录
# 4. 删除7天前的日志备份

# 提示:使用touch -t设置特定时间戳

参考答案

# 1. 创建日志文件
mkdir logs
touch logs/app_{20231222,20231223,20231224}.log

# 2. 更新最新日志时间戳
touch logs/app_20231224.log

# 3. 创建archive并移动旧日志
mkdir archive
mv logs/app_20231222.log archive/

# 4. 创建并删除7天前日志备份
touch logs/app_20231217.log.bak
rm logs/app_20231217.log.bak

# 查看结果
ls -la logs/ archive/

练习3:安全删除练习(10分钟)

任务:练习安全删除操作

# 1. 创建测试文件和目录
# 2. 使用安全方式删除
# 3. 验证删除结果

# 要求:使用交互模式,显示操作过程

参考答案

# 1. 创建测试数据
mkdir test_safe_delete
touch test_safe_delete/{file1.txt,file2.txt,file3.txt}
mkdir test_safe_delete/subdir
touch test_safe_delete/subdir/{a.log,b.log}

# 2. 安全删除练习
# 交互式删除文件
rm -i test_safe_delete/*.txt

# 显示删除过程
rm -rv test_safe_delete/subdir/

# 最后删除目录(确认空目录)
rm -d test_safe_delete/

# 3. 验证
ls -la | grep test_safe_delete

八、常见错误和调试技巧

8.1 权限问题

# 错误:Permission denied
touch /root/system_file.txt  # 需要sudo权限

# 解决方案
sudo touch /root/system_file.txt
# 或者在用户有权限的目录操作
touch ~/my_file.txt

8.2 文件不存在

# 错误:No such file or directory
cp nonexistent.txt backup/

# 解决方案:先检查文件是否存在
ls nonexistent.txt
# 或者使用通配符
cp *.txt backup/ 2>/dev/null || echo "没有txt文件可复制"

8.3 目录不存在

# 错误:No such file or directory
cp file.txt nonexistent_dir/

# 解决方案:先创建目录
mkdir -p nonexistent_dir
cp file.txt nonexistent_dir/

8.4 使用echo调试

# 在危险操作前先echo确认
echo "将要删除: $(ls *.tmp)"
# 确认输出无误后再执行
rm *.tmp

九、安全操作规范

9.1 黄金法则

  1. 备份重要数据后再进行批量操作
  2. 先列出再操作:lsrm
  3. 使用交互模式-i 选项
  4. 避免使用 rm -rf /path(永远指定具体路径)

9.2 安全别名设置

# 在~/.bashrc中添加安全别名
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# 重新加载配置
source ~/.bashrc

通过本课程的学习,你应该能够熟练进行Linux基础文件操作,并养成良好的安全习惯。记住:谨慎操作,勤备份

作者:严锋  创建时间:2025-11-01 10:55
最后编辑:严锋  更新时间:2025-11-04 14:01