++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++

1、Linux文件的扩展名;

一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux桌面环境和Windows桌面没有太大的区别。

在Linux中,带有扩展名的文件,只能代表程序的关联,并不能说明文件是可以执行,从这方面来说,Linux的扩展名没有太大的意义。

file.tar.gz file.tgz file.tar.bz2 file.rar file.gz file.zip ... ... 这些大家都熟悉,是归档文件。要通过相应的工具来解压或提取;

file.PHP 这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;

file.so 这类是库文件;

file.doc file.obt 这是OpenOffice 能打开的文件;

... ...

用一些工具创建的文件,其后缀也不相同,就看我们用什么工具了,比如 Gimp,gedit,OpenOffice 等工具,创建出来的文件后缀名也不一样。

2、Linux 文件类型;

Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。

Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等;现在我们进行一个简要的说明;

2.1 普通文件;


​[root@localhost ~]# ls -lh install.log
-rw-r--r-- 1 root root 53K 03-16 08:54 install.log​


我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令;

2.2 目录;


​[root@localhost ~]# ls -lh
总计 14M

-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale
-rw-r--r-- 1 root root   53K 03-16 08:54 install.log
-rw-r--r-- 1 root root   14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
drwxr-xr-x 2 1000 users 4.0K 04-04 23:30 mkuml-2004.07.17
drwxr-xr-x 2 root root  4.0K 04-19 10:53 mydir
drwxr-xr-x 2 root root  4.0K 03-17 04:25 Public​


当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。

2.3 字符设备或块设备文件;

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


​[root@localhost ~]# ls -la /dev/tty
crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty
[root@localhost ~]# ls -la /dev/hda1
brw-r----- 1 root disk 3, 1 2006-04-19 /dev/hda1​


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

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

这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。

2.4 套接口文件;

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


