文件综述Word下载.docx

上传人:b****4 文档编号:6525447 上传时间:2023-05-06 格式:DOCX 页数:20 大小:31.33KB
下载 相关 举报
文件综述Word下载.docx_第1页
第1页 / 共20页
文件综述Word下载.docx_第2页
第2页 / 共20页
文件综述Word下载.docx_第3页
第3页 / 共20页
文件综述Word下载.docx_第4页
第4页 / 共20页
文件综述Word下载.docx_第5页
第5页 / 共20页
文件综述Word下载.docx_第6页
第6页 / 共20页
文件综述Word下载.docx_第7页
第7页 / 共20页
文件综述Word下载.docx_第8页
第8页 / 共20页
文件综述Word下载.docx_第9页
第9页 / 共20页
文件综述Word下载.docx_第10页
第10页 / 共20页
文件综述Word下载.docx_第11页
第11页 / 共20页
文件综述Word下载.docx_第12页
第12页 / 共20页
文件综述Word下载.docx_第13页
第13页 / 共20页
文件综述Word下载.docx_第14页
第14页 / 共20页
文件综述Word下载.docx_第15页
第15页 / 共20页
文件综述Word下载.docx_第16页
第16页 / 共20页
文件综述Word下载.docx_第17页
第17页 / 共20页
文件综述Word下载.docx_第18页
第18页 / 共20页
文件综述Word下载.docx_第19页
第19页 / 共20页
文件综述Word下载.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

文件综述Word下载.docx

《文件综述Word下载.docx》由会员分享,可在线阅读,更多相关《文件综述Word下载.docx(20页珍藏版)》请在冰点文库上搜索。

文件综述Word下载.docx

[root@localhost~]#ls-lh

-rw-r--r--1rootroot203-2702:

00fonts.scale

-rw-r--r--1rootroot14M03-1607:

53kernel-2.6.15-1.2025_FC5.i686.rpm

drwxr-xr-x21000users4.0K04-0423:

30mkuml-2004.07.17

drwxr-xr-x2rootroot4.0K04-1910:

53mydir

drwxr-xr-x2rootroot4.0K03-1704:

25Public

当我们在某个目录下执行,看到有类似drwxr-xr-x,这样的文件就是目录,目录在Linux是一个比较特殊的文件。

注意它的第一个字符是d。

创建目录的命令可以用mkdir命令,或cp命令,cp可以把一个目录复制为另一个目录。

删除用rm或rmdir命令。

1.3设备文件

设备文件用于与I/O设备提供连接的一种文件,分为字符设备文件和块设备文件,对应于字符设备和块设备。

Linux把对设备的I/O做为普通文件的读取/写入操作内核提供了对设备处理和对文件处理的统一接口。

每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp。

如时您进入/dev目录,列一下文件,会看到类似如下的;

[root@localhost~]#ls-la/dev/tty

crw-rw-rw-1roottty5,004-1908:

29/dev/tty

[root@localhost~]#ls-la/dev/hda1

brw-r-----1rootdisk3,12006-04-19/dev/hda1

我们看到/dev/tty的属性是crw-rw-rw-,注意前面第一个字符是c,这表示字符设备文件,比如猫等串口设备。

我们看到/dev/hda1的属性是brw-r-----,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备。

这个种类的文件,是用mknode来创建,用rm来删除。

目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。

因为这些文件是和内核相关联的。

1.4套接口文件

当我们启动MySQL服务器时,会产生一个mysql.sock的文件。

[root@localhost~]#ls-lh/var/lib/mysql/mysql.sock

srwxrwxrwx1mysqlmysql004-1911:

12/var/lib/mysql/mysql.sock

注意这个文件的属性的第一个字符是s。

我们了解一下就行了。

1.5链接文件

链接文件又称符号链接文件,它提供了共享文件的一种方法,在链接文件中不是通过文件名实现文件共享,是通过链接文件中含的指向文件的指针来实现对文件的访问。

普通用户可以建立链接文件,并通过其指针所指向的文件。

使用链接文件可以访问普通文件。

还可以访问目录文件和不具有普通文件实态的其它文件。

它可以在不同的文件系统之间建立链接关系。

[root@localhost~]#ls-lhsetup.log

lrwxrwxrwx1rootroot1104-1911:

18setup.log->

install.log

当我们查看文件属性时,会看到有类似lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。

是通过ln-s源文件名新文件名。

上面是一个例子,表示setup.log是install.log的软链接文件。

怎么理解呢?

这和Windows操作系统中的快捷方式有点相似。

