详解Linux下的文件与文件后缀名

发布时间:2020-08-15编辑:脚本学堂
本文详细介绍下,linux系统中的文件、文件后缀名的相关知识,感兴趣的朋友可以参考下。

本节内容:
linux文件与文件后缀名

1、Linux文件的扩展名;

在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@jb200.com ~]# 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@jb200.com ~]# 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@jb200.com ~]# ls -la /dev/tty
crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty
[root@jb200.com ~]# 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@jb200.com ~]# 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@jb200.com ~]# 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@jb200.com ~]# 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@jb200.com ~]# ln -s kernel-2.6.15-1.2025_FC5.i686.rpm  kernel.rpm
[root@jb200.com ~]# 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桌面环境和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