第1章:Linux基础命令(上)——文件管理命令与查看文件命令

各位同学,欢迎来到《嵌入式Linux物联网开发实战》的第一课。

说实话,很多初学者一上来就啃Linux内核、搞驱动开发,结果连个文件都找不着,那真是欲哭无泪。我个人觉得,Linux基础命令就像你手里的螺丝刀——不一定要多花哨,但必须用得顺手。今天咱们就把文件管理和查看文件这两块硬骨头啃下来。

1.1 文件管理命令:你的Linux“文件管家”

嵌入式开发中,你打交道最多的就是文件。配置文件、日志文件、设备节点文件……说白了,不会文件管理,你连门都进不去。

1.1.1 pwd —— 我在哪?

刚接触Linux时,我经常在终端里迷路。pwd(Print Working Directory)就是你的GPS。它告诉你当前所在的绝对路径。

$ pwd
/home/developer/project

嗯,这里要注意:嵌入式开发中,你经常要在根文件系统、挂载点之间跳转,养成随时pwd的习惯,能省不少事。

1.1.2 ls —— 看看都有啥

ls是Linux里用得最频繁的命令,没有之一。我个人习惯用 ls -l 查看详细信息,用 ls -a 看隐藏文件。

$ ls -l
drwxr-xr-x 2 root root 4096 Jan 15 10:30 config
-rw-r--r-- 1 root root  128 Jan 15 10:31 main.c

我在项目中遇到过一个问题:明明把文件拷进去了,ls却看不到。后来发现是文件名前面多了个点(.),成了隐藏文件。所以排查问题时,记得加个 -a 参数。

小技巧: ls -lh 可以以人类可读的格式显示文件大小(K、M、G),嵌入式里看日志文件大小特别实用。

1.1.3 cd —— 想去哪就去哪

cd(Change Directory)是切换目录的命令。嵌入式开发中,你经常要在 /etc/var/sys 之间来回跑。

$ cd /etc/network
$ cd ~          # 回到家目录
$ cd -          # 回到上一个目录

我曾经在调试网络时,在 /sys/class/net/etc/network 之间反复横跳。用 cd - 这个技巧,能省下你敲键盘的时间。

1.1.4 mkdir —— 创建目录

嵌入式项目里,目录结构一定要清晰。mkdir可以创建单层或多层目录。

$ mkdir logs
$ mkdir -p project/src/include   # 递归创建

我建议:在创建项目目录时,直接用 -p 参数,一次性把整个目录树建好。别一层一层地建,浪费时间。

1.1.5 rm —— 删除的艺术

rm是双刃剑。用好了是清理工具,用不好就是灾难。

$ rm file.txt
$ rm -r directory/   # 递归删除目录
$ rm -f file.txt     # 强制删除,不提示
避坑指南: 我曾经在嵌入式设备上执行 rm -rf /(千万别试!),直接把整个系统删了。后来只能重新烧录固件。记住:rm -rf 后面一定要再三确认路径。

1.1.6 cp —— 复制文件

cp命令在嵌入式开发中常用于备份配置文件、复制固件等。

$ cp source.txt dest.txt
$ cp -r source_dir/ dest_dir/   # 递归复制目录
$ cp -i file.txt /backup/       # 交互模式,覆盖前询问

我个人习惯在复制重要文件时加 -i 参数,防止不小心覆盖了正在用的配置文件。

1.1.7 mv —— 移动或重命名

mv既可以移动文件,也可以重命名。嵌入式里,我经常用它来更新固件:先把新固件下载到临时目录,再用mv覆盖旧文件。

$ mv old_name.c new_name.c   # 重命名
$ mv file.txt /tmp/          # 移动文件

你想想看,mv比cp+rm的组合要快得多,因为mv只是在文件系统里改个指针,不涉及数据拷贝。

1.2 查看文件命令:读懂你的系统

嵌入式设备上,你没法用图形界面打开文件。所有信息都得靠命令行来读。所以,掌握查看文件的命令,就是你的“眼睛”。

1.2.1 cat —— 简单粗暴

cat适合查看小文件。比如查看CPU信息、内存信息等。

$ cat /proc/cpuinfo
$ cat /etc/hostname

嗯,这里要注意:千万别用cat看大文件(比如几MB的日志)。否则终端会卡死,你只能强制关闭。

1.2.2 more —— 一页一页看

more是cat的升级版。它会把内容分页显示,按空格翻页,按q退出。

$ more long_log.txt

我在调试嵌入式设备时,经常用more查看启动日志。它不会一次性把内容全倒出来,方便你慢慢分析。

1.2.3 less —— 更强大的分页器

less比more更强大。它支持上下翻页、搜索、甚至还能往回翻(more只能往前)。

$ less kernel_log.txt

在less里,你可以:

  • / 搜索关键词(比如搜索 "error")
  • n 跳到下一个匹配项
  • g 跳到文件开头,按 G 跳到文件末尾

我个人习惯用less代替more。说白了,less就是more的“完全体”。

1.2.4 head —— 只看开头

head默认显示文件的前10行。嵌入式里,我常用它来快速查看日志文件的头部,确认日志格式是否正确。

$ head -n 20 app.log   # 显示前20行

我曾经在分析一个崩溃日志时,用head快速定位到日志的起始时间戳,省去了翻页的麻烦。

1.2.5 tail —— 只看结尾

tail默认显示文件的后10行。它有一个超级实用的参数 -f,可以实时跟踪文件的新增内容。

$ tail -f /var/log/syslog   # 实时查看系统日志

你想想看,调试嵌入式设备时,你一边运行程序,一边用 tail -f 看日志,新内容会实时刷新出来。这比反复打开关闭文件要高效得多。

实战经验: 我在调试一个物联网网关时,设备每隔5分钟上报一次数据。我用 tail -f 监控日志,当场就发现了数据格式错误。如果没有这个命令,我可能得等一天才能发现问题。

1.3 本章小结

今天咱们学了文件管理的7个命令(pwd、ls、cd、mkdir、rm、cp、mv)和查看文件的5个命令(cat、more、less、head、tail)。

这些命令看起来简单,但每个都有它的“脾气”。我建议你:

  • 在虚拟机里多练几遍,特别是 rm -rf 这种危险操作,一定要养成确认的习惯
  • lesstail -f 练熟,它们是你调试时的左膀右臂
  • 遇到不懂的,就用 man 命令名 查看帮助文档

下一章,咱们会继续深入Linux基础命令,包括文件权限、查找、压缩等更实用的内容。到时候,你会发现这些命令组合起来,威力巨大。

好了,今天的课就到这里。记住:命令不在多,在于精。把这些基础打牢,后面的路就好走了。