ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

嵌入式入门必学:Linux命令基础与高频实战指南

嵌入式入门必学:Linux命令基础与高频实战指南 嵌入式学习入门第一关往往不是C语言也不是电路基础而是Linux命令。很多人不理解我学嵌入式为什么上来要先折腾Linux等你在真实项目中交叉编译过一份内核、通过NFS挂载过根文件系统、在开发板上排查过网络问题之后就会明白Linux命令就是嵌入式开发者的手和脚绕不开也省不掉。这篇文章我打算结合实际项目里的使用场景把嵌入式入门阶段最该掌握的Linux命令基础一次讲透顺便把环境搭建、高频坑点、面试考点和学习路线也捋一遍。1. 嵌入式学习为什么绕不开Linux命令基础1.1 三个真实场景告诉你命令基础不是选修课先说第一个场景交叉编译。嵌入式开发跟纯PC软件开发最大的区别在于你写的代码最终要跑在开发板上而开发板的CPU架构跟你的电脑往往不一样。电脑是x86板子可能是ARM这就意味着你不能直接在板子上编译代码得在PC上用交叉编译工具链生成ARM架构的可执行文件。这时候你就要在终端里敲类似arm-linux-gnueabihf-gcc这样的命令配置环境变量、指定编译器路径、把源码编译成能在目标板上运行的二进制。这一整套流程每一步都离不开Linux命令。第二个场景开发板调试。板子启动之后你要往上面烧写程序、下载内核、挂载根文件系统。最常见的做法是把板子跟PC用网线连起来用NFS挂载PC上的目录让板子直接运行PC上的根文件系统这样每次改完代码重启板子就能看到最新效果。这个过程中涉及ifconfig配置网络、mount挂载NFS、ping测试连通性。我见过不止一个新手卡在这一步明明代码没问题就是网络配置不对最后发现是IP地址不在同一网段这种错误用一条ping命令就能查出来。第三个场景查看系统信息。不管是定位驱动问题还是确认硬件状态你都得在开发板上执行dmesg查看内核日志、cat /proc/cpuinfo确认CPU信息、free查看内存占用、top看进程负载。没有这些命令你面对一块跑不起来的板子跟对着一个黑盒没有区别。1.2 Linux命令基础的本质建立一种操作直觉我在带新人时经常发现一个现象很多人不是不会敲命令而是理解不了“命令为什么是这样组织的”。比如ls -l、chmod 755、tar -xzf xxx.tar.gz他们要么是死记硬背要么是抄别人的答案换个参数就不会了。我觉得一个关键认知是Linux命令本质上是“小工具的组合”。每一条命令只做一件事ls负责列目录grep负责过滤文本find负责查找文件tar负责打包解包。这些工具可以像乐高积木一样拼起来用通过管道符|把前一个命令的输出作为后一个命令的输入。比如你想在一个大工程里找出所有包含“error”字符串的源文件一条grep -r error *.c就能搞定。这种组合能力才是命令基础的核心。想明白这一点你就不是在背命令而是在建立一套与Linux系统对话的语法体系。1.3 热词背后的信息市场在喊你赶紧补齐短板最近我注意到“嵌入式linux”“嵌入式学习路线”“linux常用命令大全运维”这些关键词的搜索热度一直在涨说明确实有大量新人正在涌入这个方向。“嵌入式面试题”和“嵌入式八股文”的流行也说明一个问题企业面试时对Linux命令基础的考查越来越细从ps和top的区别到软链接和硬链接的区别再到查看端口占用用什么命令这些问题本身不难但恰恰能筛选出那些靠死记硬背速成和真正实践过的人。所以这篇文章要解决的不是让你背完所有命令而是帮你围绕嵌入式开发的实际场景把最核心、最高频的命令用法吃透配合项目实践把基础打牢。2. 环境选型与搭建先给自己造一个趁手的Linux环境2.1 Windows电脑装虚拟机还是WSL怎么选学习Linux命令首先得有一个Linux环境。对于绝大多数Windows用户我建议装虚拟机。常见的选择有VMware Workstation和VirtualBox前者功能更全个人版免费后者开源免费轻量一些。如果你只是做命令练习两个都够用。需要注意的是尽量别用精简版、Ghost版系统镜像推荐去Ubuntu官网下载官方镜像干净、稳定、少出幺蛾子。近两年WSLWindows Subsystem for Linux也很流行尤其是WSL2启动快、资源占用小在Windows上开一个Ubuntu终端就能直接跑Linux命令还能跟Windows文件系统互通。你在/mnt/c/目录下就能访问到整个C盘。对于纯命令学习WSL完全够用。但如果你后续要做内核编译、设备驱动开发这类需要跟硬件底层打交道的活我建议还是用虚拟机它是完整的Linux内核环境踩到的问题和真实服务器环境更接近遇到问题后网上能搜到的解决方案也更多。2.2 发行版选择与系统安装细节发行版的选择建议你从Ubuntu或Debian入手。这两个发行版生态成熟软件包管理器是apt装软件方便社区资料多几乎你踩过的坑都有人踩过并写了解决方案。CentOS/RHEL系列在服务器领域用得很多但桌面体验一般嵌入式裸机开发的学习阶段没必要一开始就上。还有一类国产化Linux比如麒麟、统信UOS目前在政企和嵌入式国产化项目里越来越常见等你有了Ubuntu基础之后上手它们没有障碍命令基本通用只是软件包管理器换成了apt、yum或dnf的差别。安装系统的时候有几个细节值得注意。第一磁盘分区时建议把/根目录和home分开因为重装系统时home分区可以保留个人文件和配置不会丢。第二用户名尽量不要用中文避免后面配置交叉编译环境时出现奇怪的编码问题。第三安装过程中如果提示“install third-party software”之类的选项建议勾选免得后面解码MP3、看视频缺解码器。装完系统第一件事就是换源原因很简单——默认源在境外下载速度感人换成清华、阿里或中科大镜像源后你会感觉世界变快了。以Ubuntu为例把/etc/apt/sources.list里的地址替换成镜像源地址然后执行sudo apt update sudo apt upgrade。2.3 安装完系统后必须做的三件事每次我装完一个新的Linux系统会先做三件事第一是更新软件源sudo apt update第二是安装基本工具包括vim、git、curl、wget、net-tools、build-essential其中build-essential这个包包含了gcc、make等编译必需的工具链后面编译C代码直接依赖它第三是配置好终端让提示符显示当前路径和git分支用vim .bashrc改一下PS1变量就行。你可能会觉得这些事情繁琐但这些都是嵌入式开发里的日常操作。早一点熟悉“改配置、更新源、装工具”的流程后面配置交叉编译环境、搭建TFTP、NFS服务时就不会手忙脚乱。3. 高频命令实战嵌入式开发中最常用的20个命令3.1 文件与目录操作嵌入式工程的第一课在嵌入式开发里文件操作是最高频的动作没有之一。你下载了一份官方SDK用tar解压你调整内核配置用cp备份.config文件你查看源码目录结构用ls和tree。这些命令看似简单但有几个细节值得展开。先说ls。很多人只会ls和ls -l但嵌入式场景里还要掌握ls -a显示隐藏文件、ls -lh以人类可读方式显示文件大小这样看到的不是字节数而是K、M这样的单位、ls -lt按修改时间排序适合查看最新修改的文件。在根文件系统和内核源码目录中有大量以点开头的隐藏文件比如.config、.gitignore不加-a参数就会看漏。再强调一下cd的快速技巧cd ~回到家目录cd -回到上一次所在目录cd ../..向上跳两级。在多层嵌套的内核源码目录里切换时这个cd -能省下大量时间。cp和mv是移动和复制的常用命令但在嵌入式环境里你要特别小心权限问题。复制一个设备节点文件比如/dev/mtd0时如果不用cp -a保留文件属性复制出来的文件就不是一个可用的设备节点移动一个可执行文件时如果忘了保留可执行权限放到板上跑不起来又会浪费半小时排查。所以记住cp -a用于保留所有属性rm命令在嵌入式开发里建议一切从简、多用rm -i交互模式因为删掉内核配置或者根文件系统里的一个关键文件可能就意味着整个环境白搭我之前就干过这种事一个sudo rm -rf输错了参数整个编译好的根文件系统直接没了。tar是最常用的压缩打包工具嵌入式场景里几乎每天都要跟.tar.gz、.tar.bz2、.tar.xz打交道。解压命令是tar -xzf 文件名.tar.gz其中x表示解压z表示通过gzip解压f表示文件名。打包命令是tar -czf 目标文件.tar.gz 源目录。一个特别容易踩的坑是在老版本的busybox或不完整的嵌入式系统里tar可能不支持z参数这时需要用tar -xf 文件名.tar.gz让tar自动识别压缩格式。3.2 系统信息与硬件信息的查看学会“望闻问切”嵌入式开发和硬件打交道所以学会查看系统信息非常重要。一台刚拿过来的开发板你首先要确认它的CPU型号、内存大小、内核版本、根文件系统类型通过这些信息判断当前运行环境是否和你要开发的目标一致。uname -a会列出内核版本、主机名、硬件架构。这在你确认Linux内核版本是否满足某个驱动模块的要求时特别有用。cat /proc/cpuinfo会显示CPU的详细信息包括处理器型号、架构、支持的指令集。free -h以人类可读方式显示内存总量、已用量和可用量在排查内存泄漏问题时极有用。df -h查看各分区的挂载点和磁盘占用率在确认根文件系统是否快满、SD卡某个分区是否异常时必用。cat /proc/meminfo能查看更细粒度的内存分配情况内核开发时经常要看。dmesg是嵌入式开发里最频繁用到的命令之一内核启动日志和设备驱动注册信息都在这里板子起不来或者驱动加载失败第一时间执行sudo dmesg | tail -n 50查看最后一段日志。补充笔者的使用心得dmesg的输出往往很长你要学会配合管道和grep过滤关键词。比如驱动名是adc128s052直接执行dmesg | grep -i adc128s052快速定位跟这个设备相关的日志。这条组合命令你在实际项目里每天都会用。3.3 进程与任务管理让程序有序地跑起来在开发板上运行程序后发现CPU占用率100%是哪个进程导致的或者某个后台服务一直重启是什么原因这些都要靠进程管理命令来定位。ps用于查看当前系统中的进程快照嵌入式环境常用ps -ef或ps aux。两者区别在于-ef是标准语法显示UID、PID、PPID等信息aux是BSD风格额外显示CPU和内存占用率。在排查问题时经常用ps aux | grep 进程名来确认目标进程是否在运行。top是动态查看进程资源占用情况的命令有点像Windows任务管理器。它的输出中包含实时CPU、内存、任务数等信息按P键可按照CPU占用率排序按M按照内存排序。在开发板上跑视频编解码或AI推理任务时我习惯用top观察哪些进程吃CPU、哪些进程吃内存。kill用来结束进程常用参数是-9强制结束和-15正常结束。但嵌入式场景里要注意有时候程序卡死了普通kill可能无效需要kill -9强杀。还有一种情况程序变成了僵尸进程父进程还没释放它这时候你杀不掉它只能等父进程退出或者手动结束父进程。systemctl是systemd体系下的服务管理命令现在主流Linux发行版和嵌入式发行版都在用。你可以用systemctl status 服务名查看服务状态用systemctl restart 服务名重启服务用systemctl enable 服务名设置开机自启用systemctl disable取消自启。在给开发板配置开机后自动运行某个应用时通常会写一个systemd服务单元文件然后systemctl enable一下这个技能在真实项目里非常实用。3.4 网络命令开发板与PC沟通的桥梁嵌入式开发中网络命令占据着极其重要的地位。开发板与主机之间的文件传输、NFS根文件系统挂载、SSH登录、GDB远程调试全部依托网络。如果网络不通后续所有操作都无法进行。首要掌握的是ifconfig或ip addr两者都用于查看和配置网络接口。老系统习惯用ifconfig新系统更推荐ip addr。在开发板确认IP地址时执行ifconfig eth0就能看到该接口的IP和MAC。临时设置IP用ifconfig eth0 192.168.1.100 netmask 255.255.255.0重启后失效适合快速调试要永久配置则改/etc/network/interfaces或使用nmcli。ping用于测试网络连通性基本用法是ping 目标IP。但有一个细节新手经常忽略ping不通时先ping自己电脑的IP再ping网关再ping外网逐段缩小排查范围能更快定位问题究竟出在网线、网卡、IP配置还是路由上。另外开发板ping主机不通、但主机还能ping通板子时要注意是不是板子的防火墙把ICMP包过滤了。ssh是远程登录开发板最常用的方式。开发板的Linux一般开启了SSH服务你在PC上执行ssh 用户名板子IP就能登录进去然后像本地操作一样操作板子。scp是基于SSH的文件传输命令格式是scp 本地文件 目标用户名目标IP:目标路径把编译好的可执行文件传到板上一条命令就搞定。mount是挂载命令在嵌入式调试中几乎是每天必用。最典型的是NFS挂载根文件系统开发板上电后通过U-Boot传入root/dev/nfs nfsroot192.168.1.100:/path/to/rootfs参数让板子从PC的NFS服务器远程挂载根文件系统。这样你在PC上修改根文件系统里的内容板子重启后立刻生效省去反复烧写Flash的等待。平时也可以用mount -t nfs 192.168.1.100:/共享目录 /mnt/nfs单独挂载一个共享目录方便把大文件放到板子上。挂载完成后执行df -h确认挂载是否成功。卸载用umount挂载目录被占用时卸载会报错需要先退出或杀死占用进程。3.5 权限、用户与软件包管理保命基本技能嵌入式开发中经常需要在开发板或虚拟机上新建用户、给脚本添加执行权限、安装软件包这些都属于基础操作但一旦没搞清楚会踩不少坑。权限管理围绕三个核心命令chmod、chown、chgrp。chmod用于修改文件权限嵌入式里最常用的形式是数字表示法比如chmod 755 脚本.sh表示所有者可读写执行组用户和其他用户可读可执行chmod 600 私钥文件表示只有所有者能读写这在SSH密钥管理里尤其重要因为私钥权限太宽松SSH会拒绝使用。chown用于修改文件属主比如chown -R root:root /目录在做根文件系统镜像时属主不对可能导致某些程序无法正常运行。chgrp修改属组实际用的频率相对低一些但在确保某个应用只能被特定组的用户访问时也有用。用户管理命令包括useradd、passwd、usermod。useradd 用户名新建用户passwd 用户名设置或修改密码usermod -aG sudo 用户名把用户加入sudo组。为什么强调这个因为很多人在虚拟机上装完Linux发现很多命令需要root权限但自己不知道root密码怎么设置也不知道普通用户如何临时提权。正确做法是安装系统时创建的普通用户用sudo提权而不是直接登录root。日常操作保持在普通用户身份只有需要系统级更改时才加sudo这样做的好处是避免误操作把系统搞坏也能让你熟悉权限体系的运作方式。软件包管理方面Debian/Ubuntu系主要掌握apt这一组命令sudo apt update更新软件源索引sudo apt upgrade升级已安装软件sudo apt install 软件名安装软件sudo apt remove 软件名卸载软件。特别提醒在嵌入式环境里安装软件前先确认目标平台的架构用uname -m或dpkg --print-architecture查看。你在一台amd64主机上装arm64的软件包系统会直接报架构错误。RHEL/CentOS系用yum或dnf新项目基本都用dnf语法类似。国内常用的国产Linux发行版也大多兼容这些包管理方式。4. 从命令到工作流环境变量、脚本和编辑器的三重进阶4.1 PATH环境变量为什么交叉编译器总是“找不到命令”很多新手交叉编译时遇到arm-linux-gnueabihf-gcc: command not found第一反应是没装好工具链实际上90%的情况是工具链本身没问题只是它没进PATH环境变量。什么意思呢Linux执行命令时shell会沿着PATH变量里列出的路径逐个去查找可执行文件如果工具链放在/opt/gcc-arm-xxx/bin下而这个路径不在PATH里你直接敲命令自然找不到。解决办法是把工具链路径exports到PATH。临时生效直接执行export PATH$PATH:/opt/gcc-arm-xxx/bin但对嵌入式开发来说每次打开终端都要重新设置会很痛苦更好的做法是把这行写进~/.bashrc文件末尾然后执行source ~/.bashrc让它立刻生效。用echo $PATH确认路径是否加入成功用which arm-linux-gnueabihf-gcc确认系统能找到该命令。我强烈建议新人把这个过程亲手做一遍搞清楚PATH、export、source、which这几个概念后面每换一次工具链都能灵活应对不用每次求救。4.2 三个让日常操作自动化的Shell脚本技巧命令基础学到一定阶段你就该试着“偷懒”了。让Shell替你干活是Linux开发效率的第一次跃升。这里分享三个最常见的使用技巧。第一别名alias。在~/.bashrc里写一行alias llls -lh之后敲ll就相当于执行ls -lh省去反复敲参数。还可以把常用路径的cd也做成别名比如alias cdimxcd /opt/work/imx6一键跳到项目目录。第二for循环。在命令行里批量执行任务比如当前目录下有几十个.c文件需要编译你可以写一个for f in *.c; do gcc -c $f; done一条命令批量处理所有文件。再比如要连续ping一个IP十次测试稳定性for i in $(seq 1 10); do ping -c 1 192.168.1.100 ping.log; done。第三管道组合。用|把多个命令串起来形成强大的检索能力。比如查找当前目录下最大的5个文件find . -type f -exec du -h {} | sort -rh | head -n 5。再比如统计当前目录下源文件总行数find . -name *.c | xargs wc -l | tail -n 1。这些组合命令看起来很酷其实拆开看就很朴素find负责找文件wc -l负责数行数tail负责取最后一行。4.3 vim基本功嵌入式工程师躲不开的编辑器这个话题确实有点“劝退”但现实是嵌入式场景里你总会遇到没有图形界面、只有一个终端的环境这时候vim就是救命稻草。你不用把vim学成高手掌握三成功能就够日常使用vim 文件名打开文件按i进入插入模式此时可以编辑内容按Esc退回普通模式输入:wq保存并退出输入:q!不保存退出。这几条命令就能应付绝大多数场景。再加上/关键词搜索文本dd删除光标所在行yy复制当前行p粘贴u撤销基本能正常工作。我特别建议新手在学命令基础的同时每天强迫自己在vim里编辑文件而不是用图形编辑器。一开始会很慢但两三天后你会发现在服务器上、板子上改配置、写脚本完全不需要依赖图形环境工作效率反而更高。很多嵌入式岗位面试时也会问“会不会用vim”不会的话至少给人家一个正在学的好印象。5. 踩坑复盘Linux命令常用故障排查速查表5.1 环境安装阶段的典型故障虚拟机装Linux蓝屏或卡死是很常见的问题。排查时先确认电脑是否开启了虚拟化功能Intel的VT-x或AMD的SVM通常在BIOS里能开关。我用过不少电脑它默认关闭虚拟化装上VMware起虚拟机就直接蓝屏。另外虚拟机设置里显卡驱动和显存大小也可能导致界面异常Ubuntu的Wayland和新虚拟机驱动的兼容性偶尔会有问题可以在登录界面选择“Ubuntu on Xorg”后进入。如果你需要跑大量GUI程序给虚拟机分配的内存尽量不少于4GB硬盘用固态且空间充足跑起来会顺很多。WSL安装向导提前结束并报错也是一个高频问题。新版Windows下安装WSL2通常执行wsl --install如果报错先检查Windows版本是否够新以及是否执行了wsl --update。开启“适用于Linux的Windows子系统”和“虚拟机平台”这两个Windows功能也可以手动做一下。如果你常年使用旧版WSL建议直接升级到WSL2文件性能和内核兼容性完全不是一个档次。虚拟机装完Linux很多人发现屏幕分辨率很奇怪窗口无法自适应这大概率是缺少open-vm-tools或VirtualBox Guest Additions。Ubuntu下执行sudo apt install open-vm-tools-desktop装完后重启分辨率就能跟着窗口走了。这类小问题装系统时顺手解决后面才不会烦你。5.2 使用过程中的高频报错command not found是最常见的报错之一原因可能是命令本身不存在也可能是路径不在PATH中。先用type 某命令确认shell是否识别再用which 某命令确认命令路径。如果命令存在但不在PATH中直接把绝对路径写进PATH即可。这里面最常见的例子就是上面说过的交叉编译器。Permission denied是另一个高频报错。原因往往是文件权限不够用ls -l查看属主和权限位再用chmod修正。比如一个脚本报这个错通常是因为它没有执行权限sudo chmod x 脚本.sh就能解决。但请养成好习惯能用普通用户权限解决就不要加sudo减少误伤系统的风险。NFS挂载失败时先确认NFS服务是否启动systemctl status nfs-server再确认主机上共享目录的配置是否正确cat /etc/exports然后从主机ping板子IP确认网络通不通最后在板子上挂载时注意不要用默认参数建议加-o nolock很多开发板默认NFS版本和PC服务端不一致加上nolock能避开文件锁相关的一堆问题。我在实际项目里遇到的最多的NFS失败原因就两个一是IP网段不一致二是忘记配置/etc/exports里共享目录的访问权限。5.3 开发板上的特殊问题和应急手段最尴尬的场景开发板Linux密码忘了。应急办法很多最常见的是通过串口进入U-Boot把bootargs里的启动参数改成init/bin/sh这样系统启动后会直接进入shell而不是登录界面。这时候你可以mount -o rw,remount /重新以读写模式挂载根文件系统然后执行passwd重置密码。做完后重启恢复正常的启动参数。这个过程涉及U-Boot环境变量和内核启动参数的修改新手第一次做会有点懵但它是嵌入式调试中非常经典的操作值得亲手练一次。板子上某个进程占用CPU太高导致整个系统卡顿这也是调试中的常见问题。先按CtrlC或重启系统如果能进系统用top确认高占用进程用ps aux查出它的启动方式再决定是kill还是排查代码逻辑。有些原因不是一个kill能解决的比如程序里有死循环你以为杀一次就清静了过一会儿它又出现那就得看是不是有守护进程在反复拉起它。还有一个应急经验要分享开发板上执行命令前一定要确认当前所在路径而不是想当然。很多人误在/tmp下编译调度又误在/bin下执行了覆盖系统文件的命令因为路径问题导致跟目标环境不一致排查半天才反应过来。我的习惯是在开发板的每个shell窗口打开时先用pwd确认路径缩写成PS1里显示完整路径避免这类低级事故。6. 面试考点与学习路线从命令基础到嵌入式Linux工程师6.1 嵌入式面试中Linux命令的高频考点结合我自己面试别人的经验和近年热词嵌入式岗位面试对Linux命令的考查已经有了一套比较固定的题目。最常见的几个软链接和硬链接的区别是什么、查看系统内存和CPU信息用什么命令、如何查看某个端口被哪个进程占用、如何批量解压多个tar包、内核日志文件在哪里。这些问题看起来基础却能把真正动手干过活的人和速成党区分开。举两个典型问题展开说说。第一个“软链接和硬链接的区别”。软链接类似于Windows的快捷方式它指向的是文件路径源文件被删后链接就失效了命令是ln -s。硬链接则是指向同一个inode的另一个名字源文件被删链接依然能访问到文件内容命令是ln。在嵌入式根文件系统里/bin/busybox往往有大量硬链接因为busybox一个二进制承载了几十个命令每个命令都是同一inode的硬链接理解了这一点你才不会觉得根文件系统里那些重复文件很奇怪。第二个“查看某个端口被谁占用”。正确答案是netstat -tlnp或ss -tlnp其中t表示TCP协议、l表示监听中的端口、n以数字形式显示地址、p显示进程信息。开发板上你跑了一个服务却连不上第一步就该确认这个端口到底有没有在监听是被自己监听还是被别的进程占着然后用kill清理。这种问题在真实项目里几乎每周都会遇到。6.2 命令基础之后的嵌入式学习路线建议命令基础只是第一级台阶不是终点。学完linux命令基础之后建议按这个顺序往下走。第一步学Shell编程。你只用命令是零散操作学一点Shell语法能写点自动化脚本比如自动编译、自动烧写、自动打包的脚本才算把基础变成效率。第二步学系统编程。重点掌握文件IO、进程、线程、网络socket配合C语言在Linux上写服务端程序。第三步学交叉编译和Makefile/CMake。实际项目的源码组织、工具链配置、多目录编译这里的坑比你想的多两倍。第四步学驱动开发。阅读内核源码、编写字符设备驱动、实际移植设备树这是嵌入式Linux的核心深水区。第五步结合具体SoC平台做项目比如IMX6ULL、STM32MP1、全志V3s之类用一块具体的开发板把前面学的零散知识串联起来。值得注意的是当前就业市场对“嵌入式Linux”型人才的需求明显强于单片机型人才而且薪资天花板也更高。很多岗位都要求懂Linux、会交叉编译、能读内核源码这也是“嵌入式架构师”这类岗位名称频繁出现的原因。命令基础恰好是这一切的地基地基打牢了后面学什么都能走得快。7. 额外分享让命令基础水平快速提升的两个野路子开头我说过这篇文章不搞套路总结所以最后一部分我用自己的经验来收尾。带过不少新人见过两种特别有效的“野路子”这里顺便分享给你。第一个野路子强制自己一周不用鼠标操作Linux。打开终端后所有操作都用键盘完成包括移动光标、切换窗口、复制粘贴。一开始会痛苦想用鼠标一点点但坚持下来你会发现自己对命令的肌肉记忆建立得飞快。因为当你不能依赖鼠标时你就会主动记命令、主动学补全那些曾经觉得难记的循环、管道组合慢慢就都刻在脑子里了。尤其是vim和命令行常用快捷键比如CtrlA跳到行首、CtrlE跳到行尾、CtrlU清空当前行这些习惯一旦形成操作效率直线上升。第二个野路子每天在真实环境里折腾一次“烂摊子”。比如故意把NFS服务停掉然后通过报错日志去排查故意把一个库删了然后想办法把系统救回来。不要怕搞坏环境虚拟机嘛大不了克隆一个快照回去。很多命令基础扎实的老手不是听过多少课而是在一次次把系统搞坏再修好的过程里长出来的经验。dmesg的输出怎么看、journalctl的日志怎么过滤、strace怎么跟踪系统调用这些东西靠背命令表永远学不会只有你亲手排查过问题才能形成真正的条件反射。嵌入式学习入门阶段Linux命令基础确实有些枯燥但换个角度看它是一套随时随地在线的工具箱你越熟练后面学习系统编程、驱动移植时障碍就越少。前期的半年里每天固定抽出20分钟专门练命令多折腾、多总结后面你会感谢现在的自己。
返回列表