Linux下的文件及文件後綴名
2013-03-14 15:34 6969人閱讀 評論(0) 收藏 舉報
++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++
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