文件属性
基于C的文件操作在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd; /* File descriptor */unsigned char hold; /* Ungetc char if no buffer */int bsize; /* Buffer size */unsigned char _FAR *buffer; /* Data transfer buffer */unsigned char _FAR *curp; /* Current active pointer */unsigned istemp; /* Temporary file indicator */short token; /* Used for validity checking */} FILE; /* This is the FILE object */FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能fopen() 打开流fclose() 关闭流fputc() 写一个字符到流中fgetc() 从流中读一个字符fseek() 在流中定位到指定的字符fputs() 写字符串到流fgets() 从流中读一行或指定个字符fprintf() 按格式输出到流fscanf() 从流中按格式读取feof() 到达文件尾时返回真值ferror() 发生错误时返回其值rewind() 复位文件定位器到文件开始处remove() 删除文件fread() 从流中读指定个数的字符fwrite() 向流中写指定个数的字符tmpfile() 生成一个临时文件流tmpnam() 生成一个唯一的文件名下面就介绍一下这些函数1.fopen()fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen 实现三个功能:为使用而打开一个流;把一个文件和此流相连接;给此流返回一个FILR指针;参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下:字符串含义"r" 以只读方式打开文件"w" 以只写方式打开文件"a" 以追加方式打开文件"r+" 以读/写方式打开文件,如无文件出错"w+" 以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'\n',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式。
我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。
此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL。
例:FILE *fp;if(fp=fopen("123.456","wb"))puts("打开文件成功");elseputs("打开文件成败");2.fclose()fclose()的功能就是关闭用fopen()打开的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失败返回EOF。
在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的毛病。
例:fclose(fp);3.fputc()向流写一个字符,原型是int fputc(int c, FILE *stream); 成功返回这个字符,失败返回EOF。
例:fputc('X',fp);4.fgetc()从流中读一个字符,原型是int fputc(FILE *stream); 成功返回这个字符,失败返回EOF。
例:char ch1=fgetc(fp);5. fseek()此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,参数offset 是移动的字符数,whence是移动的基准,取值是:符号常量值基准位置SEEK_SET 0 文件开头SEEK_CUR 1 当前读写的位置SEEK_END 2 文件尾部例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L 后缀表示长整数)fseek(fp,0L,2);//把读写位置移动到文件尾6.fputs()写一个字符串到流中,原型int fputs(const char *s, FILE *stream);例:fputs("I Love Y ou",fp);7.fgets()从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
例:如果一个文件的当前位置的文本如下Love ,I HaveBut ……..如果用fgets(str1,4,file1);则执行后str1="Lov",读取了4-1=3个字符,而如果用fgets(str1,23,file1);则执行str="Love ,I Have",读取了一行(不包括行尾的'\n')。
8.fprintf()按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了例:fprintf(fp,"%2d%s",4,"Hahaha");9.fscanf()从流中按格式读取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。
例:fscanf(fp,"%d%d" ,&x,&y);10.feof()检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream); 例:if(feof(fp))printf("已到文件尾");11.ferror()原型是int ferror(FILE *stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);例:printf("%d",ferror(fp));12.rewind()把当前的读写位置回到文件开始,原型是void rewind(FILE *stream);其实本函数相当于fseek(fp,0L,SEEK_SET);例:rewind(fp);12.remove()删除文件,原型是int remove(const char *filename); 参数就是要删除的文件名,成功返回0。
例:remove("c:\\io.sys");13.fread()从流中读指定个数的字符,原型是size_t fread(void *ptr, size_t size, size_t n,FILE *stream);参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int *等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中。
例:char x[4230];FILE *file1=fopen("c:\\msdos.sys","r");fread(x,200,12 ,file1);//共读取200*12=2400个字节14.fwrite()与fread对应,向流中写指定的数据,原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换,如char*、int *等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中。
例:char x[]="I Love Y ou";fwire(x, 6,12,fp);//写入6*12=72字节将把"I Love"写到流fp中12次,共72字节15.tmpfile()其原型是FILE *tmpfile(void); 生成一个临时文件,以"w+b"的模式打开,并返回这个临时流的指针,如果失败返回NULL。
在程序结束时,这个文件会被自动删除。
例:FILE *fp=tmpfile();16.tmpnam();其原型为char *tmpnam(char *s); 生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败,返回NULL。
例:tmpnam(str1);二、直接I/O文件操作这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的“句柄”来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。
Linux文件的属性(上半部分)
Linux⽂件的属性(上半部分)第⼋节 Linux ⽂件的属性(上半部分)标签(空格分隔):Linux实战教学笔记第1章 Linux中的⽂件1.1 ⽂件属性概述(ls -lhi)linux⾥⼀切皆⽂件Linux系统中的⽂件或⽬录的属性主要包括:索引节点(inode),⽂件类型,权限属性,链接数,所归属的⽤户和⽤户组,最近修改时间等内容:⽂字解释:第⼀列:inode索引节点编号(相当于⼈的⾝份证,全国唯⼀)第⼆列:⽂件类型及权限第⼆列共11个字符:其中第⼀个字符为⽂件类型,随后的9个字符为⽂件的对应权限,最后⼀个字符点号“.”是和selinux有关的⼀个标识;第三列:硬链接个数(详细参看ln命令的讲解);相当于超市的多个⼊⼝,可以从不同的⽂件⼊⼝进⼊⽂件,还可以互为备份(消防通道)第四列:⽂件或⽬录所属的⽤户⽂件的所有者(属主);linux⾥⾯⽂件和程序的存在必须要有⽤户和组满⾜相应的存在需求。
第五咧:⽂件或⽬录所属的组第六列:⽂件或⽬录的⼤⼩;第七⼋九列:⽂件或⽬录的修改时间:默认⽉⽇时分第⼗列:实际的⽂件或⽬录名⽂件名不算⽂件的属性下⾯我们以chensiqi⽂件为例进⾏说明,具体列的内容参考下上⾯的图:1736707 -rwx-xr-x- 1 root root 35 Oct 28 11:29 chensiqiinode索引节点编号:1736707⽂件类型,⽂件类型是-,表⽰这是⼀个普通⽂件;⽂件权限:⽂件权限是rwxr-xr-x,表⽰⽂件属主可读,可写,可执⾏,⽂件归属的⽤户组可读可执⾏,其他⽤户可执⾏。
硬链接个数:表⽰chensiqi这个⽂件没有其它的硬链接,因为连接数是1,就是他本⾝;⽂件属主:这个⽂件所属的⽤户,这⾥意思是chensiqi⽂件被root⽤户拥有,注意,是第⼀个root;⽂件属组:这个⽂件所属的⽤户组,在这⾥是root⽤户组,是显⽰信息⾥的第⼆个root⽂件⼤⼩:⽂件⼤⼩是35个字节⽂件修改时间:这⾥的时间是该⽂件最后被更新(包括⽂件创建,内容更新,⽂件名更新等)的时间,可⽤如下命令查看⽂件的修改,访问,创建的时间1.2 索引节点inode1.2.1 inode 概述硬盘要存储数据,⾸先要分区,然后格式化创建⽂件系统,最后挂载,才能存数据。
文件(夹)的属性
添加桌面小工具
1、控制面板-所有控制面板项-桌面小工具-右键要添加的工具-添加
2、删除桌面小工具 1)右键-删除桌面小工具 2)点击关闭按钮 3、卸载桌面小工具 控制面板-所有控制面板项-桌面小工具-右键要卸载的小工具-卸载-确 定
4、设置日期和时间 控制面板-所有控制面板项-日期和时间-更改日期和时间-确定-确定
2、更改桌面背景 控制面板-所以控制面板项-个性化-更改桌面图标-在“桌面图标设置”里选 中要更改的图标单击“更改图标”-选中要替换的图标或浏览选择-确定-确 定
3、创建桌面快捷方式 1)开始-选择要创建桌面快捷方式的项目-右键-发送到-桌面快捷方式 2)按住Ctrl不放,直接拖拉到桌面
开始-右键项目-锁定到任务 栏 右键项目快捷方式-删除
谢谢!再见!
文件(夹)的属性
文件(夹)属性有4种:只读、隐藏、存档、系统 查看方法: 1、文件-属性 2、右键-属性
系统的设置与优化
字体设置 1、查看字体 开始-控制面板-字体-单击任一字体预览
2、安装字体 1)复制字体粘贴到C:\Windows\Fonts地址的文件夹中 2)快捷方式安装字体-控制面板-字体-字体设置-勾选“允许使用快捷键方 式安装字体”-确定
,选择任一种输入语言。
2、热键法 Ctrl+Space Ctrl+Shift Shift+Space Ctrl+句号键
打开或关闭输入法 循环切换以安装的输入法 全角和半角切换 中、英文符号切换
美化桌面
1、更改桌面背景 控制面板定-确定-保存修 改
3、删除字体 1)控制面板-字体-右键-删除
2)控制面板-文件-删除 3)菜单栏-删除
输入法管理
如何在Mac上设置文件的文件夹属性
如何在Mac上设置文件的文件夹属性在Mac上设置文件的文件夹属性可以帮助您更好地组织和管理您的文件,同时提高工作效率。
本文将介绍如何使用Mac系统自带的功能来设置文件夹属性,让您能够轻松地管理和保护您的文件。
一、打开“文件夹信息”窗口1. 找到您要设置属性的文件夹,单击鼠标右键,然后选择“获取信息”。
二、设置文件夹的图标1. 在“文件夹信息”窗口的左上方,您可以看到文件夹的图标。
您可以通过以下几种方式来更改图标:a. 使用系统自带的图标:单击图标,然后按下“删除”键。
b. 使用其他图标:找到您想要的图标文件,将其拖放到文件夹信息窗口的图标区域。
三、设置文件夹的共享权限1. 在“文件夹信息”窗口的右下方,找到“共享与权限”部分。
2. 单击锁形图标,输入您的管理员密码,然后单击“解锁”。
3. 在权限设置中,您可以选择以下几种共享权限:a. 阅读和写入:所有用户都可以查看和编辑文件夹中的内容。
b. 只读:所有用户只能查看文件夹中的内容,无法编辑。
c. 没有访问权限:禁止所有用户访问该文件夹。
4. 单击“应用到包含的项目”,以确保所选权限适用于文件夹中的所有文件和子文件夹。
四、设置文件夹的标签1. 在“文件夹信息”窗口的右上方,找到“标签”部分。
2. 单击标签旁边的加号“+”号,为文件夹添加一个新标签。
3. 若要更改标签的颜色,请单击标签旁边的颜色方块,并选择您喜欢的颜色。
五、设置文件夹的注释1. 在“文件夹信息”窗口的右上方,找到“注释”部分。
2. 单击注释旁边的文本框,输入您想要添加的注释。
六、设置文件夹的访问权限1. 在“文件夹信息”窗口的右下方,找到“共享与权限”部分。
2. 单击锁形图标,输入您的管理员密码,然后单击“解锁”。
3. 在权限设置中,您可以选择以下几种访问权限:a. 只读:用户只能查看文件夹中的内容,无法编辑。
b. 读与写入:用户可以查看和编辑文件夹中的内容。
c. 仅限自己:只有文件夹的所有者可以查看和编辑其中的内容。
VBA 中的文件属性与标签操作指南
VBA 中的文件属性与标签操作指南随着计算机技术的不断发展与普及,文件管理成为了我们日常工作中不可避免的一部分。
而在 VBA(Visual Basic for Applications)编程中,文件属性与标签的操作是非常重要的。
本篇文章将向您介绍 VBA 中的文件属性与标签操作指南,帮助您更好地管理和操作文件。
一、文件属性的获取与修改在 VBA 中,我们可以使用 Shell 对象来获取或修改文件的属性。
以下是一些常用的文件属性的获取和修改方法:1. 文件路径和文件名通过 VBA 中的 FileDialog 对象,我们可以创建一个文件对话框并让用户选择文件。
然后,我们可以获取所选文件的路径和文件名,并将其保存到一个变量中,以便后续的操作。
2. 文件大小使用FileLen 函数可以获取文件的大小。
该函数接受文件的完整路径作为参数,返回文件的大小(以字节为单位)。
3. 创建日期和修改日期通过使用 VBA 中的 FileSystemObject 对象,我们可以获取文件的创建日期和修改日期。
使用此对象的 GetFile 方法,将文件路径作为参数传递给该方法,然后可以使用 FileDateTime 属性来获取文件的创建日期和修改日期。
4. 文件类型使用 FileSystemObject 对象的 GetExtensionName 方法,可以获取文件的扩展名。
该方法将文件路径作为参数传递,并返回文件的扩展名。
5. 文件属性使用 FileSystemObject 对象的 GetAttr 方法,可以获取文件的属性。
该方法将文件路径作为参数传递,并返回文件的属性。
例如,如果返回 1,则表示文件为只读属性。
以上是一些常用的文件属性的获取方法。
如果需要修改文件属性,可以使用SetAttr 方法。
这个方法接受文件路径和属性值作为参数,将属性值写入文件的属性中。
请注意,如果要修改文件的只读属性,需要在修改前先将其取消只读。
二、文件标签的操作文件标签是文件的元数据,用于描述文件的特定信息。
如何在Windows上设置文件的隐藏属性
如何在Windows上设置文件的隐藏属性在Windows操作系统中,设置文件的隐藏属性是一种常见而且十分便捷的方式,它可以帮助我们保护隐私,管理文件,或者仅仅是为了简化文件夹的内容。
本文将介绍如何在Windows上设置文件的隐藏属性,以便您能够更好地使用和保护您的文件。
一、使用文件属性设置隐藏属性Windows操作系统提供了一种简单直观的方法来设置文件的隐藏属性。
在Windows资源管理器中,您可以轻松地更改文件属性,将其设置为隐藏。
下面是具体步骤:1. 找到您要隐藏的文件或者文件夹。
可以通过在资源管理器中导航到相应的位置来找到它们。
2. 选中您要隐藏的文件或者文件夹。
可以使用鼠标单击来选择单个文件,或者按住Ctrl键并单击来选择多个文件。
3. 右键单击选定的文件或者文件夹,然后在弹出菜单中选择“属性”。
4. 在文件属性窗口中,勾选“隐藏”选项并点击“应用”或“确定”按钮。
5. 您的文件或者文件夹将立即变为隐藏状态,不再显示在默认的文件夹视图中。
需要注意的是,隐藏属性只是将文件或者文件夹从默认视图中隐藏,并不提供完全的安全保护。
隐藏的文件仍然可以通过其他方式被发现,因此如果您需要更高级的保护措施,可以考虑使用其他文件加密或者压缩的方法。
二、通过命令行设置隐藏属性除了使用图形界面的方法,您还可以通过命令行来设置文件的隐藏属性。
这种方法适用于那些更喜欢使用命令行工具的用户。
下面是具体步骤:1. 打开命令提示符。
可以在开始菜单中搜索“命令提示符”并点击打开。
2. 导航到您要隐藏的文件或者文件夹所在的位置。
可以使用“cd”命令来切换路径,比如“cd D:\Documents”将切换到Documents文件夹下。
3. 输入以下命令来设置隐藏属性:attrib +h 文件名/文件夹名其中,“+h”表示添加隐藏属性,“文件名/文件夹名”是您要隐藏的文件或者文件夹的名称。
4. 按下回车键执行命令后,您的文件或者文件夹将立即变为隐藏状态。
修改文件属性
实现文件的快速搜索和整理
文件分类:将文件按照类型、日期、主题等进行分类,便于查找和管理 文件命名:为文件添加有意义的名称,便于快速识别和查找 文件标签:为文件添加标签,便于快速搜索和整理 文件属性修改:修改文件的创建时间、修改时间、作者等信息,便于快速搜索和整理
04
如何修改文件夹属 性
修改文件夹的只读属性
注意文件权限的设置,避免 文件被误操作或泄露
了解文件属性含义
文件属性是指文件 的基本信息,如文 件类型、大小、创 建时间、修改时间 等。
了解文件属性可以 帮助我们更好地管 理文件,提高工作 效率。
文件属性可以通过 文件资源管理器、 命令行工具等方式 查看。
修改文件属性时, 需要注意不要修改 文件的基本信息, 以免影响文件的正 常使用。
03
修改文件属性的常 见场景
隐藏文件和文件夹
保护隐私:防止 他人查看个人文 件
安全考虑:防止 病毒或恶意软件 攻击
组织管理:整理 文件,提高工作 效率
系统优化:减少 系统资源占用, 提高运行速度
恢复误删除的文件
场景描述:用户不小心删除了重 要文件,需要恢复
恢复方法:使用数据恢复软件, 如 Rec uva 、Ea syRecover y 等 , 扫描并恢复误删除的文件
在"常规"选项卡中,取消勾选"隐藏 已知文件类型的扩展名"
点击"应用"并"确定"
关闭文件资源管理器,查看文件扩 展名是否已隐藏
感谢观看
汇报人:
影响文件打开方式: 修改文件扩展名可 能会影响文件的打 开方式,导致文件 无法正常打开。
影响文件内容:修 改文件扩展名可能 会导致文件内容无 法正常显示或丢失 。
文件属性详解
linux中各种文件类型普通文件(- regular file)(1)文本文件。
文件中的内容是由文本构成的,文本指的是ASCII码字符。
文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有1和0),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。
常见的.c 文件, .h文件 .txt文件等都是文本文件。
文本文件的好处就是可以被人轻松读懂和编写。
所以说文本文件天生就是为人类发明的。
(2)二进制文件。
二进制文件中存储的本质上也是数字,只不过这些数字并不是文字的编码数字,而是就是真正的数字。
常见的可执行程序文件(gcc编译生成的a.out,arm-linux-gcc编译连接生成的.bin)都是二进制文件。
(3)对比:从本质上来看(就是刨除文件属性和内容的理解)文本文件和二进制文件并没有任何区别。
都是一个文件里面存放了数字。
区别是理解方式不同,如果把这些数字就当作数字处理则就是二进制文件,如果把这些数字按照某种编码格式去解码成文本字符,则就是文本文件。
(4)我们如何知道一个文件是文件文件还是二进制文件?在linux系统层面是不区分这两个的(譬如之前学过的open、read、write等方法操作文件文件和二进制文件时一点区别都没有),所以我们无法从文件本身准确知道文件属于哪种,我们只能本来就知道这个文件的类型然后用这种类型的用法去用他。
有时候会用一些后缀名来人为的标记文件的类型。
(5)使用文本文件时,常规用法就是用文本文件编辑器去打开它、编辑它。
常见的文本文件编辑器如vim、gedit、notepad++、SourceInsight等,我们用这些文本文件编辑器去打开文件的时候,编辑器会read读出文件二进制数字内容,然后按照编码格式去解码将其还原成文字展现给我们。
如果用文本文件编辑器去打开一个二进制文件会如何?这时候编辑器就以为这个二进制文件还是文本文件然后试图去将其解码成文字,但是解码过程很多数字并不对应有意义的文字所以成了乱码。
linux文件的基本属性
linux文件的基本属性
linux文件的基本属性主要包括:
1. 文件名:文件的名字,也可以称之为“标签”。
2. 文件类型:文件可以分为普通文件、目录文件和设备文件等不同类型。
3. 访问权限:每个文件都有三种访问权限,即读权限、写权限和执行权限,用户可以通过这三种权限来控制对文件的访问。
4. 文件大小:每个文件都有其自身的大小。
5. 创建时间:每个文件都有其创建时间,该时间是文件被创建的时间。
6. 修改时间:每个文件都有其修改时间,该时间是文件被最后一次修改的时间。
如何在Windows上设置文件的归档属性
如何在Windows上设置文件的归档属性在Windows操作系统中,文件的归档属性可以帮助我们对文件进行分类和组织,以便更方便地管理和查找文件。
本文将介绍如何在Windows上设置文件的归档属性。
一、什么是归档属性?归档属性是文件属性的一种,用于标记文件是否被归档或归档后是否有新的修改。
当文件被修改后,归档属性会被系统自动设置为"已归档",表示文件需要备份。
设置文件的归档属性可以帮助我们清晰地了解哪些文件需要进行备份或者进行其他操作。
二、如何设置文件的归档属性?在Windows上,设置文件的归档属性非常简单。
按照以下步骤进行操作:1. 打开文件资源管理器:可以通过桌面的"此电脑"图标或者按下Win+E快捷键来打开文件资源管理器窗口。
2. 选择文件或文件夹:在文件资源管理器中,选择想要设置归档属性的文件或文件夹。
3. 打开文件属性对话框:右键点击所选文件或文件夹,然后选择"属性"选项。
4. 设置归档属性:在文件属性对话框中,点击"常规"选项卡,并找到"高级"按钮,然后点击。
5. 更改归档属性:在高级属性对话框中,可以看到"归档"属性选项。
勾选该选项,表示文件需要备份;不勾选则表示文件不需要备份。
确认设置后,点击"确定"按钮。
6. 应用更改:在文件属性对话框中,点击"确定"按钮应用新的归档属性设置。
通过以上步骤,我们就可以在Windows上成功设置文件的归档属性。
三、归档属性的作用设置文件的归档属性有以下几个作用:1. 文件备份:通过设置归档属性,我们可以清楚地了解哪些文件需要进行备份。
对于数据重要性较高的文件,及时备份是非常重要的。
2. 文件组织:归档属性可以帮助我们对文件进行分类和组织。
例如,我们可以设定只对归档属性为"已归档"的文件进行备份操作,或者对归档属性进行搜索筛选,以便更快地找到指定文件。
操作系统文件属性
操作系统⽂件属性1.⽂件属性信息概述 ⽂件属性信息组成 01.⽂件数据的inode(index node-索引节点)信息: 快速从磁盘中检索找到数据信息 02.⽂件的数据类型: linux系统中⼀切皆⽂件 03.⽂件的权限位rwx(execute-执⾏): 控制不同的⽤户拥有不同的权限 04.⽂件数据的硬链接数: 可以有多个路径查看数据信息 05.⽂件的所属⽤户(属主): ⽂件的创建者或拥有者 06.⽂件的所属组(属组): ⽂件或数据的所属⽤户组 07.⽂件的⼤⼩信息 08.⽂件的时间信息2.⽂件属性信息详述 1.⽂件类型概念说明 1.⽂件类型概念 Windows通过扩展名来区分不同⽂件 linux不通扩展名区分⽂件,只是⽤来提⽰不同的⽂件类型 2.⽂件类型详细说明 1.linux系统中常见⽂件类型 d --- ⽬录⽂件(directory) - --- 普通⽂件(file) 1.纯⽂本⽂件 --- ⽂本⽂件(test /etc/hosts):可以直接编辑查看的普通⽂件 2.⼆进制⽂件 --- 命令⽂件(binary /bin/ls):可执⾏⽂件,不可编辑 3.数据型⽂件 --- 数据⽂件(date /tmp/etc.tar.gz):压缩⽂件 *.tar.gz *.tar.bz2 ........ l --- 链接⽂件(快捷⽅式软链接硬链接) b/c --- 设备⽂件(块⽂件/字符⽂件) b --- 块⽂件:存储的设备⽂件 ---- 光驱设备⽂件磁盘⽂件 c --- 字符⽂件:表⽰为装置⽂件⾥⾯的串⾏端⼝设备,如⿏标键盘 ---- 查看该类型⽂件会持续输出内容 需要关注的设备⽂件: 磁盘设备⽂件 /dev/sda 随机设备⽂件 /dev/urandom 输出设备⽂件 /dev/zero ---- ⿊洞出⼝⽂件 磁盘分区 输⼊设备⽂件 /dev/null ---- ⿊洞⼊⼝⽂件定时任务 s --- socket⽂件(⽹络编程) 2.linux系统中区分⽂件类型 1.颜⾊区分 ⽩⾊ : 普通⽂件 蓝⾊ : ⽬录⽂件 绿⾊ : 表⽰可执⾏⽂件 红⾊ : 表⽰压缩⽂件 浅蓝⾊ : 链接⽂件 红⾊闪烁 : 表⽰链接的⽂件有问题 黄⾊ : 表⽰设备⽂件 灰⾊ : 表⽰其他⽂件 2.利⽤属性信息区分 ll命令查看属性 3.利⽤特殊命令 file 3.⽂件类型查看⽅法 file ⽂件信息 配置⽂件---.conf ⽇志⽂件---.log 脚本⽂件---.sh 脚本⽂件---.py 4.⽂件⽬录相关命令 1.显⽰⽂件信息类型命令: file 2.显⽰命令绝对路径信息: which 3.显⽰命令绝对路径及命令相关的帮助⼿册⽂件路径 4.快速定位⽂件路径消息 locate ⽂件名称 ---- 可以显⽰⽂件所在路径信息 updatedb ---- 建⽴⽂件和对应⽬录结构关系,便于检索 ps:默认centos7中没有安装locate yum provides locate yum install -y mlocate updatedb 5.快速查找数据信息命令 find find 命令语法 find 找寻的路径范围 -type 类型信息 -name '⽂件名称' 1.寻找指定名称⽂件信息: find / -type f -name 'ip' 2.寻找部分⽂件名称信息: find / -type f -name '*.log' 3.忽略⼤⼩写查找⽂件 find / -type f -name 'old*' 4.寻找指定⼤⼩⽂件信息 find ./ -type f -size +1k c(字节单位) k(k字节单位) M(M字节单位) 5.寻找指定⽬录层次信息 find / -maxdepth 1 -type f -name 'oldboy*.txt' 6.寻找指定权限⽂件信息 find ./ -type d -perm 750 6.⽬录结构信息显⽰命令 1.tree oldboy --- 查看当前⽬录下所有数据及⽬录结构 2.tree -L 1 oldboy --- 只查看当前⽬录下⼀层⽬录结构及数据 3.tree -d oldboy ---只查看当前⽬录下所有⽬录信息 7.数据信息压缩打包命令 1.压缩命令⽤法 01.压缩语法 tar zcvf ./oldboy.txt.tar.gz(压缩后的⽂件) ./oldboy.txt(压缩前的⽂件) z(gzip) c(压缩) v(显⽰压缩过程) f(指定要压缩的⽂件) j(bzip2) c(压缩) v(显⽰压缩过程) f(指定要压缩的⽂件) J(xz) c(压缩) v(显⽰压缩过程) f(指定要压缩的⽂件) 02.解压语法 tar zxvf ./oldboy.txt.tar.gz -C(解压到指定路径) /tmp 对于解压⽂件来说压缩命令可以取消 解压后的⽂件会覆盖原有⽂件 z(gzip) x(压缩) v(显⽰解压过程) f(指定⽂件) -C(解压到指定路径) j(bzip2) x(压缩) v(显⽰解压过程) f(指定⽂件) -C(解压到指定路径) J(xz) x(压缩) v(显⽰解压过程) f(指定⽂件) -C(解压到指定路径) 确认解压后⽂件与原⽂件是否⼀致: 1.查看⽂件的⼤⼩和时间信息 2.利⽤vimdiff和diff命令⽐较两个⽂件是否有区别 03.检查查看 tar ztf ./oldboy.txt.tar.gz 不解压情况下查看压缩包中信息 z(gzip) t(查看) f(指定⽂件) j(bzip2) t(查看) f(指定⽂件) J(xz) t(查看) f(指定⽂件) 2.压缩扩展功能 ---- 压缩过程中排除指定数据不被压缩 排除单个信息 tar zcvf /tmp/oldboy-pai.tar.gz ./oldboy/ --exclude=/oldboy/oldboy1 排除多个信息 tar zcvf /tmp/oldboy-pai.tar.gz ./oldboy/ --exclude-form=被排除⽂件 3.压缩提⽰说明 1.默认解压到当前路径.会去掉/⽬录信息 2.采⽤相对路径进⾏打包,避免覆盖原有⽂件信息 2.⽂件相关权限说明 1.权限类型(⽂件数据的权限有什么) r(4) read --- 读权限 w(2) write --- 写权限 x(1) execute --- 执⾏权限 -(0) --- 没有任何权限 2.拥有权限(权限赋予到指定⼈) 属主信息 --- ⽂件所有者 属组信息 --- ⽂件所属组 3.⽂件⽤户和⽤户组 1.系统中⽤户信息有什么⽤ 01.利⽤⽤户登录系统 02.利⽤⽤户管理数据 03.利⽤⽤户管理进程 2.系统如何识别不同⽤户 利⽤⽤户的数值编号进⾏识别(uid) root⽤户的uid是0 3.⽤户组的概念 ⽤户和⽤户组的关系 ⼀个⽤户 --- ⼀个⽤户组 1v1 多个⽤户 --- ⼀个⽤户组 nv1 ⼀个⽤户 --- 多个⽤户组 1vn 系统识别⽤户组也是根据数据编号进⾏识别(gid) groups ⽤户可能属于哪些组 4.⽤户进⾏分类 01.超级管理员⽤户 root(uid=0) 1.root⾝份登录系统 1.知道服务器地址信息 2.知道登录服务端⼝信息(远程登录端⼝22) 3.知道登录⽤户信息(root) 4.知道登录⽤户密码信息 2.保护好root⽤户 --- 从上述⽤户登录系统必须条件中可看出2,3都是已知条件,所以需要从1,4两个条件中着⼿进⾏保护 1.修改远程连接端⼝ --- 52113 修改ssh服务配置⽂件/etc/ssh/sshd_config 2.禁⽌root⽤户远程登录 修改ssh服务配置⽂件/etc/ssh/sshd_config 02.虚拟⽤户 nobody(uid=99) 1.⽆法登录系统,只能管理进程 2.没有家⽬录 03.普通⽤户 xxxx(uid=1000-~) 只能管理执⾏数据,管理制定进程,可以登录系统,有家⽬录 5.⽤户相关的⽂件 ⽤户的特征信息(掌握⽂件各列信息) --- /etc/passwd ⽤户的密码信息 --- /etc/shadow ⽤户组特征信息 --- /etc/group ⽤户组密码信息 --- /etc/gshadow 4.⽂件时间信息说明 1.⽂件时间信息分类 ⽂件访问时间:access time = atime ⽂件修改时间:modify time = mtime 属性修改时间:change time = ctime 2.⽂件时间信息说明 验证时间信息命令: stat 1.编辑⽂件内容:⽂件修改时间和属性修改时间变化,⽂件访问时间不变 2.修改⽂件属性:只有属性修改时间变化,其余时间不变 3.访问⽂件信息:只有⽂件访问时间变化,其余时间不变 3.系统时间信息命令 date 01.命令信息掌握 date 02.显⽰时间⽅式⽅法 ⽅法⼀:默认显⽰系统时间 001.显⽰系统⽇期信息 date +%F 002.显⽰系统时间信息 date +%T 对于显⽰时间参数来说,若想将两个参数连接在⼀起,需要特殊符号如/ _ - 等,若使⽤空格进⾏连接时.需要将参数⽤引号括起来,否则系统会判定第⼆个参数是下⼀条命令,从⽽报错.如上所⽰ ⽅法⼆:指定格式显⽰时间 date "+%y/%m/%d %H:%M:%S" 时间显⽰实际应⽤(备份⽇志⽂件,在备份后的⽇志⽂件名中添加⽇期信息,以便查看时⽅便知道⽇志何时创建) 对于后期需要常常对⽇志⽂件进⾏上述操作,但不局限于在⽂件名后⾯添加⽇期,还需要对⽇志⽂件进⾏开机⾃动进⾏备份,所有需要将上述命令添加到开机⾃动执⾏⽂件/etc/rc.local ⽅法三:变化系统⽇期时间 01.显⽰变化时间 date -d "2day" date %F -d "-2day" 未来时间: 2day 两天后 +2day 两天后 历史时间: -2day 两天前 备份数据: 02.修改系统时间 ⼿动修改: date -s "2020/05/07 20:02" ⾃动修改: ntpdate 5.存储数据相关说明 1.inode 01.概述介绍 001 索引节点 index node 002 存放数据属性信息(⽂件⼤⼩⽂件权限⽂件硬链接数⽂件类型⽂件时间) ⽂件名称没有存放在inode索引节点中,它存放在所在⽬录的block中 02.诞⽣过程 前期知识储备 : (磁盘处理过程 : 拥有磁盘 --- 磁盘阵列(raid) --- 磁盘分区 --- 磁盘格式化 --- 建制⽂件系统 --- 进⾏挂载) 诞⽣原因概述 : 创建⽂件系统之后inode信息建⽴ 03.特点说明 001.inode⽤于存放的是⽂件属性(⽂件属性不包括⽂件名) 002.inode⽤于存放block块的指针位置(指向⽂件内容所在block) 003.创建⼀个⽂件⾄少占⽤⼀个inode和⼀个block 004.在同⼀个分区中,两个⽂件的inode号码相同,两个⽂件互为硬链接 04.命令查看 001.显⽰inode信息: ll -ih 002.统计系统中各分区inode数⽬: df -i 2.block 01.概述介绍 001 block数据块 002 存储⽂件的具体数据信息 02.诞⽣过程 : 格式化建制⽂件系统后诞⽣的 03.特点说明 001.block⽤于存放的是数据信息 002.block默认⼤⼩为4k,可以进⾏调整 ⽐较⼤的⽂件会占⽤多个block ⽐较⼩的⽂件,剩余磁盘空间⽆法使⽤,会浪费磁盘空间 003.创建⼀个⽂件⾄少占⽤⼀个inode和⼀个block(⾮空⽂件---空⽂件不会占⽤block,⽂件名时存在于存在⽬录的block中的) 004.磁盘读取数据按block为单位读取的 005.读取⼀个block会消耗⼀次磁盘I/O(input/output磁盘读写) 04.命令查看 001.显⽰block信息: ll -h /etc/hosts 002.统计系统中各分区block数⽬: df/df -h 实践操作:block默认⼤⼩是4k可以调整,⼤点好?⼩点好? 设置⼤点情况: 10k (视频公司,图⽚公司) ⽂件⼤的时候: 20k 20k ------ 4k 5个block I/O消耗假定 10s 20k ------ 10k 2个block I/O消耗假定 4s 节省I/O消耗 设置⼩点情况: 2k (互联⽹公司-脚本⽂件) ⽂件⼩的时候: 1k 1k ------ 4k 占⽤⼀个空间,剩余3k空间⽆法被其他⽂件使⽤ 1k ------ 2k 占⽤⼀个空间,剩余1k空间⽆法使⽤ 提⾼磁盘空间利⽤率,减少浪费 6.⽂件软硬链接说明 01.硬链接说明(hard_link) 001.概念说明: 相当于访问⽂件的⼊⼝ ⽂件属性中的硬链接数相当于⽂件的多个⼊⼝ 在⼀个分区中(跨分区或跨系统则⽆效),inode号码相同的⽂件,互为硬链接 002.操作练习: ln 源⽂件 源⽂件_hard(硬链接⽂件) 003.特点说明: 1.防⽌误删⽂件,不能防⽌误修改 2.不能给⽬录创建硬链接 3.对于⽬录硬链接数说明: 对于每个⽬录来说⽬录下会存在两个⽬录⼀个是当前⽬录⼀个是上级⽬录.⾃⽬录中也是如此,当前⽬录和上级⽬录,所以由此推理. 对于⼀个⽬录来说⼦⽬录数为总硬链接数-1-1 = 当前⽬录下⼀级⼦⽬录数 上述过程也可⽤命令来查看当前⽬录下有多少⼀级⼦⽬录 上述例⼦中可以看出/etc有80 个硬链接.由公式可以得出/etc下有78个⼦⽬录,此时⽤命令再进⾏验证 ll /etc | grep -c "^d" 列出/etc下⽂件详细信息通过管道将结果交由grep进⾏筛选,grep命令加-c表⽰统计,统计"^d"以d开头的⾏.d开头的⾏全为⽬录 ll /etc | grep "^d" | wc -l 命令格式与上述命令⼀致,只是最后统计结果交由wc命令来处理,-l意为统计⾏数 02.软链接说明(soft_link) 001.概念说明: 相当于快捷⽅式 ⽤于存放指向源⽂件的路径信息(软链接拥有⾃⼰的inode号,它的block中的内容是指向链接到的源⽂件的inode号) 002.操作练习: ln -s 源⽂件 源⽂件_soft(软链接) 003.特点说明: 1.软链接创建最好使⽤绝对路径,否则容易失效 2.源⽂件删除.会影响软链接 创建⼀个与源⽂件名称相同的⽂件,软链接会⾃动链接到新⽂件中.但是原来源⽂件中的内容将不会存在,因为此时的源⽂件为⼀个新⽂件,与旧有的源⽂件⽆任何关系 03.软硬链接的区别: 01.链接后的⽂件⼤⼩不⼀致 02.链接后的⽂件类型和权限不⼀致(颜⾊不⼀样) 03.链接后的⽂件和源⽂件inode信息有出⼊ 硬链接与源⽂件的inode号⼀致 软链接与源⽂件的inode号不⼀致 04.源⽂件被删除后 硬链接⽂件依然有效 软链接⽂件失效 05.软硬链接创建过程不⼀致 7.⽂件访问原理3.⽂件属性企业案例 企业案例-磁盘空间满了。