​[root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock​


注意这个文件的属性的第一个字符是 s。我们了解一下就行了。

2.5 符号链接文件;


​[root@localhost ~]# ls -lh setup.log
lrwxrwxrwx 1 root root 11 04-19 11:18 setup.log -> install.log​


当我们查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名新文件名。上面是一个例子,表示setup.log是install.log的软链接文件。怎么理解呢?这和Windows操作系统中的快捷方式有点相似。

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


​[root@localhost ~]# ls -lh kernel-2.6.15-1.2025_FC5.i686.rpm
-rw-r--r-- 1 root root 14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
[root@localhost ~]# ln -s kernel-2.6.15-1.2025_FC5.i686.rpm  kernel.rpm
[root@localhost ~]# ls -lh kernel*
-rw-r--r-- 1 root root 14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
lrwxrwxrwx 1 root root  33 04-19 11:27 kernel.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm​


3、关于本文;

   在Linux环境下一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

     现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个linux文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux桌面环境和Windows桌面没有太大的区别。

     在Linux中,带有扩展名的文件,只能代表程序的关联,并不能说明文件是可以执行,从这方面来说,Linux的扩展名没有太大的意义。

 

Linux下常见的文件扩展名

*.php ------这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;

*.so -------这类是库文件;

*.doc  *.obt --------这是OpenOffice 能打开的文件;

.bz2 ------bzip2的压缩文件

.gz ------gzip的压缩文件

.tar ------tar打包文件(是包文件不是压缩文件)

.tbz------tar打包并用bzip压缩文件

.tgz-----tar打包并用gzip压缩的文件

.au -----audio文件

.gif -----gif图象文件

.html/.htm-----HTML文件

.jpg-----JPEG图象文件

.pdf------电子文档(PDF格式的)

.png-----PNG图象文件

.ps------postscinpt文件(打印格式文件)

.txt------纯文本文件

.wav-----audio文件

.xpm-----图象文件

.conf-------配置文件

.lock-------LOCK文件(用来判断一个文件或设备是否被使用)

.rpm------REDHATPackage.Manager文件(套件包或软件包)

.c -------C源程序代码文件

.cpp------C++源程序代码文件

.h -------C或C++程序的头文件

.o------程序目标文件

.pl------perl脚本文件

.so-----类库文件

 

以下是部分后缀的详细解释:

1.*.sh


 


  sh是linux,unix命令,


 


  用途:调用缺省 shell。


 


  语法:请参阅 ksh 命令的语法。将 /usr/bin/sh 文件链接到 Korn shell。


 


  描述:sh 命令调用缺省 shell 并使用它的语法和标志。链接到 /usr/bin/sh 路径的 shell 是缺省的 shell。操作系统的标准配置把 /usr/bin/sh 路径链接到 Korn shell。关于 Korn shell 功能的具体信息,请参阅《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『Korn Shell 或 POSIX Shell 命令』。


 


  标志:请参阅 Korn shell(ksh 命令)的标志。


 


  文件:/usr/bin/sh 包含 sh 命令。

 

2.*.cfg

     这只是一个为开发及使用方便而"发明"的一个后缀名。这种文件没有固定的格式,用途也仅仅是保存用户的设置。一般为只读,也可以用于读写。

     同样,为了方便起见,里面的内容大多数时候也确实是文本。可以用任何文本编辑器打开。本例中用Source insight。

     智能手机中的文件:CFG 是一个引导文件, CFG 和TFS文件放在同一文件夹中,相当于程序里的头文件。tfs的cfg文件,可以用resource manager 生成。

      CFG(Config)脚本文件,一般用于程序读取指定值,以下为常见格式:

例:

102 (Home)

115 (VolumeUp)

114 (VolumeDown)

248 (Reading)

158 (Back)

139 (Menu)

end

3. *.ko

   是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块,一般是驱动程序。

   加载:

   modprobe module-name       or          insmod /path-to/module-name.ko

   但要注意的是,该模块在跟你系统环境类似的库及内核版本下编译才可以使用,否则会出错。

 

 

 

4. *.conf

    程序配置文件,启动netmeeting

    应用系统中的配置文件,在类unix系统使用广泛,大多数同时有windows和类unix系统版本的软件也使用

 

5. *.allow和*.deny


/etc/hosts.allow和/etc/hosts.deny

     这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问.这两个配置文件的格式如下:

    #服务进程名:主机列表:当规则匹配时可选的命令操作

    server_name:hosts-list[:command]

 


     /etc/hosts.allow控制可以访问本机的ip地址,


     /etc/hosts.deny控制禁止访问本机的IP.


     如果两个文件的配置有冲突,以/etc/hosts.deny为准.下面是一个/etc/hosts.allow的示例:

ALL:127.0.0.1 #允许本机访问本机所有服务进程

smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务

ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况.


 


6. *.types


   在遇到有2个后缀的文件时,在该文件中检查这个有2个后缀的文件是否被定义了,以便选择合适的文件处理方法。


   This file controls what Internet media types are sent to the client for given file extension(s).


    每遇到一种后双重后缀名(如xxx.php.rar)的文件,Apache都会去conf/mime.types 文件中检查最后一个后缀, 如果最后一个后缀并没有在mime.types文件中定义, 则使用前一个后缀来解释 , 因为在默认情况下,rar并未在mime.types中定义, 故Apache会使用php后缀来解释文件。(这就是漏洞的原因所在)


 


7. *.rc


    VC中以rc为扩展名的文件称为资源脚本文件, 其中包含了应用程序中用到的所有的windows资源, rc文件可以直接在VC集成环境中以可视化的方法进行编辑和修改。


8. *.so


   在linux环境下,c++编译得到库文件后缀包括:.so or .a or .la,当然,linux下文件的类型是不依赖于其后缀名的,后缀及其含义:

.so 为共享库 : 动态库(shared library/shared object/dynamic link library)


.so.1, .so.6等:后边的是表示版本而已,这都是动态运行库,大部分属于基础库,即glibc。


.a为静态库 : archive / static library

.la为libtool自动生成的一些共享库,可以用vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式   file *.la


作者:柒月