Linux目录操作

linux的目录操作:

改变目录、文件权限:chmod

获取、改变当前目录:getcwd 、chdir

创建、删除目录:mkdir、rmdir

获取目录信息:opendir、readdir、rewinddir、seekdir、telldir、closedir

删除文件: unlink、unlinkat

int chmod()         //改变目录或文件的访问权限。相当于chmod。可以通过:man 2 chmod 查看。

例子: 

#include <sys/stat.h>                     //chmod函数的头文件

#include <stdio.h>

int main(int argc,char* argv[]){

        if(argc!=2){

                printf("error args\n");

                return -1;

        }

        int ret=chmod(argv[1],0777);    //argv[1]给定的文件权限会被修改。最后的权限为:777与umask进行操作后的权限。

        if(-1==ret){

                perror("chmod");

        }

        return 0;

}

getcwd()                  //获取当前的路径,相当于:pwd

#include <unistd.h>                  //getcwd的头文件

#include <stdio.h>

int main()

{

        char* p;

        char p1[128]={0};

        p=getcwd(NULL,0);                              //方式一。常用。

   printf("p=%s\n",p);

        getcwd(p1,sizeof(p1));                           //方式二。

        printf("p1=%s\n",p1);

   printf("path=%s\n",getcwd(NULL,0));    //方式三。

        return 0;

}

chdir                          //切换目录,相当于:cd

#include <unistd.h>                    //chdir的头文件

#include <stdio.h>

int main(int argc,char* argv[]){

        if(argc !=2){

                printf("error args\n");

                return -1;

        }

        char* p;

        p=getcwd(NULL,0);

        printf("p=%s\n",p);

        int ret=chdir(argv[1]);

        if(-1==ret){

                perror("chdir");

                return -1;

        }

        printf("path=%s\n",getcwd(NULL,0));

        return 0;

}

mkdir()                      //创建目录

#include <sys/stat.h>                   //这三个都是mkdir的头文件

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

int main(int argc,char* argv[]){

        if(argc !=2){

                printf("error args\n");

                return -1;

        }

        int ret=mkdir(argv[1],0777);

        if(-1==ret){

                perror("mkdir");

                return -1;

        }

        return 0;

}

rmdir()                   //删除目录

#include <sys/stat.h>                     //这三个都是rmdir的头文件

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

int main(int argc,char* argv[])

{

        if(argc !=2)

        {

                printf("error args\n");

                return -1;

        }

        int ret=rmdir(argv[1]);

        if(-1==ret)

        {

                perror("rmdir");

                return -1;

        }

        return 0;

unlink()              //删除文件

#include <unistd.h>                              //unlink的头文件

int main(int argc,char* argv[]){

        if(argc !=2){

                printf("error args\n");

                return -1;

        }

        int ret=unlink(argv[1]);                  //不能删除目录             

        if(-1==ret){

                perror("unlink");

                return -1;

        }

        return 0;

}

DIR * opendir(const char *name);            //打开一个目录  

struct dirent *readdir(DIR *dir);               //读取目录的一项信息,并返回该项信息的结构体指针 

void rewinddir(DIR *dir);                        //重新定位到目录文件的头部 

void seekdir(DIR *dir,off_t offset);          //用来设置目录流目前的读取位置 

off_t telldir(DIR *dir);                             //返回目录流当前的读取位置 

closedir()                                                //关闭目录文件 

struct dirent {         

  ino_t  d_ino;                     //inode number(此目录进入点的inode)          

  off_t  d_off;                      //offset to the next dirent(目录开头到进入点的位移         

  unsigned short d_reclen;    //length of this record(目录名的长度)              

  unsigned char d_type;        //type of file(所指的文件类型) 目录:4 文件:8  

  char   d_name[256];          //filename(文件名) 

};

#include <sys/types.h>        //这两个是上面这些函数的头文件。

#include <dirent.h>

#include <stdio.h>

#include <stdlib.h>

int main(int argc,char* argv[])

{

        if(argc!=2){

                printf("error args\n");

                return -1;

        }

        DIR* dir=opendir(argv[1]);                    //打开目录

        if(NULL==dir){

                perror("opendir");

                return -1;

        }

        struct dirent* d;                                      //定义结构体指针

        off_t l;

        while((d=readdir(dir))!=NULL){

                printf("%d %s\n",d->d_type,d->d_name);

                if(!strcmp(d->d_name,"file")){         //如果找到了file,就把当前的位置记录下来。

                        l=telldir(dir);

                }               

        }

        seekdir(dir,l);                                         //根据刚才的位置,找文件

        d=readdir(dir);

        printf("%d %s\n",d->d_type,d->d_name);

        closedir(dir);

        return 0;

}

怎么只改一个字母vim

touch file 

在程序里面获取路径。

chdir             //相当于cd

ls -i  //可以看到inode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值