符号链接文件的创建方法举例;

[root@localhost~]#ls-lhkernel-2.6.15-1.2025_FC5.i686.rpm

[root@localhost~]#ln-skernel-2.6.15-1.2025_FC5.i686.rpmkernel.rpm

[root@localhost~]#ls-lhkernel*

lrwxrwxrwx1rootroot3304-1911:

27kernel.rpm->

kernel-2.6.15-1.2025_FC5.i686.rpm

-rwsr-xr-x指明了myprog01是一个setUid的可执行文件,这是根据第四个字符”s”判断的。

  -rwxr-sr-x指明了myprog03是一个setGid的可执行文件,这是根据第七个字符中的”s”判断的。

  -rwsr-sr-x指明了myprog02是一个setUid加setGid的可执行文件,这是根据第四个和第七个字符中的”s”判断的。

  drwxrwxrwt中的第一个”d”字指明了tmp文件是一个目录,最后一个字符”t”指明了该目录被设置了粘着位。

1.6管道文件

管道文件主要用于在进程间传递数据。

管道是进程间传递数据的“媒介”。

某进程数据写入管道的一端,另一个进程从管道另一端读取数据。

Linux对管道的操作与文件操作相同,它把管道作为文件进行处理。

管道文件以p命名又称先进先出(FIFO)文件。

22Linux文件扩展名

基本上,Linux文件是没有“扩展名”的,我们知道,Linux文件能否执行,与它第一列的10个属性有关,与文件名一点关系也没有。

这与Windows不同。

在Windows中,能执行的文件扩展名通常是.com、.exe、.bat等等,而在Linux中,只要属性中有x,例如[-rwx-r-xr-x]即表示这个文件可以执行。

不过,可以执行与可执行成功是不一样的。

举例来说,在root家目录下的install.log是一个纯文本文件,如果修改权限成为-rwxrwxrwx后,这个文件能执行吗?

当然不行。

因为它的内容根本就没有可执行的数据。

所以说,x表示这个文件具有可执行的能力,但能不能执行成功,当然就要看该文件的内容。

虽然扩展名没有什么实际的帮助,不过,由于我们仍然希望可以通过扩展名来了解该文件是什么,所以,通常还是会以适当的扩展名来表示该文件是什么类型。

下面有数种常用的扩展名:

i.*.sh:

批处理文件(scripts,脚本),因为批处理文件使用shell写成,所以扩展名就编成.sh。

ii.*Z,*.tar,*.tar.gz,*.zip,*.tgz:

经过打包的压缩文件。

这是因为压缩软件分别为gunzip、tar等等的,根据不同的压缩软件而取其相关的扩展名。

iii.*.html,*.php:

网页相关文件,分别表示HTML语法与PHP语法的网页文件。

.html的文件可使用网页浏览器来直接打开,.php的文件则可以通过客户端的浏览器来浏览服务器端,以得到运算后的网页结果。

另外,还有程序语言如Perl的文件,其扩展名也可能取成.pl。

基本上,Linux上面的文件名只是让你了解该文件可能的用途而已,真正的执行与否仍然需要属性的规范。

例如,虽然有一个文件为可执行文件,如有名的代理服务器软件squid,如果这个文件的属性被修改成无法执行,那么它就不能执行。

在文件传送的过程中常发生这种问题。

例如,你在网络上下载一个可执行文件,但是,偏偏在你的Linux系统中就是无法执行。

那就是可能文件的属性被改变了。

从网络上传送到你的Linux系统中,文件的属性确实是会被改变的。

3二进制文件和文本文件

3.1文本文件与二进制文件的定义

大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区

别并不是物理上的,而是逻辑上的。

这两者只是在编码层次上有差异。

简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICOD

E编码等等。

二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么

意思(这样一个过程,可以看作是自定义编码)。

从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编

码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。

而二进制文件可看

成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。

大家可能

对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头畔ⅲ?

字节

用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记

录bmp文件头的长度。

大家可以看出来了吧,其编码是基于值的(不定长的,2、4、

8字节长的值都有),所以BMP是二进制文件。

3.2文本文件与二进制文件的存取

文本工具打开一个文件的过程是怎样的呢?

拿记事本来说,它首先读取文件物理

上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照你所选择的

解码方式来解释这个流,然后将解释结果显示出来。

一般来说,你选取的解码方式会是

ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释

这个文件流。

例如对于这么一个文件流"

01000000_01000001_01000010_01000011"

(下划

线'

'

_'

,是我为了增强可读性,而手动添加的),第一个8比特'

01000000'

按ASCII码来解

