文件与目录操作(下):cat、touch、mkdir、rm、cp、mv
touch:创建空文件或更新时间戳
touch 有两个作用:创建空文件,或更新已有文件的修改时间。
# 创建空文件
touch hello.txt
# 创建多个空文件
touch file1.txt file2.txt file3.txt
# 更新已有文件的时间戳为当前时间
touch hello.txt
# 查看文件时间
ls -l hello.txt
生活类比:touch 就像摸一下文件——如果文件不存在,就创建一个空的;如果存在,就更新它的"最后修改时间"。
mkdir:创建目录
# 创建单个目录
mkdir learn-linux
# 创建多级目录(-p 递归创建)
mkdir -p learn-linux/day01/files
# 创建多个同级目录
mkdir dir1 dir2 dir3
-p(parents)选项非常重要:如果父目录不存在,自动创建,不会报错。
# 不加 -p 会报错
mkdir a/b/c
# mkdir: cannot create directory 'a/b/c': No such file or directory
# 加 -p 成功
mkdir -p a/b/c
cat:查看和合并文件
cat(Concatenate)原意是连接,最常用的是查看文件内容。
# 查看文件内容
cat hello.txt
# 查看多个文件(依次拼接输出)
cat file1.txt file2.txt
# 创建文件并写入内容(Ctrl+D 结束输入)
cat > hello.txt
Hello, Linux!
This is my first file.
# 按 Ctrl+D 保存
# 追加内容到文件(>> 追加,> 覆盖)
cat >> hello.txt
More content here.
# 按 Ctrl+D 保存
注意:cat > file 会覆盖原有内容,cat >> file 是追加。
cp:复制文件和目录
# 复制文件
cp hello.txt hello-backup.txt
# 复制到目录
cp hello.txt /tmp/
# 复制目录(-r 递归)
cp -r learn-linux/ learn-linux-backup/
# 复制时显示进度(-v verbose)
cp -rv learn-linux/ learn-linux-backup/
# 复制时强制覆盖(-f force)
cp -f hello.txt /tmp/
# 复制时提示确认(-i interactive)
cp -i hello.txt /tmp/
生活类比:cp 就像复印机——-r 是复印整本书(目录),-v 是复印时告诉你"正在复印第几页"。
mv:移动和重命名
mv(Move)既能移动文件/目录,也能重命名。
# 重命名文件
mv hello.txt hi.txt
# 移动文件到目录
mv hi.txt /tmp/
# 移动并重命名
mv hi.txt /tmp/hello.txt
# 移动目录
mv learn-linux/ /tmp/
# 覆盖前确认
mv -i hi.txt /tmp/
注意:mv 不需要 -r 就能移动目录,这是和 cp 的区别。
rm:删除文件和目录
# 删除文件
rm hello.txt
# 删除多个文件
rm file1.txt file2.txt
# 删除空目录
rmdir empty-dir/
# 删除目录及内容(-r 递归)
rm -r learn-linux/
# 强制递归删除(⚠️ 极度危险)
rm -rf learn-linux/
# 删除前确认(-i interactive)
rm -i hello.txt
⚠️ rm -rf 是核弹:
rm= remove(删除)-r= recursive(递归,进入子目录)-f= force(强制,不提示确认)
绝对不要执行:rm -rf /(删除根目录下所有文件)或 rm -rf ~(删除家目录)。
本篇小结
touch:创建空文件或更新时间戳mkdir -p:递归创建多级目录cat:查看文件内容,>覆盖写入,>>追加写入cp -r:复制目录(需要递归)mv:移动/重命名,不需要-rrm -r:删除目录,rm -rf极度危险,使用前必须确认路径- 核心区别:
cp和rm操作目录需要-r,mv不需要
动手实践
创建练习目录结构:
mkdir -p ~/learn-linux/day{01..05} ls ~/learn-linux/在 day01 目录创建文件并写入内容:
cd ~/learn-linux/day01 cat > notes.txt Today I learned Linux commands. # 按 Ctrl+D 保存 cat notes.txt复制和移动练习:
cp notes.txt notes-backup.txt mv notes-backup.txt ../day02/ ls ../day02/安全删除练习:
rm -i notes.txt # 输入 y 确认删除用
touch创建 10 个空文件,然后批量删除:touch file{1..10}.txt ls rm file*.txt思考:
cp和mv对文件权限有什么影响?复制后的文件所有者和原文件一样吗?用ls -l对比观察。