2. 使用NSH命令行
任务目标
启动NuttX模拟器(sim),进入NSH(NuttShell)交互环境,通过实际操作掌握ls、cat、echo等基础命令,并完成文件创建、查看、追加与删除的完整操作闭环。
环境准备
本案例基于Linux环境下的NuttX模拟器(sim),需要预先完成NuttX源码克隆与工具链安装:
git clone https://github.com/apache/nuttx.git
git clone https://github.com/apache/nuttx-apps.git apps
cd nuttx
make distclean
./tools/configure.sh sim:nsh
make -j$(nproc)
编译完成后,当前目录下会生成可执行文件./nuttx。
启动模拟器并进入NSH
直接运行编译产物即可启动模拟器,启动后自动进入NSH命令行提示符nsh>:
./nuttx
若需退出模拟器,在NSH提示符下执行poweroff或直接按Ctrl+C。
NSH基础命令操作
以下命令均在NSH提示符nsh>后输入,每条命令后回车执行。
1. 查看当前目录与文件列表
nsh> pwd
nsh> ls -l
pwd显示当前工作目录(模拟器根目录为/),ls -l以长格式列出根目录下的文件和子目录,包括dev、etc、tmp等标准目录。
2. 使用echo创建文件
nsh> echo "Hello NuttX" > /tmp/hello.txt
nsh> ls -l /tmp
第一条命令将字符串写入/tmp/hello.txt(若文件不存在则创建,存在则覆盖)。第二条命令验证文件已生成。
3. 使用cat查看文件内容
nsh> cat /tmp/hello.txt
预期输出:Hello NuttX。该命令将文件内容打印到终端。
4. 使用echo追加内容
nsh> echo "Second line" >> /tmp/hello.txt
nsh> cat /tmp/hello.txt
>>为追加操作符,不会覆盖原内容。此时cat应依次输出两行内容:
Hello NuttX
Second line
5. 文件复制与移动
nsh> cp /tmp/hello.txt /tmp/hello_copy.txt
nsh> mv /tmp/hello_copy.txt /tmp/renamed.txt
nsh> ls -l /tmp
cp复制文件,mv重命名文件。执行后/tmp目录下应同时存在hello.txt和renamed.txt。
6. 删除文件
nsh> rm /tmp/renamed.txt
nsh> ls -l /tmp
rm删除指定文件。执行后/tmp下仅剩hello.txt。
验证方法与判定标准
按顺序执行上述全部命令,并逐条核对输出:
ls -l /tmp能列出新创建的文件,且文件大小与写入内容长度一致;cat /tmp/hello.txt完整显示两行内容,无乱码或截断;cp、mv、rm执行后,ls显示的文件列表变化与操作一一对应;- 所有命令均返回提示符
nsh>,无错误信息(如ERROR或No such file or directory)。
满足以上条件,即表示已掌握NSH基础文件操作。
常见问题
- 命令找不到:确认使用的是
sim:nsh配置,该配置已默认启用NSH所需的基本命令集。 - 文件路径错误:NSH默认根目录为
/,/tmp为可写临时目录,避免直接在根目录/下创建文件(可能因权限或只读挂载失败)。 - 重定向不生效:确认
>与>>前后有空格,且文件路径所在目录存在。