码的话,所对应的字符是字符'

A'

,同理其它3个8比特可分别解码为'

BCD'

,即这个文件

流可解释成“ABCD”,然后记事本就将这个“ABCD”显示在屏幕上。

事实上,世界上任何东西要与其他东西通信会话,都存在一个既定的协议,既

定的编码。

人与人之间通过文字联络,汉字“妈”代表生你的那个人,这就是一种既定

的编码。

但注意到这样一种情况,汉字“妈”在日本文字里有可能是你生下的那个人,

所以当一个中国人A与日本B之间用“妈”这个字进行交流,出现误解就很正常的。

记事本打开二进制文件与上面的情况类似。

记事本无论打开什么文件都按既定的字符编

码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了

,解码和译码不对应嘛。

例如文件流'

00000000_00000000_00000000_00000001'

可能在二

进制文件中对应的是一个四字节的整数int1,在记事本里解释就变成了"

NULL_NULL_NU

LL_SOH"

这四个控制符。

3.3文本文件与二进制文件的优缺点

  因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码

的优缺点,这个找本编码的书来看看就比较清楚了。

一般认为,文本文件编码基于字符

定长,译码容易些;

二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码

难一些(不同的二进制文件格式,有不同的译码方式)。

关于空间利用率,想想看,二

进制文件甚至可以用一个比特来代表一个意思(位操作),而文本文件任何一个意思至少

是一个字符.

  很多书上还认为,文本文件的可读性要好些,存储要花费转换时间(读写要编译码)

,而二进制文件可读性差,存储不存在转换时间(读写不要编解码,直接写值).这里

的可读性是从软件使用者角度来说的,因为我们用通用的记事本工具就几乎可以浏览所

有文本文件,所以说文本文件可读性好;

而读写一个具体的二进制文件需要一个具体的

文件解码器,所以说二进制文件可读性差,比如读BMP文件,必须用读图软件.而这里的

存储转换时间应该是从编程的角度来说的,因为有些操作系统如windows需要对回车换行

符进行转换(将'

\n'

,换成'

\r\n'

,所以文件读写时,操作系统需要一个一个字符的检查

当前字符是不是'

或'

).这个在存储转换在Linux操作系统中并不需要,当然,当

在两个不同的操作系统上共享文件时,这种存储转换又可能出来(如Linux系统和Window

s系统共享文本文件)。

关于这个转换怎样进行,我将在下一篇文章《Linux文本文件与W

indows文本文件间的转换》给出^_^

3.4C的文本读写和二进制读写

  应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统

有关,所以"用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进

制文件"

这类观点是错误的.下面的讲述非明确指出操作系统类型,都暗指windows.

  C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写

时,每遇到一个'

(0AH换行符),它将其换成'

(0D0AH,回车换行),然后再写入

文件;

当文本读取时,它每遇到一个'

将其反变化为'

,然后送到读缓冲区.正

因为文本方式有'

--'

之间的转换,其存在转换耗时.二进制读写时,其不存

在任何转换,直接将写缓冲区中数据写入文件.

   总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进

制流的交互,只是文本读写时有回车换行的转换.所以当写缓冲区中无换行符'

(0AH

),文本写与二进制写的结果是一样的,同理,当文件中不存在'

(0DH0AH)时,文本

读与二进制读的结果一样.

4linux文件命令

4.1file

1.作用

file通过探测文件内容判断文件类型,使用权限是所有用户。

2.格式

file[options]文件名

3.[options]主要参数

-v:

在标准输出后显示版本信息,并且退出。

-z:

探测压缩过的文件类型。

-L:

允许符合连接。

-fname:

从文件namefile中读取要分析的文件名列表。

4.简单说明

使用file命令能知道某个文件究竟是二进制(ELF格式)的可执行文件,还是ShellScript文件,或是其他的什么格式。

file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。

5.应用实例

如果我们看到一个没有后缀的文件grap,能使用下面命令:

$filegrap

grap:

Englishtext

此时系统显示这是个英文文本文件。

需要说明的是,file命令不能探测包括图像、音频、视频等多媒体文件类型。

4.2mkdir

mkdir命令的作用是建立名称为dirname的子目录,和MSDOS下的md命令类似,他的使用权限是所有用户。

mkdir[options]目录名

-m,--mode=模式:

设定权限;

,和chmod类似。

-p,--parents:

需要时创建上层目录;

如果目录早已存在,则不当作错误。

-v,--verbose:

每次创建新目录都显示信息。

--version:

显示版本信息后离开。

4.应用实例

