Linux培训
美国上市Linux培训机构

400-111-8989

热门课程

关于Linux的文件类型与扩展名知识

  • 发布:linux培训
  • 来源:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.html
  • 时间:2018-04-04 16:55

今天小编将为大家带来一些关于Linux文件类型及扩展名的知识,关注Linux的小伙伴赶快来看一看吧~

Linux系统中,任何硬件设备或者其他设备都是以文件的形式存在,就连数据通信的接口这些也是由专门的文件来负责的,因此Linux的文件种类就非常多,出了之前我们常见的-或者d表示一般文件与目录文件之外,还有哪些种类的文件呢?

1.文件种类

我们使用ls -l这个命令时,可以观察到第一栏那十个字符中,第一个字符为文件的类型。除了常见的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢?

普通文件(regular file ): 就是一般我们在进行存取的类型的文件,在由ls -al所显示出来的属性方面,第一个字符为[ - ],例如[-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:

纯文本档(ASCII):这是Linux系统中最多的一种文件类型, 称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这一种文件类型。 举例来说,你可以下达『cat ~/.bashrc』就可以看到该文件的内容。(cat是将一个文件内容读出来的指令)

二进制文件(binary):我们的系统其实仅认识且可以执行二进制文件(binary file)在Linux当中的可执行文件(scripts,文字型批处理文件不算)就是这种格式的 举例来说,我们经常使用的cat命令就是一个binary file。

数据格式文件(data):有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data file)。举例来说,我们的Linux在使用者登入时,都会将登录的数据记录在/var/log/wtmp那个文件内,该文件是一个data file,他能够透过last这个指令读出来! 但是使用cat时,会读出乱码 因为它是属于一种特殊格式的文件。

目录(directory): 就是目录 第一个属性为[ d ],例如[drwxrwxrwx]。

连接文件(link): 就是类似Windows系统底下的快捷方式! 第一个属性为[ l ](英文L的小写),例如[lrwxrwxrwx];

设备与装置文件(device): 与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下!通常又分为两种:

区块(block)设备档 :就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等就是! 你可以随机的在硬盘的不同区块读写,这种装置就是成组设备!你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]!

字符(character)设备文件:亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是『一次性读取』的,不能够截断输出。 举例来说,你不可能让鼠标『跳到』另一个画面,而是『滑动』到另一个地方啊!第一个属性为[ c ]。

数据接口文件(sockets): 既然被称为数据接口文件, 想当然,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket来进行数据的沟通了。第一个属性为[ s ], 最常在/var/run这个目录中看到这种文件类型了。

数据输送文件(FIFO, pipe): FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个属性为[p]。

除了设备文件是我们系统中很重要的文件,最好不要随意修改之外(通常只有root用户才可以修改!),另一个比较有趣的文件就是连结文件。如果你常常将应用程序捉到桌面来的话,你就应该知道在Windows底下有所谓的『快捷方式』。同样的,你可以将linux下的连结档简单的视为一个文件或目录的快捷方式。至于socket与FIFO文件比较难理解,因为这两个玩意与程序(process)比较有关系,这个等到后面学习到时再研究!此外,你也可以透过man fifo及man socket来查阅系统上的说明!

2.Linux文件扩展名:

基本上,Linux的文件是没有所谓的『扩展名』的,一个Linux文件能不能被执行,与他的第一栏的十个属性有关,与档名根本一点关系也没有。这个观念跟Windows的情况不相同喔!在Windows底下,能被执行的文件扩展名通常是.exe .bat等等,而在Linux底下,只要你的权限当中具有x的话,例如[ -rwx-r-xr-x ]即代表这个文件可以被执行喔!

不过,可以被执行跟可以执行成功是不一样的~举例来说,在root家目录下的install.log是一个纯文本档,如果经由修改权限成为-rwxrwxrwx后,这个文件能够真的执行成功吗?当然不行~因为他的内容根本就没有可以执行的数据。所以说,这个x代表这个文件具有可执行的能力,但是能不能执行成功,当然就得要看该文件的内容

虽然如此,不过我们仍然希望可以藉由扩展名来了解该文件是什么东西,所以,通常我们还是会以适当的扩展名来表示该文件是什么种类的。底下有数种常用的扩展名:

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

*Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为gunzip, tar等等的,由于不同的压缩软件,而取其相关的扩展名!

*.html, *.php:网页相关文件,分别代表HTML语法与PHP语法的网页文件!.html的文件可使用网页浏览器来直接开启,至于.php的文件, 则可以透过client端的浏览器来server端浏览,以得到运算后的网页结果!

基本上,Linux系统上的文件名真的只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行!例如虽然有一个文件为可执行文件,如常见的/bin/ls这个显示文件属性的指令,不过,如果这个文件的权限被修改成无法执行时,那么ls就变成不能执行!

3.Linux文件长度与文件名的限制

在Linux底下,使用预设的Ext2/Ext3文件系统时,针对文件的档名长度限制为:

单一文件或目录的最大容许文件名为255个字符;

包含完整路径名称及目录(/)之完整档名为4096个字符。

