跳转至

文件与目录操作

本章目标:

  • 熟练掌握 Linux 中最常用的文件与目录命令
  • 理解每个命令“在做什么”,而不是死记

1. 当前路径与环境认知

1.1 pwd:查看当前所在目录

pwd

含义:Print Working Directory
作用:确认你现在“站在哪个目录”

📌 教学提示:
在 Linux 中,所有相对路径都基于当前目录


1.2 ls:列出目录内容

ls
ls -l
ls -a
ls -la

常用参数说明:

参数 含义
-l 显示详细信息
-a 显示隐藏文件
-h 人类可读大小

示例:

ls -lh

2. 目录切换(cd)

2.1 cd 的基本用法

cd /path/to/dir

常见写法:

cd ..
cd ~
cd -
写法 含义
cd .. 上一级目录
cd ~ 当前用户家目录
cd - 切换回上一次目录

📌 实战技巧:
频繁在两个目录切换时,cd - 非常高效


3. 创建与删除目录

3.1 mkdir:创建目录

mkdir test
mkdir a b c
mkdir -p a/b/c

-p:递归创建(教学重点)


3.2 rmdir 与 rm

rmdir empty_dir
rm -r dir
rm -rf dir

⚠️ 教学警告:

  • rm -rf 不会提示确认
  • 在生产服务器慎用

4. 文件的创建、复制、移动、删除

4.1 touch:创建文件

touch a.txt

4.2 cp:复制

cp a.txt b.txt
cp a.txt dir/
cp -r dir1 dir2

4.3 mv:移动 / 重命名

mv a.txt dir/
mv a.txt b.txt

📌 mv = move + rename


4.4 rm:删除文件

rm a.txt
rm -r dir

5. 查看文件内容(重点)

5.1 cat

cat file.txt

适合小文件


5.2 less(强烈推荐)

less file.txt

常用操作:

  • ↑ ↓:滚动
  • /关键词:搜索
  • q:退出

5.3 head / tail

head -n 10 file  #查看前十行 等同于 head file
tail -n 10 file  #查看后十行 等同于 tail file
tail -f app.log  #持续监控文件末尾的变化

📌 tail -f:实时查看日志(服务器必会)


6. 搜索与统计

6.1 find:查找文件

find /var/log -name "*.log"

6.2 wc:统计

wc -l file  #统计行数
wc -w file  #统计字数
wc -c file  #统计字节数

7. grep 过滤文本,只留下你关心的行

7.1 grep 的作用?

  • 日志分析
  • 进程筛选
  • 配置文件检查
  • Shell 脚本中的文本处理

7.2 grep 的基本语法

grep [选项] "关键词" 文件

示例:

grep ERROR app.log

含义:

  • app.log
  • 查找包含 ERROR 的行
  • 并将这些行输出到终端

7.3. grep 的常用选项

grep -i error app.log  #忽略大小写
grep -n ERROR app.log  #显示行号
grep -v INFO app.log  #反向匹配
grep -r ERROR /var/log  #递归搜索目录
grep -E "ERROR|WARN" app.log  #使用扩展正则表达式

8. grep 与管道(核心用法)

grep 很少单独使用,通常与管道配合。

8.1 查找进程

ps -ef | grep java

86.2 查端口

netstat -an | grep 8080

8.3 实时日志过滤

tail -f app.log | grep ERROR

8.4. grep 与统计结合

grep ERROR app.log | wc -l

统计错误日志数量


8. 常见错误

  • 路径写错(相对 / 绝对)
  • rm 用错目录
  • 不会用 less 查大文件
  • 在 / 目录下乱操作

📌 建议:

先 ls,再操作


9. 本章小结

你现在应该已经能够:

  • 自由切换目录
  • 管理文件与目录
  • 查看和分析文件内容
  • 使用基础命令组合解决问题

10. 教学练习

练习 1(操作)

  • 创建目录 practice
  • 在里面创建 3 个文件
  • 复制、重命名其中一个

练习 2(日志模拟)

echo "ERROR test" >> app.log
tail -f app.log