linux學習筆記之文件類型,及目錄介紹

引用A:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.htmlphp

引用B:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/01/2992642.html (文件結構和用戶組)html

 

一:Linux文件類型與擴展名java

1.文件種類linux

  • 普通文件(regular file ): 顯示屬性爲[ - ],例如 [-rwxrwxrwx ]。另外,依照文件的內容,又大略能夠分爲:目錄(directory): 顯示屬性爲 [ d ],例如 [drwxrwxrwx]。
    • 純文本檔(ASCII):這是Linux系統中最多的一種文件類型。
    • 二進制文件(binary):能夠執行二進制文件(binary file),是Linux當中的可執行文件。其中,文字型批處理文件不算(scripts)。
    • 數據格式文件(data): 特定格式的文件(data file)。須要經過特定指令讀取。
  • 鏈接文件(link): 就是相似Windows系統底下的快捷方式! 顯示屬性爲 [ l ](L的小寫),例如 [lrwxrwxrwx] ;
  • 設備與裝置文件(device): 與系統周邊及儲存等相關的一些文件, 一般都集中在/dev這個目錄之下。分爲兩種:數據接口文件(sockets): 第一個屬性爲 [ s ],一般被用在網絡上的數據承接。常在/var/run中存儲。
    • 區塊(block)設備檔 :屬性爲[ b ],就是一些儲存數據, 以提供系統隨機存取的接口設備,例如:硬盤與軟盤等。保存在/dev/sda。
    • 字符(character)設備文件:屬性爲[ c ],亦便是一些串行端口的接口設備, 例如:鍵盤、鼠標等。這些設備的特點就是『一次性讀取』的,不可以截斷輸出。
  • 數據輸送文件(FIFO, pipe,first-in-first-out): 第一個屬性爲[p] ,是一種特殊的文件類型。主要解決 多個程序同時存取一個文件所形成的錯誤問題。

若向對此做進一步瞭解。建議搜索相關資料。或查看引用原文。
c++

2.Linux文件擴展名:shell

linux下的擴展名沒有任何的實際用途(win下有)。數據庫

是否可以執行取決於:文件自己 和 執行權限(r/w/x中的x)。緩存

但咱們能夠經過擴展名來了解該文件種類,來使用針對軟件打開或者執行。例如:bash

  • *.sh : 腳本或批處理文件 (scripts),由於批處理文件由shell寫成,因此擴展名爲 .sh;
  • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 不一樣的壓縮擴展名。
  • *.html, *.php:網頁相關文件

3.Linux文件長度與文件名的限制服務器

針對文件的檔名長度限制爲:

  • 單一文件或目錄的最大允許文件名爲 255 個字符;
  • 包含完整路徑名稱及目錄 (/) 之完整檔名爲 4096 個字符。

儘可能避免如下字符:

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

這些符號在文字接口下,是有特殊意義的:文件名以小數點『.』開頭,則爲『隱藏文件』。

有些符號則在linux指令中使用: 符號[ - ] 在-option中使用。

4.查看一個文件的操做。

-rwxrw-r-- 1 501 502 100 Mar Test.java [-] [rwx] [rw-] [r--] 分爲四段 第一段 表明文件類型:- 文件,d 文件夾,l 連接 第二段 全部者的權限。 第三段 全部者所在組權限。 第四段 組外權限。 1:表明的文件個數。文件爲1,文件夾則爲子文件數目. 501:用戶ID(惟一性) 502:用戶所在組ID(惟一性) 100:存儲大小 Mar:建立時間 Test.java:文件名

須要注意:ROOT權限不受限制

2、Linux目錄結構

linux目錄的主要特性有:

  • 目錄的啓始點爲根目錄 (/, root);
  • 目錄不止能使用本地端的 partition 的文件系統,也可使用網絡上的 filesystem 。例:能夠利用 Network File System (NFS) 服務器掛載某特定目錄等。
  • 每個檔案在此目錄樹中的文件名(包含完整路徑)都是獨一無二的。

 

linux開源特性致使開發者衆多。目錄存放混亂,須要統一標準。

