首页 运维 linux运维 Linux文件操作

Linux文件操作

Sep 13, 2018 pm 06:24 PM
linux

本文实例讲述了python文件读写操作与linux shell变量命令交互执行的方法。分享给大家供大家参考。具体如下:

文件操作的相关系统调用

创建

int creat(const char *filename, mode_t mode);
参数mode 指定新建文件的存取权限,它同umask 一起决定文件的最终权限(mode&umask),其中umask 代表了文件在创建时需要去掉的一些存取权限,它只影响读、写和执行权限,调用函数为int umask(int newmask)。

 

打开

int open(const char *pathname, int flags);
pathname是我们要打开的文件名(包含路径名称,默认在当前路径下)

flags打开的标志

  • O_RDONLY 以只读的方式打开文件


  • O_WRONLY 以只写的方式打开文件


  • O_RDWR 以读写的方式打开文件


  • O_APPEND 以追加的方式打开文件


  • O_CREAT 创建一个文件


  • O_EXEC 如果使用了O_CREAT而且文件已经存在,就会发生一个错误


  • O_NOBLOCK 以非阻塞的方式打开一个文件


  • O_TRUNC 如果文件已经存在,则删除文件的内容

int open(const char *pathname,int flag,mode_t mode)

当flag为O_CREATE,指定mode标志,用来表示文件的访问权限

  • S_IRUSR 用户可以读


  • S_IWUSR 用户可以写


  • S_IXUSR 用户可以执行


  • S_IRWXU 用户可以读、写、执行


  • S_IRGRP 组可以读


  • S_IWGRP 组可以写


  • S_IXGRP 组可以执行


  • S_IRWXG 组可以读、写、执行


  • S_IROTH 其他人可以读


  • S_IWOTH 其他人可以写


  • S_IXOTH 其他人可以执行


  • S_IRWXO 其他人可以读、写、执行


  • S_ISUID 设置用户的执行ID


  • S_ISGID 设置组的执行ID

mode标志也可以用数字来表示文件权限:

每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。

  • 第一位表示设置用户ID


  • 第二位表示设置组ID


  • 第三位表示用户自己的权限位


  • 第四位表示组的权限


  • 第五位表示其他人的权限

open("test", O_CREAT, 10705);
上述语句等价于:
open("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );

 

读写

int read(int fd, const void *buf, size_t length);
int write(int fd, const void *buf, size_t length);

参数fd文件描述符,buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位),返回值为实际读取和写入的字节数。

  • read( )实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数


  • write( )实现将把length 个字节从buf 指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。

 

定位

对于随机文件,我们可以随机地指定位置读写:
int lseek(int fd, offset_t offset, int whence);

lseek()将文件读写指针相对whence移动offset(可取负值)个字节。操作成功时,返回文件指针相对于文件头的位置。

参数whence可以使用如下值:
SEEK_SET:相对文件开头。
SEEK_CUR:相对文件读写指针的当前位置。
SEEK_END:相对文件末尾。
 

关闭

int close(int fd);

 

C库函数的文件操作——独立于具体的操作系统平台

创建和打开

FILE *fopen(const char *path, const char *mode);
fopen()实现打开指定文件filename,其中的mode为打开模式,Linux 系统不区分二进制文件和文本文件。

mode的值

  • r、rb 以只读方式打开


  • w、wb 以只写方式打开。如果文件不存在,则创建该文件,否则文件被截断


  • a、ab 以追加方式打开。如果文件不存在,则创建该文件


  • r+、r+b、rb+ 以读写方式打开


  • w+、w+b、wh+ 以读写方式打开。如果文件不存在,则创建新文件,否则文件被截断


  • a+、a+b、ab+ 以读和追加方式打开。如果文件不存在,则创建新文件

 

读写

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);

  • fread()实现从stream中读取n 个字段,每个字段为size个字节,并将读取的字段放入ptr 所指的字符数组中,返回实际已读取的字段数。


  • write()实现从缓冲区ptr 所指的数组中把n 个字段写到stream 中,每个字段长为size个字节,返回实际写入的字段数。

 

 

关闭

int fclose (FILE *stream);

 

 

Linux文件系统目录结构