在进行目录创建时能设置目录的权限,此时使用的参数是“-m”。

假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么能使用以下命令:

$mkdir-m777tsk

4.3grep

grep命令能指定文件中搜索特定的内容,并将含有这些内容的行标准输出。

grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,他的使用权限是所有用户。

grep[options]

3.主要参数

[options]主要参数:

-c:

只输出匹配行的计数。

-I:

不区分大小写(只适用于单字符)。

-h:

查询多文件时不显示文件名。

-l:

查询多文件时只输出包含匹配字符的文件名。

-n:

显示匹配行及行号。

-s:

不显示不存在或无匹配文本的错误信息。

-v:

显示不包含匹配文本的所有行。

pattern正则表达式主要参数:

\:

忽略正则表达式中特别字符的原有含义。

^:

匹配正则表达式的开始行。

$:

匹配正则表达式的结束行。

\>

;

到匹配正则表达式的行结束。

[]:

单个字符,如[A]即A符合需求。

[-]:

范围,如[A-Z],即A、B、C一直到Z都符合需求。

所有的单个字符。

*:

有字符,长度能为0。

正则表达式是Linux/Unix系统中非常重要的概念。

正则表达式(也称为“regex”或“regexp”)是个能描述一类字符串的模式(Pattern)。

如果一个字符串能用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。

这和DOS中用户能使用通配符“*”代表任意字符类似。

在Linux系统上,正则表达式通常被用来查找文本的模式,及对文本执行“搜索-替换”操作和其他功能。

查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。

有时IP地址会超过2000个。

如果要查看nnn.nnn网络地址,不过却忘了第二部分中的其余部分,只知到有两个句点,例如nnnnn..。

要抽取其中所有nnn.nnnIP地址,使用[0-9]\{3\}\.[0-0\{3\}\。

含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。

$grep’[0-9]\{3\}\.[0-0\{3\}\’ipfile

补充说明,grep家族还包括fgrep和egrep。

fgrep是fixgrep,允许查找字符串而不是个模式;

egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及和之相对应的一些更加规范的模式。

4.4dd

dd命令用来复制文件,并根据参数将数据转换和格式化。

dd[options]

3.[opitions]主要参数

bs=字节:

强迫ibs=;

及obs=;

cbs=字节:

每次转换指定的;

conv=关键字:

根据以逗号分隔的关键字表示的方式来转换文件。

count=块数目:

只复制指定;

的输入数据。

ibs=字节:

每次读取指定的;

if=文件:

读取;

内容,而非标准输入的数据。

obs=字节:

每次写入指定的;

of=文件:

将数据写入;

,而不在标准输出显示。

seek=块数目:

先略过以obs为单位的指定;

的输出数据。

skip=块数目:

先略过以ibs为单位的指定;

dd命令常常用来制作Linux引导盘。

先找一个可引导内核,令他的根设备指向正确的根分区,然后使用dd命令将其写入软盘:

$rdevvmlinuz/dev/hda

$ddif=vmlinuzof=/dev/fd0

上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。

4.5find

find命令的作用是在目录中搜索文件,他的使用权限是所有用户。

find[path][options][expression]

path指定目录路径,系统从这里开始沿着目录树向下查找文件。

他是个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。

[options]参数:

-depth:

使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。

-maxdepthlevels:

表示至多查找到开始目录的第level层子目录。

level是个非负数,如果level是0的话表示仅在当前目录中查找。

-mindepthlevels:

表示至少查找到开始目录的第level层子目录。

-mount:

不在其他文件系统(如Msdos、Vfat等)的目录和文件中查找。

-version:

打印版本。

[expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。

他的参数非常多,这里只介绍一些常用的参数。

?

name:

支持统配符*和?

-atimen:

搜索在过去n天读取过的文件。

-ctimen:

搜索在过去n天修改过的文件。

-groupgrpoupname:

搜索所有组为grpoupname的文件。

-user用户名:

搜索所有文件属主为用户名(ID或名称)的文件。

-sizen:

搜索文件大小是n个block的文件。

-print:

输出搜索结果,并且打印。

4.应用技巧

find命令查找文件的几种方法:

(1)根据文件名查找

例如,我们想要查找一个文件名是lilo.conf的文件,能使用如下命令:

find/-namelilo.conf

find命令后的“/”表示搜索整个硬盘。

(2)快速查找文件

根据文件名查找文件会遇见一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在非常深的子目录中时。

如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省非常多时间。

比如smb.conf文件,从他的文件后缀“.conf”能判断这是个设置文件,那么他应该在

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2