mycd命令

本文详细解析了如何使用chdir函数实现自定义的cd命令,改变了工作路径。通过实例代码演示了如何利用该函数改变当前工作目录,并讨论了其与系统内置cd命令的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      今天写了自己的ls命令,完了以后突发奇想,想写一个自己的cd命令,查了以下还真的有函数来实现修改当前的工作目录,chdir函数。下面根据man手册给出这个函数的详细解释信息。
      函数描述:改变工作路径
      函数头文件和定义:#include <unistd.h>
                              int chdir(const char * path)
      函数参数描述:path表示要改变的路径。
      返回值描述:成功返回0,失败返回-1;
      下面贴出我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char * cd_get_path(int argc,char** argv,char *path)
{

        path = (char *)malloc(100);
        if(argc ==1)
        {
                strcpy(path,"/home/shiwen/");
        }

        else
        {
                strcpy(path,argv[1]);
        }

}

int main(int argc,char ** argv)
{
        char *path;
        int result;

        path = (char *)malloc(100);

        path = cd_get_path(argc,argv,path);

        result = chdir(path);

        if(result == -1)
        {
                printf("change dir error\n");
                return -1;
        }

}

    运行完了以后发现,当前工作路径也没改变程序也没报错。查了资料发现了,chdir只能改变调用该函数的工作路径,并不能改变别的进程的工作路径,所以我们常用的cd命令是一个内置命令。

### CD 命令使用指南 在 Linux Shell 中,`cd`(change directory)命令用于切换当前工作目录。以下是关于 `cd` 命令的详细用法和注意事项: #### 1. 基本语法 `cd` 命令的基本语法如下: ```bash cd [选项] 目标目录 ``` #### 2. 常见用法 - **进入用户的主目录**: 使用 `cd` 或 `cd ~` 可以直接进入当前用户的主目录[^2]。 - **切换到上一次所在的目录**: 使用 `cd -` 可以快速切换到上一次所在的目录[^2]。 - **使用相对路径进入子目录**: 如果当前目录是 `/home/user`,可以使用 `cd directory` 进入子目录 `/home/user/directory`[^2]。 - **使用绝对路径进入目标目录**: 使用完整路径切换到指定目录,例如:`cd /etc/config`[^1]。 - **处理符号链接**: - 使用 `-P` 参数查看实际路径:`cd -P /path/to/symlink`[^2]。 - 使用 `-L` 参数始终跟随符号链接:`cd -L /path/to/symlink`[^2]。 #### 3. 注意事项 - **路径大小写敏感**:Linux 文件系统区分大小写,因此需要确保输入的路径与实际文件系统中的名称完全一致[^1]。 - **权限问题**:如果目标目录没有执行权限或读取权限,`cd` 命令将无法成功切换到该目录。 - **特殊字符转义**:当路径中包含空格或其他特殊字符时,需要使用引号或反斜杠进行转义。例如:`cd "my directory"` 或 `cd my\ directory`[^1]。 #### 4. 示例代码 以下是一些常见的 `cd` 命令示例: ```bash # 切换到用户主目录 cd ~ # 切换到上一次所在的目录 cd - # 使用相对路径进入子目录 cd documents/projects # 使用绝对路径进入目标目录 cd /var/log # 处理符号链接(查看实际路径) cd -P /path/to/symlink # 处理符号链接(跟随符号链接) cd -L /path/to/symlink ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值