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。

验证方法与判定标准

按顺序执行上述全部命令,并逐条核对输出:

  1. ls -l /tmp能列出新创建的文件,且文件大小与写入内容长度一致;
  2. cat /tmp/hello.txt完整显示两行内容,无乱码或截断;
  3. cp、mv、rm执行后,ls显示的文件列表变化与操作一一对应;
  4. 所有命令均返回提示符nsh>,无错误信息(如ERROR或No such file or directory)。

满足以上条件,即表示已掌握NSH基础文件操作。

常见问题

  • 命令找不到:确认使用的是sim:nsh配置,该配置已默认启用NSH所需的基本命令集。
  • 文件路径错误:NSH默认根目录为/,/tmp为可写临时目录,避免直接在根目录/下创建文件(可能因权限或只读挂载失败)。
  • 重定向不生效:确认>与>>前后有空格,且文件路径所在目录存在。