FHS ( http://www.pathname.com/fhs/ ) :是linux下的目錄規範標準。全稱:Filesystem Hierarchy Standard。

FHS:僅是規範根目錄 ( / ) 下各個主要的目錄應該是要放置什麼樣的檔案而已。

FHS 定義出兩層規範:

  1)第一層是 / 底下的各個目錄應該要放置什麼樣內容的檔案數據,例如 /etc 應該要放置配置文件。

  2)第二層則是針對 /usr 及 /var 這兩個目錄的次目錄來定義的。 例如 /var/log 放置系統註冊表檔。

FHS依據文件系統使用的頻繁 和 是否容許使用者改動,將目錄定義成爲四種交互做用的形態:

  可分享的(shareable) 不可分享的(unshareable)
不變的(static) /usr (軟件放置處) /etc (配置文件)
  /opt (第三方合力軟件) /boot (開機與核心檔)
可變更的(variable) /var/mail (使用者郵件信箱) /var/run (程序相關)
  /var/spool/news (新聞組) /var/lock (程序相關)
  • 可分享的:能夠分享給其餘系統掛載使用的目錄,因此包括執行文件與用戶的郵件等數據, 是可以分享給網絡上其餘主機掛載用的目錄;
  • 不可分享的:本身機器上面運做的裝置文件或者是與程序有關的socket文件等, 因爲僅與自身機器有關,因此固然就不適合分享給其餘主機了。
  • 不變的:有些數據是不會常常變更的,跟隨着distribution而不變更。 例如函式庫、文件說明文件、系統管理員所管理的主機服務配置文件等等;
  • 可變更的:常常改變的數據,例如登陸文件、通常用戶可自行收受的新聞組等。

咱們能夠看到,全部的這些目錄都是依附在了【/】根目錄下面,這也就是咱們俗稱的"樹狀目錄"。根據FHS定義,每一個目錄內應該放置的文件內容應以下所示:

目錄 應放置文件內容
/bin 系統有不少放置執行文件的目錄,但/bin比較特殊。由於/bin放置的是在單人維護模式下還可以被操做的指令。 在/bin底下的指令能夠被root與通常帳號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等經常使用的指令。
/boot 這個目錄主要在放置開機會使用到的文件,包括Linux核心文件以及開機選單與開機所需配置文件等等。 Linux kernel經常使用的檔名爲:vmlinuz,若是使用的是grub這個開機管理程序, 則還會存在/boot/grub/這個目錄!
/dev 在Linux系統上,任何裝置與接口設備都是以文件的型態存在於這個目錄當中的。 你只要透過存取這個目錄底下的某個文件,就等於存取某個裝置 比較重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等
/etc 系統主要的配置文件幾乎都放置在這個目錄內,例如人員的帳號密碼文件、 各類服務的啓始檔等等。通常來講,這個目錄下的各文件屬性是可讓通常使用者查閱的, 可是隻有root有權力修改。FHS建議不要放置可執行文件(binary)在這個目錄中喔。比較重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目錄有:
  • /etc/init.d/:全部服務的預設啓動 script 都是放在這裏的,例如要啓動或者關閉 iptables 的話:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
  • /etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的配置文件目錄。
  • /etc/X11/:與 X Window 有關的各類配置文件都在這裏,尤爲是 xorg.conf 這個 X Server 的配置文件。
