第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 看日志,新内容会实时刷新出来。这比反复打开关闭文件要高效得多。
tail -f 监控日志,当场就发现了数据格式错误。如果没有这个命令,我可能得等一天才能发现问题。
1.3 本章小结
今天咱们学了文件管理的7个命令(pwd、ls、cd、mkdir、rm、cp、mv)和查看文件的5个命令(cat、more、less、head、tail)。
这些命令看起来简单,但每个都有它的“脾气”。我建议你:
- 在虚拟机里多练几遍,特别是
rm -rf这种危险操作,一定要养成确认的习惯 - 把
less和tail -f练熟,它们是你调试时的左膀右臂 - 遇到不懂的,就用
man 命令名查看帮助文档
下一章,咱们会继续深入Linux基础命令,包括文件权限、查找、压缩等更实用的内容。到时候,你会发现这些命令组合起来,威力巨大。
好了,今天的课就到这里。记住:命令不在多,在于精。把这些基础打牢,后面的路就好走了。