Chinaunix首页 | 论坛 | 博客

分类: LINUX

2009-01-10 12:49:24

Linux档案种类与副档名

我们在基础篇一直强调一个概念,那就是:任何装置在Linux底下都是档案, 不仅如此,连资料沟通的介面也有专属的档案在负责~所以,你会瞭解到,Linux的档案种类真的很多~ 除了前面提到的一般档案(-)与目录档案(d)之外,还有哪些种类的档案呢?

    * 档案种类:

我们在刚刚提到使用‘ls -l’观察到第一栏那十个字元中,第一个字元为档案的类型。 除了常见的一般档案(-)与目录档案(d)之外,还有哪些种类的档案类型呢?

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

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

          o 二进位档(binary):还记得我们在‘ 第零章、计算机概论 ’里面的软体程式的运作中提过, 我们的系统其实仅认识且可以执行二进位档案(binary file)吧?没错~ 你的Linux当中的可执行档(scripts, 文字型批次档不算)就是这种格式的啦~ 举例来说,刚刚下达的指令cat就是一个binary file。

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

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

    * 连结档(link):
      就是类似Windows系统底下的捷径啦! 第一个属性为 [ l ](英文L的小写),例如 [lrwxrwxrwx] ;

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

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

          o 字元(character)设备档:亦即是一些序列埠的周边设备, 例如键盘、滑鼠等等!这些设备的特色就是‘一次性读取’的,不能够截断输出。 举例来说,你不可能让滑鼠‘跳到’另一个画面,而是‘滑动’到另一个地方啊!第一个属性为 [ c ]。

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

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

除了设备档是我们系统中很重要的档案,最好不要随意修改之外(通常他也不会让你修改的啦!), 另一个比较有趣的档案就是连结档。如果你常常将应用程式捉到桌面来的话,你就应该知道在 Windows底下有所谓的‘捷径’。同样的,你可以将 linux下的连结档简单的视为一个档案或目录的捷径。 至于socket与FIFO档案比较难理解,因为这两个咚咚与程序(process)比较有关系, 这个等到未来你瞭解process之后,再回来查阅吧!此外, 你也可以透过man fifo及man socket来查阅系统上的说明!

    * Linux档案副档名:

基本上,Linux的档案是没有所谓的‘副档名’的,我们刚刚就谈过,一个Linux档案能不能被执行,与他的第一栏的十个属性有关, 与档名根本一点关系也没有。这个观念跟Windows的情况不相同喔!在Windows底下, 能被执行的档案副档名通常是 .com .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就变成不能执行啰!

上述的这种问题最常发生在档案传送的过程中。例如你在网路上下载一个可执行档,但是偏偏在你的 Linux系统中就是无法执行!呵呵!那么就是可能档案的属性被改变了!不要怀疑,从网路上传送到你的 Linux系统中,档案的属性与权限确实是会被改变的喔!

    * Linux档案长度限制:

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

    * 单一档案或目录的最大容许档名为 255 个字元;
    * 包含完整路径名称及目录 (/) 之完整档名为 4096 个字元。

是相当长的档名喔!我们希望Linux的档案名称可以一看就知道该档案在干嘛的, 所以档名通常是很长很长!而用惯了Windows的人可能会受不了,因为档案名称通常真的都很长, 对于用惯Windows而导致打字速度不快的朋友来说,嗯!真的是很困扰.....不过,只得劝你好好的加强打字的训练啰!

而由第五章谈到的热键你也会知道, 其实可以透过[tab]按键来确认档案的档名的!这很好用啊! 当然啦,如果你已经读完了本书第三篇关于BASH的用法,那么你将会发现 ‘哇!变数真是一个相当好用的东西呐!’ 嗯!看不懂,没关系,到第三篇谈到bash再说!

    * Linux档案名称的限制:

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

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

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

阅读(2235) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~