003vPl7Rty6E8kZRlAEdc690.jpg

  • /bin----存放着最经常使用的基本命令,如ls、cp、mkdir 等,这个目录中的文件都是可执行的。


  • /boot----启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,如vmlinuz、initrd.img 


  • /dev----设备文件存储目录,应用程序通过对这些文件的读写和控制就可以访问实际的设备。


  • /etc----系统管理所需要的配置文件和子目录,如用户账号及密码配置文件。


  • /home----普通用户的家目录,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。


  • /lib----库文件存放目录,系统最基本的动态连接共享库,类似于Windows里的DLL文件。


  • /lost+found----一般情况下是空的,当系统意外崩溃或机器意外关机时会产生一些文件碎片放在这里。


  • /mnt----方便用户临时挂载别的文件系统的,如将光驱挂载在/mnt/上,进入该目录就可以查看光驱里的内容


  • media----自动识别一些设备挂载到这个目录下,例如U盘、光驱等等。


  • /opt----给主机额外安装软件所存放的目录


  • /proc----操作系统运行时,进程及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。它是系统内存的映射,存在在内存,通过直接访问这个目录来获取系统信息。


  • /root----超级权限用户的家目录


  • /sbin----超级权限用户的可执行命令存放目录,普通用户无权限执行这个目录下的命令


  • /tmp-----存放临时文件。


  • /usr-----系统应用程序和文件(如命令、帮助文件)存放程序的目录,类似于windows下的program files目录。


  • /var-----经常被修改的目录放在这个目录下,如日志文件


  • /sys----内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。


  • /initrd---若在启动过程中使用了initrd 映像作为临时根文件系统,则在执行完其上的/linuxrc挂接真正的根文件系统后,原来的初始RAM文件系统被映射到/initrd目录。

 

Linux文件系统与设备驱动

相关推荐:

linux 父目录权限影响子目录文件操作

python文件读写操作与linux shell变量命令交互执行的方法

 

 

以上是Linux文件操作的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

centos和ubuntu的区别 centos和ubuntu的区别 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的关键差异在于:起源(CentOS 源自 Red Hat,面向企业;Ubuntu 源自 Debian,面向个人)、包管理(CentOS 使用 yum,注重稳定;Ubuntu 使用 apt,更新频率高)、支持周期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社区支持(CentOS 侧重稳定,Ubuntu 提供广泛教程和文档)、用途(CentOS 偏向服务器,Ubuntu 适用于服务器和桌面),其他差异包括安装精简度(CentOS 精

centos如何安装 centos如何安装 Apr 14, 2025 pm 09:03 PM

CentOS 安装步骤:下载 ISO 映像并刻录可引导媒体;启动并选择安装源;选择语言和键盘布局;配置网络;分区硬盘;设置系统时钟;创建 root 用户;选择软件包;开始安装;安装完成后重启并从硬盘启动。

Centos停止维护后的选择 Centos停止维护后的选择 Apr 14, 2025 pm 08:51 PM

CentOS 已停止维护,替代选择包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(与 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商业版,付费许可);5. Oracle Linux(与 CentOS 和 RHEL 兼容)。在迁移时,考虑因素有:兼容性、可用性、支持、成本和社区支持。

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

centos停止维护后怎么办 centos停止维护后怎么办 Apr 14, 2025 pm 08:48 PM

CentOS 停止维护后,用户可以采取以下措施应对:选择兼容发行版:如 AlmaLinux、Rocky Linux、CentOS Stream。迁移到商业发行版:如 Red Hat Enterprise Linux、Oracle Linux。升级到 CentOS 9 Stream:滚动发行版,提供最新技术。选择其他 Linux 发行版:如 Ubuntu、Debian。评估容器、虚拟机或云平台等其他选项。

docker镜像失败怎么办 docker镜像失败怎么办 Apr 15, 2025 am 11:21 AM

Docker镜像构建失败的故障排除步骤:检查Dockerfile语法和依赖项版本。检查构建上下文中是否包含所需源代码和依赖项。查看构建日志以获取错误详细信息。使用--target选项构建分层阶段以识别失败点。确保使用最新版本的Docker引擎。使用--t [image-name]:debug模式构建镜像以调试问题。检查磁盘空间并确保足够。禁用SELinux以防止干扰构建过程。向社区平台寻求帮助,提供Dockerfile和构建日志描述以获得更具体的建议。

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

See all articles