由于Linux在文字接口下的一些指令操作关系,一般来说,你在设定Linux底下的文件名时,最好可以避免一些特殊字符比较好!例如底下这些:

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因为这些符号在文字接口下,是有特殊意义的!另外,文件名的开头为小数点『.』时,代表这个文件为『隐藏文件』!同时,由于指令下达当中,常常会使用到-option之类的选项,所以最好也避免将文件档名的开头以-或+来命名!

Linux目录结构

在之前的一篇随笔里面就初步的分析了Linux的目录结构,在Linux系统中,所有的文件与目录都是由根目录【/】开始。它是所有目录与文件的源头,然后再一个分支下来,有点像树状。我们通常称这种目录配置方式为:”目录树“(directory tree)。这个目录树的主要特性有:

目录树的启始点为根目录(/, root);

每一个目录不止能使用本地端的partition的文件系统,也可以使用网络上的filesystem。举例来说, 可以利用Network File System (NFS)服务器挂载某特定目录等。

每一个档案在此目录树中的文件名(包含完整路径)都是独一无二的。

因为Linux的开发者实在太多了,如果每个人都发展出属于自己的目录配置方法,那么将可能会造成很多管理上的困扰。所以,就有一个叫做Filesystem Hierarchy Standard (FHS) 标准的出来了。

这个FHS ( http://www.pathname.com/fhs/ )事实上仅是规范出在根目录( / )底下各个主要的目录应该是要放置什么样的档案而已。FHS定义出两层规范出来,第一层是/底下的各个目录应该要放置什么样内容的档案数据,例如/etc应该要放置配置文件,/bin与/sbin则应该要放置可执行文件等等。第二层则是针对/usr及/var这两个目录的次目录来定义的。例如/var/log放置系统注册表档、/usr/share放置共享数据等等。

事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动,而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:

达内Linux

可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;

不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

不变的:有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;

可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

此外,根据文件名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 绝对路径为:由根目录(/)开始写起的文件名或目录名称,例如/home/xiaoluo/.bashrc;相对路径为相对于目前路径的文件名写法。例如./home/xiaoluo或http://www.cnblogs.com/home/xiaoluo/等等。反正开头不是/就属于相对路径的写法,而您必须要了解,相对路径是以【您当前所在路径的相对位置】来表示的。举例来说,当前在/home这个目录下,如果想要进入/var/log这个目录时,就可以采用下面两种方式来写:

cd /var/log (absolute)

cd ../var/log (relative)

因为您在/home底下,所以要回到上一层(../)之后,才能继续往/var来移动的!特别注意这两个特殊的目录:

.:代表当前的目录,也可以使用./来表示;

..:代表上一层目录,也可以../来代表。

我们可以通过ls -l /这个命令来看一下【/】根目录下的目录配置结构:

达内Linux

现在看到前面那些个属性我们是不是已经非常熟悉了呢?

如果要以较为完整的树状目录来看,整个Linux系统的树状目录可以用下图来表示:

达内Linux

我们可以看到,所有的这些目录都是依附在了【/】根目录下面,这也就是我们俗称的"树状目录"。根据FHS定义,每个目录内应该放置的文件内容应如下所示:

达内Linux

达内Linux

达内Linux

达内Linux

达内Linux

达内Linux

特别重要的几个目录

/etc:这个目录是系统配置文件放置的地方, 包括您系统上的账号与密码(/etc/passwd, /etc/shadow),还有开机时所要用到的各项设定值(/etc/sysconfig/*),还有各主要的网络服务的配置文件,都在这个目录中。 意思就是说,如果这个目录底下的档案被删除或者是死掉了, 我们就要花费大量的时间来恢复这个目录的文件。因此,一般建议将这个目录进行备份!

/usr/local:虽然说目前已经将这个目录的重要性移动到/opt了, 但我还是是比较习惯将我自己开发或自行额外安装的软件放置在这个/usr/local目录下。 如果你的Linux系统是多人共管的话,那么,养成一个良好的操作习惯是有必要的。 那么安装软件的习惯也要好好建立起来啊~不要随意安装呢! 统一放置在/usr/local或者是/opt底下吧!

/var: 这个目录是在管理系统运作过程中的重要中间暂存数据的,例如/var/lib与/var/run。 此外,最终的数据例如邮件/var/spool/mail也是放置在这个目录中 另外,几乎所有服务的登录文件(可以记录谁、什么时候、由哪里登入主机、做了什么事等等信息!)都放在/var/log这个目录下,因此,这个目录也很重要。

以上就是小编今天跟大家分享的Linux文件类型与扩展名的文章,看了文章之后是否对你有所帮助呢?想了解更多的Linux信息,欢迎关注达内Linux官网,这里有你想知道的信息哦~

预约申请免费试听课

上一篇:Linux更改文件权限的两种方式
下一篇:初学者应知道的type命令教程

Linux运维工程师应该注意的多线程编程的事项

Linux运维入门技巧-这些Linux命令你还不知道吗?

让你的Linux系统变得更加安全的方法有哪些?

Linux运维人员需要知道的Linux Shell 自定义函数

选择城市和中心
贵州省

广西省

海南省