飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 基础入门

    • Linux 命令概述与环境准备
    • 文件与目录操作(上):ls、cd、pwd
    • 文件与目录操作(下):cat、touch、mkdir、rm、cp、mv
    • 获取帮助与基础工具:man、help、clear、exit、sudo
  • 文件权限

    • 文件权限管理:chmod、chown
  • 系统与监控

    • 进程管理与系统监控:ps、top、kill、df、du、free
    • 用户与环境:whoami、id、env、echo、history
  • 网络命令

    • 网络诊断(上):ping、curl、wget
    • 网络诊断(下):netstat、ss、ip
    • 网络抓包与高级工具:traceroute、tcpdump、nc
    • DNS 与防火墙:nslookup、dig、iptables
  • 文本处理

    • 文本搜索:grep
    • 文本处理(上):awk
    • 文本处理(下):sed
    • 文本排序与统计:sort、uniq、wc
    • 文件查看与查找:head、tail、cut、find
    • 归档压缩与管道组合:tar、gzip、xargs
  • 开发工具

    • 开发工具链(上):gcc、make
    • 开发工具链(下):gdb、time
    • 版本控制:git
    • 远程操作:ssh、scp
    • 编辑器:vim、nano
  • Shell 编程

    • Shell 编程基础(上):变量、管道、重定向
    • Shell 编程基础(下):条件、循环、函数
  • 综合实战

    • 综合实战:日志分析

文件与目录操作(下):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:移动/重命名,不需要 -r
  • rm -r:删除目录,rm -rf 极度危险,使用前必须确认路径
  • 核心区别:cp 和 rm 操作目录需要 -r,mv 不需要

动手实践

  1. 创建练习目录结构:

    mkdir -p ~/learn-linux/day{01..05}
    ls ~/learn-linux/
    
  2. 在 day01 目录创建文件并写入内容:

    cd ~/learn-linux/day01
    cat > notes.txt
    Today I learned Linux commands.
    # 按 Ctrl+D 保存
    cat notes.txt
    
  3. 复制和移动练习:

    cp notes.txt notes-backup.txt
    mv notes-backup.txt ../day02/
    ls ../day02/
    
  4. 安全删除练习:

    rm -i notes.txt
    # 输入 y 确认删除
    
  5. 用 touch 创建 10 个空文件,然后批量删除:

    touch file{1..10}.txt
    ls
    rm file*.txt
    
  6. 思考:cp 和 mv 对文件权限有什么影响?复制后的文件所有者和原文件一样吗?用 ls -l 对比观察。

上一页
文件与目录操作(上):ls、cd、pwd
下一页
获取帮助与基础工具:man、help、clear、exit、sudo