ARTICLE DETAIL

资讯详情

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

nano编辑器实战手册:从基础操作到Jetson开发板系统文件修改

nano编辑器实战手册:从基础操作到Jetson开发板系统文件修改 提到 nano 操作命令很多人第一反应是“这不是那个最简单的编辑器吗”。但真正在服务器、开发板、容器环境里摸爬滚打过的人会告诉你nano 最大的优点恰恰是“简单到几乎没有学习门槛”而它最大的坑也藏在那些看似简单的快捷键里。这篇文章我打算把 nano 从常用操作、配置调优一路讲到它在 Jetson 系列硬件Nano、Orin Nano、Orin NX上的实战用法包括更换 QSPI 芯片、模组升级后怎么用 nano 改启动文件。整理成一份能直接复制到终端里去用的手册争取让你看完就能上手少走我当年走过的弯路。1. 从“小不点”到生产力工具nano 到底能干什么1.1 为什么在 2025 年还值得花时间学 nano我最早接触 nano 是在刚入门 Linux 的时候当时身边所有人都在推 vim我也硬着头皮背了一堆命令结果每一次操作都像在跟编辑器较劲。后来去了嵌入式项目组发现 Jetson Nano 开发板上默认挂着的就是 nanoSSH 进去直接敲nano xxx.conf就能改文件不需要记:wq还是:wq!那一刻我才意识到工具的好坏不取决于功能多寡而取决于你在什么场景下需要它。nano 的全称是 GNU nano一个基于 curses 库的经典文本编辑器。它的设计哲学非常朴素把最常用的操作直接标注在屏幕底部让你不用翻文档就能完成编辑。对于临时改配置、快速写脚本、在资源受限的嵌入式设备上维护文件nano 是最稳的选择。我见过不少资深工程师vim 用得飞起但到了客户的开发板上还是会下意识敲nano——因为没人能保证每一台设备都装了完整的 vim 运行时而 nano 几乎在所有 Linux 发行版和 Jetson 官方镜像里都是预装的。1.2 nano 和 vim、VS Code 的定位差异先搞清楚定位再选工具能省掉大量无意义的折腾。vim强在“模式化编辑”和“插件生态”适合长期在终端里写代码、做复杂文本处理的场景。缺点是学习曲线陡峭一旦换到没有.vimrc的机器体验会打折扣。VS Code Remote强在图形化界面和调试体验适合有显示器的开发工作站。但服务器环境、纯命令行 SSH、嵌入式设备的资源限制决定了它不是万能选项。nano强在零配置、零依赖、上手即用。它不需要“模式”的概念打字就是打字该做的搜索、替换、复制剪切、语法高亮全都有。用生活里的话说vim 像手动挡的性能车nano 像皮实耐造的越野车。你在办公室里可以开性能车体验驾驶乐趣但到了工地上还是越野车最不容易把你撂在路上。nano 就是那个永远不会因为配置问题让你白跑一趟的工具。2. nano 操作命令速查手册从光标移动到批量替换2.1 启动与退出命令别被“卡住”的技巧启动 nano 的方式非常直接nano # 打开空文件 nano filename.txt # 打开已有文件不存在则新建 nano -B filename.txt # 编辑时自动生成备份文件 filename.txt~ nano -l filename.txt # 显示行号 nano -c filename.txt # 显示光标位置行、列 nano -w filename.txt # 关闭自动换行适合配置文件我建议在服务器上改配置文件时把-w和-l组合起来用nano -wl /etc/nginx/nginx.conf。别小看这个-w配置文件一旦被自动换成软换行看起来是一整行实际断点里带着隐藏的换行符排错时容易看走眼。退出操作是很多人第一次用 nano 时被“卡住”的地方。屏幕底部已经写清楚了^X Exit^表示 Ctrl 键。但细节在于没有修改内容时按Ctrl X直接退出。修改过内容后按Ctrl X会先问是否保存按Y保存按N不保存按Ctrl C返回编辑。按Y之后还会问你“文件名称”直接回车确认即可如果想另存为其他名字在这里输入新文件名再回车。我见过不少新手在这里被绕晕明明按了Y结果又出现一个等待输入的状态于是胡乱按了一通文件被保存成了奇怪的名字。记住第二次提示是“确认文件名”不是“确认是否保存”保持默认直接回车就对了。2.2 编辑操作复制、剪切、粘贴与撤销nano 的编辑命令主要集中在Alt键和Ctrl键的组合上下面是我在实际使用中验证过最顺手的一套操作快捷键说明删除光标处字符Ctrl D等于 Delete 键删除光标前字符Ctrl H等于 Backspace 键剪切整行Alt T剪切当前光标所在的整行剪切选中区域Alt A开始标记移动光标后按Alt T先做标记再剪切粘贴到光标后Ctrl U粘贴最近一次剪切的内容复制整行Alt 6不需要先剪切直接复制撤销Alt U撤销上一步操作重做Alt E重做被撤销的操作插入文件内容Ctrl R选择文件并插入到光标位置其中容易被忽略的是“标记选中区域”。我一开始以为 nano 不能像鼠标那样自由选中文本后来才发现Alt A就是“开始标记”这时移动光标被扫过的区域会高亮再配合Alt T或Alt 6就能完成剪切和复制。这个功能在整理日志片段、批量提取配置项时特别好用别让它躺灰。还有一个高频细节Ctrl K其实也是“剪切整行”但它和Alt T略有差别。Ctrl K会连同换行符一起切掉而Alt T在某些版本里表现更接近“剪下此行内容”。具体差异可以留到你自己使用时体会但更通用的口诀是粘贴统一用Ctrl U无论前面是哪种剪切。2.3 搜索与替换正则表达式与逐行确认搜索是刚需nano 也支持基础的正则表达式只是默认状态下正则支持是关闭的。打开文件时加参数-E或者在 nano 内按Alt R切换正则模式。搜索Ctrl W输入关键词后回车。搜到之后继续按Alt W可以查找下一个。搜索并替换Ctrl \反斜杠先输入被替换的内容回车后再输入替换的内容。替换确认模式nano 默认会在每次替换前询问Replace this instance?按Y替换当前处按A替换全部按N跳过当前处按Ctrl C取消。这里有个我踩过的坑想批量替换某个 IP结果输入关键字时没注意空格导致替换了一半才发现漏了带空格的行。正确做法是Ctrl \之后搜索关键词里主动加上前后空格或逗号比如把192.168.1.10前后各带一个空格作为搜索目标这样能精准匹配不会误伤注释里或长 IP 子串。另外Alt R开启正则模式后Ctrl \的搜索框就支持正则语法。我在 Jetson 设备上批量修改启动参数时常用dev/mmcblk0p1去匹配所有以该片段开头的路径然后用替换把它改成新的根文件系统分区非常高效。但正则模式下特殊字符要加反斜杠转义比如\.匹配点号第一次用容易漏。2.4 多文件、分屏与快捷切换nano 支持在一个窗口内打开多个文件也可以把终端切分上下屏同时编辑两个文件。这个功能平时不显眼但改配置需要“对照原文”时非常救命。同时打开多个文件nano file1.txt file2.txt默认显示第一个文件。切换下一个文件Alt 即Alt .上的那个键。切换上一个文件Alt 即Alt ,。以分屏方式打开nano -O file1.txt file2.txt上下分屏。切换上下屏焦点Alt F某些版本是Alt Tab我实测 Ubuntu 和 Jetson 官方镜像里大都是Alt F。分屏模式下两个文件的光标独立移动非常适合一边看/etc/fstab原文件一边在另一个配置里填写 UID 和设备路径。但要注意分屏模式下两个文件的缓冲是独立的保存时要确认当前焦点在哪一侧否则容易把没改完的文件误存了。保存命令和平时一样是Ctrl O。3. 不只有命令nano 的配置、语法高亮与个性化3.1 全局与用户级配置文件 .nanorc很多人以为 nano 是“死板”的编辑器其实它的可配置性被严重低估了。nano 的默认行为由配置文件nanorc控制分为全局配置和用户配置两层全局配置/etc/nanorc作用于系统所有用户。用户配置~/.nanorc只对当前用户生效优先级高于全局配置。一个最小可用的~/.nanorc大概是这样的set tabsize 4 set tabstospaces set autoindent set linenumbers set mouse set softwrap include /usr/share/nano/*.nanorc我解释一下这些配置项的用途set tabsize 4把 Tab 的视觉宽度设为 4 个字符。在 Python 或 YAML 文件里统一 Tab 宽度能避免后续解释器报错。set tabstospaces按 Tab 键时插入空格而不是真正的 Tab 字符。这一点对写 YAML、Makefile 尤其重要混用 Tab 和空格常常是脚本“诡异报错”的根源。set autoindent换行时自动继承上一行的缩进写代码时不用手动补空格。set linenumbers显示行号。虽然启动时也可以-l但写进配置里更省事。set mouse允许鼠标点击定位光标。在图形终端里有用但在纯 SSH 的 TTY 环境下建议删掉否则鼠标操作会产生奇怪字符。include /usr/share/nano/*.nanorc开启语法高亮。配置完成后不需要重启新打开 nano 就会自动加载。我习惯把常用的编辑器配置直接放进一个 dotfiles 仓库新设备 SSH 上去之后一条命令复制过去开箱即用。3.2 语法高亮支持与常见配置项nano 的语法高亮文件和 vim 不一样不需要插件管理器它通过include指令加载.nanorc文件。大多数 Linux 发行版的 nano 包都自带了一堆常用语言的高亮规则路径通常位于/usr/share/nano/目录在配置文件里写include /usr/share/nano/*.nanorc就能全部启用。如果系统没装额外高亮文件也可以用nano --syntaxpython之类的参数临时指定语言但最靠谱的方式还是确认包完整。在 Ubuntu/Debian 系可以执行sudo apt install nano在 Jetson 的官方镜像里 nano 基本是内置的但如果精简过系统可能只有nano-tiny高亮不全。此时重新安装完整版就能解决问题sudo apt install nano -y我还在~/.nanorc里配过一些提效参数比如set backup # 保存前自动生成备份文件 set backupdir ~/.nano-backups # 备份文件统一存放目录 set casesensitive # 搜索默认区分大小写 set historylog # 记录搜索历史 set positionlog # 记住上次打开文件的光标位置其中set backup需要谨慎使用它默认会在当前目录生成文件~后缀的备份如果项目里忘了清理容易把备份文件一起提交到代码库。我建议打开backupdir指定一个专用目录或者干脆只在关键配置文件编辑时才手动加-B参数免得备份文件泛滥。3.3 自定义快捷键与宏nano 不支持像 vim 那样随心所欲写宏脚本但它提供了一种相对轻量的自定义快捷键方式在.nanorc使用bind指令。例如我习惯用Ctrl Enter来插入新行因为默认的Ctrl O是保存Ctrl M是换行但有时候不够直观bind ^M newline main bind ^X exit main这套写法稍微有点“玄学”因为不同的 nano 版本对语法支持有差异。更稳妥的做法是直接用man nanorc查看当前版本的bind语法说明。说实话我一般不推荐过度自定义快捷键原因很简单nano 的优势在于“任何机器上都能用”一旦你改了肌肉记忆里的默认键位换到别的机器反而会手忙脚乱。自定义功能留给.nanorc做一些显示层面的调整就够了快捷键还是保持原生最省心。4. 实战场景在 Jetson 开发板上用 nano 改系统文件4.1 Jetson Nano 与 Orin 系列里 nano 为什么是“默认标配”前面讲了那么多通用的 nano 技巧现在把视角转到 Jetson 系列硬件上。无论是 Jetson Nano、Jetson Orin Nano 开发者套件还是 Orin NX 模组刷完官方 Ubuntu 镜像后终端里都能直接敲nano。为什么强调这一点因为嵌入式设备性能和存储资源都有限Jetson Nano 的 4GB 内存版本跑图形桌面尚可但打开 VS Code Remote 远程开发属实勉为其难而开发板常见的操作场景——改网络配置、调电源模式、换启动参数、看日志——全都发生在命令行。nano 体积小、启动快、占用资源低在这些场景下是最稳的“标配”。举个例子Jetson 系列常用的 nvpmodel 电源模式配置文件在/usr/lib/python3/dist-packages/nvpmodels/其中nvpmodel_t210.conf对应 Jetson Nanonvpmodel_t234.conf对应 Orin 系列。如果你想在开机时把默认电源模式改成某个档位就得动这里的配置。这类系统级文件惯例就是用sudo nano进去改改完保存重启验证。4.2 更换 QSPI 芯片后的启动引导文件修改QSPI 芯片在 Jetson 设备里承担了 Boot Loader 和部分启动固件的存储功能。当 QSPI 芯片损坏或你想替换成更高容量的型号时难点不只是焊接更在于芯片更换后的启动引导参数往往需要手动调整。这时候 nano 就该出场了。典型的操作路径是用烧录工具如 SDK Manager 或命令行刷写工具将新的 QSPI 芯片烧入默认的引导固件。将设备设为从 SD 卡或 USB 启动进入系统。编辑 extlinux 配置文件路径通常是/boot/extlinux/extlinux.conf这个文件在 Jetson 上相当关键它决定了内核用什么参数启动、根文件系统从哪里加载、显示输出走 HDMI 还是 DP。用 nano 修改它的命令是sudo nano /boot/extlinux/extlinux.conf需要重点关注的字段包括FDT设备树文件路径。换了 QSPI 芯片型号后如果板型识别逻辑有变化可能需要改成对应的.dtb。APPEND行里的rootUUID...或root/dev/mmcblk0p1指定根文件系统位置。如果之前的启动方式依赖 QSPI 里的某个分区换芯片后分区编号可能变化需要同步修改。如果修改后无法启动可以先用 nano 把APPEND里的quiet splash去掉加上consolettyS0,115200通过串口打印完整启动日志来判断问题。这里有一条非常重要的经验每次用 nano 修改 extlinux.conf 之前先备份。命令是sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak别问为什么问就是当年我改错了root分区名设备启动直接卡在 kernel panic最后只能插串口线重新烧录。后来养成备份习惯再没慌过。4.3 从 Orin Nano 升级到 Orin NX改哪些配置另一个常见场景是“Orin Nano 开发者套件更换 Orin NX 模组”。硬件上这块操作考验动手能力软件上则要注意系统识别和启动配置的调整。Orin Nano 和 Orin NX 的模组虽然在同一个载板上但处理器的核心数、功耗墙、带外管理和部分外设映射有差异系统需要重新适配。换模组之后最容易遇到的问题是启动画面卡住或进入系统后性能缩放异常。此时用 nano 检查的地方有/etc/nv_tegra_release或/etc/nv_tegra_release的内容确认系统版本对应的模组型号。/boot/extlinux/extlinux.conf里的FDT是否指向正确的设备树。常见的误导在于Orin Nano 和 Orin NX 的 dtb 文件不通用文件名通常带有模组型号标识比如tegra234-p3767-0000.dtbOrin Nano 8GB和tegra234-p3767-0001.dtbOrin NX 16GB。如果换模组后还用旧的 dtb会导致 GPIO、PCIe 等外设无法正确识别。电源管理配置/etc/nvpmodel.conf。Orin NX 的默认功耗档位和 Orin Nano 不同建议在nvpmodel相关配置里调整到 NX 对应的档位否则性能发挥不出来。我曾经帮朋友处理过一块从 Orin Nano 8GB 升级到 Orin NX 16GB 的板子现象是系统能启动但 USB 接口不稳定。排查了半天最后定位到就是 extlinux.conf 里的 FDT 还指向 Nano 的 dtb 文件。用 nano 把内核参数里的设备树路径指到 NX 的 dtb重启后 USB 稳定了AI 推理性能也明显提升。这个案例足以说明换模组不等于“插上就能用”配置文件必须同步调整而 nano 就是改这些文件最方便的工具。5. 常见问题与排查技巧实录5.1 中文显示乱码nano 打开包含中文的文本时出现方块或乱码通常是终端编码和文件编码不匹配。解决方式确认终端编码为 UTF-8。SSH 客户端一般默认是 UTF-8但 Windows 下部分老终端不是。打开文件时强制指定编码nano --encodingutf-8 filename查看当前文件编码file filename如果文件原本是 GBK 编码建议先转码再编辑iconv -f GBK -t UTF-8 filename filename.utf8 nano filename.utf8在 Jetson 开发板上其实很少遇到 GBK 文件但如果你喜欢用 nano 写带中文注释的脚本记得确保系统 locale 已正确生成sudo locale-gen zh_CN.UTF-8 sudo update-locale LANGzh_CN.UTF-85.2 粘贴时光标乱跳在终端里向 nano 粘贴多行内容时常出现“一行一行往下掉”或者缩进错乱的问题。这是终端括号粘贴模式和 nano 自身处理冲突导致的。推荐做法先进入 nano按Alt P切换“括号粘贴模式”然后再粘贴。或者用Ctrl R插入文件的方式绕开终端粘贴通道。如果内容很多更稳妥的是先Ctrl O保存主机上的文件再在 nano 里Ctrl R插入。这个坑在远程 SSH 到 Jetson 设备时尤其常见因为剪贴板内容和终端转义字符之间容易产生摩擦。记住Alt P这个开关能解决一半的粘贴问题。5.3 退出时提示未保存文件明明已经保存过退出时却提示文件有未保存修改原因通常有两种一是文件被其他进程修改过nano 检测到外部变化二是 nano 的未保存缓冲区状态比较“敏感”比如你只是把光标移到了文件末尾但某个自动缩进操作改变了内容。处理办法很简单查看屏幕底部的提示按Y再保存一次或者按N放弃修改。但如果你根本不记得改过什么再保存一次最容易消除隐患。在 root 权限下编辑系统文件时保存前最好再用Ctrl C取消一次确认没有误操作。5.4 在 root 权限下编辑文件报错普通用户直接nano /etc/xxx.conf时只能只读浏览保存时报错。正确姿势是sudo nano /etc/xxx.conf有人会问能不能先用普通用户打开再用sudo保存nano 没有像 vim 那样方便的:w !sudo tee %方案所以最稳妥的就是直接sudo nano打开。如果你已经用nano打开了只读文件可以临时保存到 /tmp 再sudo cp覆盖回去但这步骤繁琐还不如一开始就加sudo。另外提一句用sudo nano后会继承 root 的 HOME 环境所以它读取的~/.nanorc是/root/.nanorc不是普通用户的配置文件。如果你发现 root 下的 nano 和高权限文件的编辑器风格不一样去/root/.nanorc里也配置一份即可。5.5 快速检查 nano 版本与帮助最后给一个埋点在排查 nano 行为异常时先看版本nano --version不同版本的 nano 在某些快捷键上有细微差异比如Alt U撤销在旧版本里不一定可用。遇到“快捷键失灵”优先确认版本再对照man nano查询当前版本的键位表。我个人在实际操作中的体会是nano 就像工具箱里那把最不起眼但永远不会生锈的螺丝刀。你不需要用它完成所有工作但在没有图形界面、没有插件生态、没有多余资源的环境里它永远是那个能帮你把配置文件改完、把系统救活、把启动参数调对的工具。尤其是玩 Jetson 这类嵌入式平台SSH 进去之后手边有 nano就有底气和信心。希望这份手册能帮你少踩几个坑多用顺几次把这把小螺丝刀用到得心应手。
返回列表