当前位置:网站首页 > 编程语言 > 正文

linux打开目录命令(linux如何打开目录)



文件结构

cms

  1. /:根目录
  2. /bin:普通用户可执行的命令,任何用户都可以执行该目录的命令
  3. /boot:系统内核启动需要的文件
  4. /home:用户的主目录.每个用户都有一个自己的目录,在该目录下
  5. /root:超级权限者用户的主目录
  6. /lib:用户存放各种库文件
  7. /etc:系统中的配置文件
  8. /usr:应用目录(类似windows的program files)
    • /usr/bin:系统使用的应用程序
    • /usr/sbin:root用户使用的高级管理程序和系统守护程序
    • /usr/src:系统内核源代码
  9. /var:缓存或者运行产生的文件
  10. /dev:外设
  11. /tmp:临时文件
  12. /run:临时文件系统,存放系统启动以来的信息,系统重启就会别清清除
文件系统模型

在这里插入图片描述

  1. 通过设备驱动本身的接口直接访问物理磁盘.(不稳定)
  2. 通过虚拟文件系统直接读写文件上的内容,只存在于内存不存在于磁盘
目录,索引结点和文件描述符

文件控制块(FCB):为对一个文件进行正确的读写,用于为文件设置描述和控制文件的数据结构.

文件目录:FCB的有序集合

目录文件:将文件目录以文件的形式保存在外存上的文件.

FCB的三类信息

  1. 基本信息,如文件名,文件物理位置,文件逻辑结构和文件物理结构
  2. 控制信息,如文件的所有者存取权限,所有者所在组的存取权限,其他用户的存取权限
  3. 信息类,如文件建立日期和时间,文件上一次修改日期和时间,当前使用信息项

索引结点(inode):数据块,包含文件创建.修改日期,文件访问权限,文件在磁盘上的存放位置等信息.文件系统给每个inode分配一个号码,称为索引结点编号

linux将FCB(内核中dentry结构体)组织为的结构

文件描述符:文件描述符是一个非负整数,用于表示打开的文件、设备、管道或网络连接等资源。当程序通过系统调用如 open()、socket() 等打开文件或其他资源时,操作系统为该资源 分配一个文件描述符。

文件的分类
  1. 普通文件
  2. 目录文件
  3. 字符特殊文件:表示系统字符类型的设备,如键盘鼠标等
  4. 块特殊文件:表述系统中块类型的设备,如硬盘,光驱等
  5. FIFO:用于进程间的通信,也称命名管道
  6. 套接字(socket):主要用于网络通信,也可用于一台主机上的进程之间的通信
  7. 符号链接:指向另一个文件,是另一个文件的引用.

:查看文件类型

在这里插入图片描述

最左边第一项第一个字母是文件类型的缩写

字符含义- (regular)普通文件d (directory)目录文件c (character)字符设备文件b (block)块设备文件p (pipe)管道文件(命名管道)s (socket)套接字文件l (link)链接文件
文件访问权限控制

在这里插入图片描述

输出结果依次为:文件类型+访问权限,连接数,文件所有者,文件所有者所在组,文件大小(字节),文件创建时间,文件命.

第一项共10位,第一位为文件类型.剩下9位3位一组.分别表示不同用户对该文件的操作权限,r可读,w可写,x可执行

  1. 文件所有者
  2. 文件所有者同组用户
  3. 其他用户

: 对文件访问权限进行了修改

st_mode结构

文件的类型与访问权限被定义在st_mode的内核数据结构中,实质上是一个无符号16位短整型数

在这里插入图片描述

  1. st_mode[0:8]:对应用户的权限 8-6所有者 5-3是同组者 2-0是其他用户
  2. st_mode[12:15]:用作文件类型,最多可标识16中,现已用7中
  3. st_mode[9:11]:文件的特殊属性,1表示有,0表示没,分别为suid,sgid,sticky

st_mode[10]和st_mode[11]分别设置suid和sgid

这种机制适用于让普通用户运行只有root用户才能使用的程序或者命令

在这里插入图片描述

s出现在文件所有者执行权限位上,说明suid位置为1;若s出现在用户组执行权限位上,说明sgid为1.若t出现在其他组的x位上,说明sticky为1.sticky(只对目录有效)在当前用户有该目录的写权限,只用于该用户删除本目录下属于自己的文件.

suid,sgid和sticky可通过chmod命令实现,在表示读写执行权限前加上者三个权限的表示数字之和

suid=4,sgid=2,sticky=1

表示将文件权限的suid,sgid,sticky都置为1

  1. 直接I/O系统调用
  2. 标准I/O库函数
文件打开创建和关闭
open系统调用
 

