目录导航¶
你应该已经注意到,框架代码中对于外部命令(如 ls
, cat
)和内建命令(如 exit
)的处理方式是不同的。每个 shell 都需要支持一些内建命令,这些命令是 shell 本身具有的功能,而不是外部程序。exit
命令需要作为内建命令来实现,因为它会退出 shell 本身。
这一节中,你需要添加两个用于目录导航的内建命令。
pwd¶
pwd
命令用于打印当前工作目录。
当前工作目录
每个进程在某一时刻都处在某个特定工作目录中。工作目录可以看成进程的一个属性。它关联了对某一进程而言的相对路径和系统绝对路径。
当创建新进程时,子进程将继承其父进程的工作目录。
你可能需要使用 getcwd()
系统调用来获取当前 shell 进程的这一属性。
如果感兴趣,你也可以尝试查看其他进程的工作目录。(提示:ls -l /proc/[pid]/cwd
)
cd¶
cd 用于更改当前工作目录为指定目录。你可能需要使用 chdir()
系统调用。你可以运行 man 函数名
来查看系统自带的文档,或者上网搜索更多信息。
在完成了本节的任务后,你应该已经可以自由的目录导航了~
思考
pwd
和 cd
都必须是内建命令吗?
要求 | 满分 |
---|---|
正确实现 pwd 内建命令 |
10% |
正确实现 cd 内建命令 |
10% |
「可选」 cd 在没有第二个参数时,默认进入家目录 |
5% |