您好,登錄后才能下訂單哦!
? ? Linux使用樹狀的目錄結構組織文件,簡單來說就是在一個目錄中放置子目錄和文件,子目錄中可以繼續放置子目錄和文件,以此類推,形似一棵樹的分支。Linux的這種文件結構的起始點為“根目錄”,就是“/”,是一切文件的起點。FHS(文件系統層次標準)定義了在根目錄下的主要目錄和每個目錄內應該放置的文件。請注意在Linux中,“文件”是一種很寬泛的概念,一切皆文件。所以不管是目錄還是設備,都是一種文件,或者說,只要是在系統中可以看到的都是文件。
????一、文件類型
? ? 用戶可以通過“ls -al?目錄”顯示文件類型。通過ls -al?顯示出來每行每個文件或者目錄信息的第一字符,來判斷文件類型。
????第一字符為[d],代表是一個目錄。
????第一字符為[-],代表是一個文件。
????名稱為 . ,代表當前目錄;為..,代表當前目錄的上一級目錄(這和Windows相同)
? ? 文件名以.開始,如下圖中的.bash_logout代表是一個隱藏文件或目錄。
?????
????相比Windows下的文件,Linux的文件類型,除了常規文件(純文本文件、二進制文件、數據文件等)外,還有以下文件:
????輸入命令 ls -al /dev (顯示/dev下的所有文件的詳細信息)
? ? 區塊設備文件:第一個屬性字符為[b],一般是代表一些存儲設備。如sda代表第一塊SATA或者SCSI硬盤,hda代表第一塊IDE硬盤。
????字符設備文件:第一個屬性字符為[c],一般是一些串行端口的接口設備,如鼠標鍵盤。
? ? 鏈接文件:第一個屬性字符為[l]的文件,它又區分為軟鏈接和硬鏈接。
? ? ????????
????
????數據接口文件:第一屬性字符為[s],這種類型的文件通常被用在網絡上的交換數據。
? ? (輸入命令 ls -al /run | grep? ^s?
????
????數據輸送文件(FIFO,pipe):一種特殊的文件類型,主要用來解決多個程序同時讀寫一個文件所造成的錯誤問題,FIFO是先進先出(first in first out)的縮寫,即管道。
????2、文件擴展名
????基本上,Linux沒有所謂擴展名的概念,這一點和Windows有很大差別。在Windows下,.com .exe .bat?通常代表可執行文件,還有.dll等類型文件。但在Linux下,一個文件是否能被執行,它主要由兩方面決定:一是它的內容是否是可執行代碼,二是用戶否具有可執行權限。跟它是否有擴展名、擴展名為什么無關。
? ? 當然Linux也通過一些特定的擴展名來區分一些特殊類型的文件,
????*.sh:代表腳本或批處理文件
????*.Z,*.tar *.tar.gz *.zip *.tga:代表經過打包的壓縮文件
? ? *.html *.php:網頁文件。
????3、文件名的限制
? ? 單一文件或目錄最大容許文件名為255個字符,英文最大255個字符長度,漢字大約128個之間。
? ? 由于有些特殊字符在命令模式有特殊意義,所以* ? < . ; & ! { } | \ ' '" ` ( ) { }?等字符不能在文件名中存在。
????4、目錄配置依據(FHS)
????由于Linux開源,為了保證規范,Linux逐漸形成了的軟件開發商、操作系統制作者、以及想要維護系統的使者,都能夠遵循的目標配置依據FHS(文件系統層次化標準).
????事實上,FHS針對目錄樹架構僅定義出三層目錄下面應該放置什么數據而已,分別是:
?????/ (root, 根目錄):與開機系統有關;
?????根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機/還原/系統修復等動作有關。 由于系統開機時需要特定的開機軟件、核心文件、開機所需程序、函數庫等等文件數據,若系統出現錯誤時,根目錄也必須要包含有能夠修復文件系統的程序才行。 因為根目錄是這么的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分區內, 因為越大的分區你會放入越多的數據,如此一來根目錄所在分區就可能會有較多發生錯誤的機會。因此FHS標準建議:根目錄(/)所在分區應該越小越好, 且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好。 如此不但性能較佳,根目錄所在的文件系統也較不容易發生問題。
? ? ?/usr (unix software resource):與軟件安裝/執行有關;
?????/var (variable):與系統運行過程有關。
? ? 根目錄(/)FHS要求必須要存在的目錄
????
????根目錄(/)FHS建議可以存在的目錄
????/home:是系統默認的使用者主文件夾(home directory)。在用戶新增一個一般使用者帳號時, 默認的使用者主文件夾都會規范到這里來。比較重要的是,主文件夾有兩種代號喔:~:代表目前這個使用者的主文件夾 ~fromheart :則代表fromheart 的主文件夾。
????/lib<qual>:用來存放與 /lib 不同的格式的二進制函數庫,例如支持 64 位的 /lib64 函數庫等
? ? /root:系統管理員(root)的主文件夾。之所以放在這里,是因為如果進入單用戶維護模式而僅掛載根目錄時,該目錄就能夠擁有root的主文件夾,所以用戶會希望root的主文件夾與根目錄放置在同一個分區中。
????
????/usr/下FHS要求必須要存在的目錄
????/usr/bin/:所有一般用戶能夠使用的指令都放在這里!目前新的 CentOS 7 已經將全部的使用者指令放置于此,而使用鏈接文件的方式將 /bin 鏈接至此!也就是說, /usr/bin 與 /bin 是一模一樣了!另外,FHS 要求在此目錄下不應該有子目錄。
????/usr/lib/: 基本上,與 /lib 功能相同,所以 /lib 就是鏈接到此目錄中的。
????/usr/local/:系統管理員在本機自行安裝自己下載的軟件(非distribution默認提供者),建議安裝到此目錄, 這樣會比較便于管理。
????/usr/sbin/:非系統正常運行所需要的系統指令。最常見的就是某些網絡服務器軟件的服務指令(daemon),不過基本功能與 /sbin 也差不多, 因此目前 /sbin 就是鏈接到此目錄中的。
????/usr/share/:主要放置只讀架構的數據文件,當然也包括共享文件。在這個目錄下放置的數據幾乎是不分硬件架構均可讀取的數據, 因為幾乎都是文字文件,在此目錄下常見的還有這些次目錄:/usr/share/man:線上說明文檔;/usr/share/doc:軟件雜項的文件說明 /usr/share/zoneinfo:與時區有關的時區文件
????
????/usr下FHS建議可以存在的目錄
????/usr/games/: 與游戲比較相關的數據放置處。
????/usr/include/:c/c++等程序語言的文件。
????/usr/libexec/:某些不被一般使用者慣用的可執行文件或腳本(script)等等,都會放置在此目錄中。例如大部分的 X 窗口下面的操作指令, 很多都是放在此目錄下的。
????/usr/lib<qual>/: 與 /lib<qual>/功能相同,因此目前 /lib<qual> 就是鏈接到此目錄中。
????/usr/src/:一般源代碼建議放置到這里。至于核心源代碼則建議放置到/usr/src/linux/目錄下。
????/var/下FHS要求必須要存在的目錄
????/var/cache/: 應用程序本身運行過程中會產生的一些暫存盤;
????/var/lib/:程序本身執行的過程中,需要使用到的數據文件放置的目錄。在此目錄下各自的軟件應該要有各自的目錄。 舉例來說,MySQL的數據庫放置到/var/lib/mysql/而rpm的數據庫則放到/var/lib/rpm去!
????/var/lock/:某些設備或者是文件資源一次只能被一個應用程序所使用,如果同時有兩個程序使用該設備時, 就可能產生一些錯誤的狀況,因此就得要將該設備上鎖(lock),以確保該設備只會給單一軟件所使用。????????
????/var/log/:日志文件目錄,里面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登陸者的信息)等。
????/var/mail/:放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為鏈接文件。
????/var/run/:某些程序或者是服務啟動后,會將他們的PID放置在這個目錄下。與 /run 相同,這個目錄鏈接到 /run去了!
????/var/spool/:這個目錄通常放置一些隊列數據。
? ? ?
????其他重要目錄
? ???/lost+found:這個目錄是使用標準的ext2/ext3/ext4文件系統格式才會產生的一個目錄,目的在于當文件系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 文件系統的話,就不會存在這個目錄了!
????/proc:這個目錄本身是一個“虛擬文件系統(virtual filesystem)”。他放置的數據都是在內存當中, 例如系統核心、行程信息(process)、周邊設備的狀態及網絡狀態等等。因為這個目錄下的數據都是在內存當中, 所以本身不占任何硬盤空間啊!比較重要的文件例如:/proc/cpuinfo, /proc/dma,/proc/interrupts, /proc/ioports, /proc/net/* 等等。
????/sys:這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統,主要也是記錄核心與系統硬件信息較相關的信息。 包括目前已載入的核心模塊與核心偵測到的硬件設備信息等等。這個目錄同樣不占硬盤容量。
? ? ?
????
? ?
?? ?? ? ????
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。