Linux下的檔案及檔案字尾名

伍_工發表於2013-03-14

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

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

相關文章