:打开或创建文件,返回一个文件描述符,其他函数通过文件描述符进行读写操作

可打开普通文件,块设备文件,字符设备文件,链接文件和管道文件,但是仅可以用来创建普通文件

成功调用返回一个文件描述符,有错误返回-1,错误代码赋给errno

creat系统调用
 

:creat只能以只写的方式开发创建的文件,无法创建设备文件

成功调用返回一个文件描述符,有错误返回-1,错误代码赋给errno

close系统调用
 

;用于关闭一个已经打开的文件.

文件的读写
read系统调用
 

:read函数从文件描述符fd所指向的文件种读取count个字节的数据到buf指向的缓冲区中.

返回值是实际读取到的字节数,有错误返回-1,错误代码赋给errno.count为0则不读数据,返回0,

write系统调用
 

:write函数将buf所指向的缓冲区中的count个字节数据写入到由文件描述符fd所指示的文件中

调用成功返回写入的字节数.

read和write实际读写的字节数通过返回值判断,参数count只是一个期望值.读写操作会对内核中表示文件偏移位置的f_pos起作用,文件的偏移量会加上实际读写的字节数

fcntl系统调用
 

:用于对已打开的文件描述符进行各种控制操作来实现已打开文件的各种属性(读,写,追加,非阻塞)

成功返回0,失败返回1;

文件读写指针的移动

文件的读写指针是文件"当前文件偏移量",通常是一个非整数,以读写方式打开文件的时候,文件读写指针指向文件的起始处,读写操作从当前文件读写指针位置开始,使文件读写指针的位置增加所读写的字节数.

lseek系统调用
 

:lseek函数用来修改文件的读写指针位置,可以支持文件的随机读写.

调用成功返回新的文件的偏移量,仅对普通文件生效

标准I/O的文件流

标准I/O库中,每个被访问的文件和一个叫做流(stream)的指针关联,在c语言中流的类型是FILE的指针.

fopen函数
 
fclose函数
 

返回0成功,返回EOF失败

fileno函数
 

fileno函数从FILE类型的结构体中获取文件描述符,执行成功后,返回一个文件描述符.>-1成功(文件描述符),-1(失败).

fdopen函数
 

fdopen函数会返回一个与参数fd所值文件相关联的文件流指针(FILE*).

返回非NULL成功,返回NULL失败

获取文件属性
 

stat用于获取file_name指定的文件名的状态信息,将信息保存到参数buf中

fstat区别于stat是用文件描述符来指定文件

lstat区别于stat,对于符号链接文件,前者返回符号链接文件本身的状态信息,后者返回符号链接文件指向的文件信息.

修改文件的访问权限
 
修改文件的用户属性

使用chown/fchown/lchown可以修改用户id和组id.

 

chown以文件名作参数,fchown以文件描述符作参数,lchown更改符号链接本身的用户属性但是不影响符号链接文件所指向的文件.

文件的所有者只能改变文件的组id为其所属组中的一个,超级用户可以修改文件的所有者id,并且超级用户可以任意修改文件的用户组id,如果参数owner或者group指定为-1,那么用户id和组id不会被改变.

获取用户的信息
 
改变文件大小
 

将指定文件大小修改为指定的length指定的大小,如果原文件比length大,那么超过的部分被删除,如果比length小,文件被扩展,扩展部分用0填充.

获取文件的时间属性

编写程序时,修改文件最近一次访问时间和最近一次修改时间,调用utime函数.最近一次修改时间会被更新为当前时间,如果设置为NULL,则都修改为当前访问时间.

 
打开目录
 
读取目录项
 

返回当前目录文件读写位置所指的目录项

关闭目录
 

成功返回0,失败返回-1

到此这篇linux打开目录命令(linux如何打开目录)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • dos2unix命令执行不成功(dos命令 linux)2025-03-31 11:45:07
  • labview调用dll动态库出现内存泄露(labview生成的dll能单独使用吗)2025-03-31 11:45:07
  • 工具类哪个品牌好(工具类哪个品牌好用)2025-03-31 11:45:07
  • 预训练模型下载(预训练模型下载不了)2025-03-31 11:45:07
  • 拆包英文游戏(拆包区英文)2025-03-31 11:45:07
  • 上一章返回目录下一章怎么操作(上一页 书页/目录 下一章)2025-03-31 11:45:07
  • dap贸易术语解释(ddpdap贸易术语解释)2025-03-31 11:45:07
  • 上一章返回目录(上一章返回目录下一章)2025-03-31 11:45:07
  • 拆包是什么意思(招标拆包是什么意思)2025-03-31 11:45:07
  • junit5(junit5下载)2025-03-31 11:45:07
  • 全屏图片