c中的cd命令用法

时间:2013-12-03 00:39:40

标签: c shell unix command cd

嘿,我正在用C作为学校项目设计我的shell。但是我在这个shell中坚持使用cd命令。

以下是相关说明:

  

cd <directory> - 将当前默认目录更改为<directory>。 `

     

如果       报告当前目录时,<directory>参数不存在。

     

如果目录       不存在应报告的适当错误。你需要支持亲戚和       绝对路径。此命令还应更改PWD环境变量。

我得到这样的道路:

const char *path = getenv("PATH");//get the system's path 

以下是我打算填写的主要内容:

  else if(strcmp(argsexec[0], "cd") == 0) {
            if(argsexec[1]== NULL){
            system("pwd");//Reporting current directory.
            }
            else if(strcmp(argsexec[1],"..") == 0);
            /**HERE Go to upper directory.          
            }
            else {
            /**HERE Case for cd <directory> go to that directory
            }
        }

如何实现这些HERE部分?

2 个答案:

答案 0 :(得分:2)

您可以使用这些功能来实现您的功能:

   char *getcwd(char *buf, size_t size);
   char *getwd(char *buf);
   char *get_current_dir_name(void);
   int chdir ( const char *path );
   int fchdir ( int fd );

答案 1 :(得分:1)

如果您想要轻松,只需执行chdir(argsexec[1])(并且您不需要单独处理'..'案例。)

当您希望它更复杂时,您必须处理符号链接。例如。当存在/lib -> /usr/lib符号链接时,用户可能希望在cd /lib/somedir && cd ..之后/而不是/usr。要处理这种情况,您必须跟踪逻辑路径并实施..遍历。