/home 這是系統默認的用戶家目錄(home directory)。在你新增一個通常使用者帳號時, 默認的用戶家目錄都會規範到這裏來。比較重要的是,家目錄有兩種代號: ~:表明目前這個用戶的家目錄,而 ~xiaoluo :則表明 xiaoluo 的家目錄!
/lib 系統的函式庫很是的多,而/lib放置的則是在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫而已。 什麼是函式庫呢?你能夠將他想成是『外掛』,某些指令必需要有這些『外掛』纔可以順利完成程序的執行之意。 尤爲重要的是/lib/modules/這個目錄, 由於該目錄會放置核心相關的模塊(驅動程序)!
/media media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦! 包括軟盤、光盤、DVD等等裝置都暫時掛載於此。常見的檔名有:/media/floppy, /media/cdrom等等。(咱們的光盤鏡像文件一般都是掛載在了media這個目錄下)
/mnt 若是你想要暫時掛載某些額外的裝置,通常建議妳能夠放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media以後,這個目錄就用來暫時掛載用了。
/opt 這個是給第三方合力軟件放置的目錄。 什麼是第三方合力軟件啊? 舉例來講,KDE這個桌面管理系統是一個獨立的計劃,不過他能夠安裝到Linux系統中,所以KDE的軟件就建議放置到此目錄下了。 另外,若是妳想要自行安裝額外的軟件(非本來的distribution提供的),那麼也可以將你的軟件安裝到這裏來。 不過,之前的Linux系統中,咱們仍是習慣放置在/usr/local目錄下呢!
/root 系統管理員(root)的家目錄。之因此放在這裏,是由於若是進入單人維護模式而僅掛載根目錄時, 該目錄就可以擁有root的家目錄,因此咱們會但願root的家目錄與根目錄放置在同一個分割槽中。
/sbin Linux有很是多指令是用來設定系統環境的,這些指令只有root纔可以利用來『設定』系統,其餘用戶最多隻能用來『查詢』而已。 放在/sbin底下的爲開機過程當中所須要的,裏面包括了開機、修復、還原系統所須要的指令。 至於某些服務器軟件程序,通常則放置到/usr/sbin/當中。至於本機自行安裝的軟件所產生的系統執行文件(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
/srv srv能夠視爲『service』的縮寫,是一些網絡服務啓動以後,這些服務所須要取用的數據目錄。 常見的服務例如WWW, FTP等等。舉例來講,WWW服務器須要的網頁數據就能夠放置在/srv/www/裏面。
/tmp 這是讓通常使用者或者是正在執行的程序暫時放置文件的地方。 這個目錄是任何人都可以存取的,因此你須要按期的清理一下。固然,重要數據不可放置在此目錄啊! 由於FHS甚至建議在開機時,應該要將/tmp下的數據都刪除唷
/lost+found 這個目錄是使用標準的ext2/ext3文件系統格式纔會產生的一個目錄,目的 在於當文件系統發生錯誤時, 將一些遺失的片斷放置到這個目錄下。這個目錄一般會在分割槽的最頂層存在, 例如你加裝一顆硬盤於/disk中,那在這個系統下就會自動產生一個這樣的目錄『/disk/lost+found』
/proc 這個目錄自己是一個『虛擬文件系統(virtual filesystem)』喔!他放置的數據都是在內存當中, 例如系統核心、行程信息(process)、周邊裝置的狀態及網絡狀態等等。由於這個目錄下的數據都是在內存當中, 因此自己不佔任何硬盤空間!比較重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
/sys 這個目錄其實跟/proc很是相似,也是一個虛擬的文件系統,主要也是記錄與核心相關的信息。 包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等等。這個目錄一樣不佔硬盤容量
 usr  由 FHS 規範的第二層內容,在 /usr 此目錄下,包含系統的主要程序、 圖形接口所須要的檔案、額外的函式庫、本機端所自行安裝的軟件,以及共享的目錄與文件等等, 均可以在這個目錄當中發現。事實上,他有點像是 Windows 操做系統當中的『Program files』與 『WinNT』這兩個目錄的結合!在此目錄下的重要次目錄有:
  • /usr/bin, /usr/sbin:通常身份用戶與系統管理員可執行的檔案放置目錄;
  • /usr/include:c/c++等程序語言的檔頭 (header) 與包含檔(include)放置處, 當咱們以 tarball 方式 (*.tar.gz 的方式安裝軟件) 安裝某些數據時,會使用到裏頭的許多包含檔喔!;
  • /usr/lib:各應用軟件的函式庫檔案放置目錄;
  • /usr/local: 本機端自行安裝的軟件默認放置的目錄。目前也適用於 /opt 目錄。 在你安裝完了 Linux 以後,基本上全部的配備你都有了,可是軟件老是能夠升級的, 例如你要升級你的 proxy 服務,則一般軟件默認的安裝地方就是在 /usr/local (local 是『當地』的意思),同時,安裝完畢以後所獲得的執行文件,爲了與系統原先的執行文件有分別, 所以升級後的執行檔一般擺在 /usr/local/bin 這個地方。
  • /usr/share:共享文件放置的目錄,例如底下兩個目錄:
  • /usr/share/doc:放置一些系統說明文件的地方,例如你安裝了 grub 了,那麼在該目錄底下找一找,就能夠查到 grub 的說明文件了!非常便利!
  • /usr/share/man:manpage 的文件檔案目錄;在使用 man 的時候,會去查詢的路徑!例如你使用 man ls 這個指令時,就會查出 /usr/share/man/man1/ls.1.gz 這個說明檔的內容!
  • /usr/src:Linux 系統相關的程序代碼放置目錄,例如 /usr/src/linux 爲核心原代碼!
  • /usr/X11R6:系統內的 X Window System 所需的執行檔幾乎都放在這!
 /var  這 個目錄也很重要,也是 FHS 規範的第二層目錄內容。他主要放置的是針對系統執行過程當中, 常態性變更的檔案放置的目錄。舉例來講,例如緩存文件 (cache) 或者是隨時變動的登陸文件 (log file) 都是放在這個目錄中的。此外,某些軟件執行過程當中會寫入的數據庫檔案, 例如 MySQL 數據庫,也都寫入在這個目錄中!底下的重要目錄有:
  • /var/cache:程序檔案在運做過程中的一些暫存盤;
  • /var/lib:程序自己執行的過程當中,須要使用到的數據文件放置的目錄, 舉例來講, locate 這個數據庫與 MySQL 及 rpm 等數據庫系統,都寫在這個目錄內。
  • /var/log:登陸文件放置的目錄。很重要啊!例如 /var/log/messages 就是總管全部登陸檔的一個檔案!
  • /var/lock:某些裝置具備一次性寫入的特性,例如 tab (磁帶機), 此時,爲了擔憂被其餘人干擾而破壞正在運做的動做,所以,會將該裝置 lock (鎖住)起來, 以肯定該裝置只能被單一個程序所使用!
  • /var/run:某些程序或者是服務啓動後,會將他們的 PID 放置在這個目錄下!
  • /var/spool: 是一些隊列數據存放的地方。舉例來講,主機收到電子郵件後, 就會放置到 /var/spool/mail 當中,若信件暫時發不出去,就會放置到 /var/spool/mqueue 目錄下, 使用者工做任務分配 (cron) 則是放置在 /var/spool/cron 當中!

特別重要的幾個目錄

  • /etc:這個目錄是系統配置文件放置的地方, 包括您系統上的帳號與密碼 (/etc/passwd, /etc/shadow),還有開機時所要用到的各項設定值 (/etc/sysconfig/*) ,還有各主要的網絡服務的配置文件,都在這個目錄中。 意思就是說,若是這個目錄底下的檔案被刪除或者是死掉了, 咱們就要花費大量的時間來恢復這個目錄的文件。所以,通常建議將這個目錄進行備份!
  • /usr/local:雖說目前已經將這個目錄的重要性移動到 /opt 了, 但我仍是是比較習慣將我本身開發或自行額外安裝的軟件放置在這個 /usr/local 目錄下。 若是你的 Linux 系統是多人共管的話,那麼,養成一個良好的操做習慣是有必要的。 那麼安裝軟件的習慣也要好好創建起來啊~不要隨意安裝呢! 統一放置在 /usr/local 或者是 /opt 底下吧!
  • /var: 這個目錄是在管理系統運做過程當中的重要中間暫存數據的,例如 /var/lib 與 /var/run 。 此外,最終的數據例如郵件 /var/spool/mail 也是放置在這個目錄中  另外,幾乎全部服務的登陸文件 (能夠記錄誰、何時、由哪裏登入主機、作了什麼事等等信息!) 都放在 /var/log 這個目錄下,所以,這個目錄也很重要。

4、相對路徑和絕對路徑:

絕對路徑:由根目錄 (/) 開始寫起的文件名或目錄名稱, 例如 /home/xiaoluo/.bashrc;

相對路徑:相對於目前路徑的文件名寫法(開頭不是 / 就屬於相對路徑的寫法)。 例如 ./home/xiaoluo 或 http://www.cnblogs.com/home/xiaoluo/ 等等。

特別注意這兩個特殊的目錄:

  • . :表明當前的目錄,也可使用 ./ 來表示;
  • .. :表明上一層目錄,也能夠 ../ 來表明。
相關文章
相關標籤/搜索