天天看點

Linux學習筆記(第零篇)Linux檔案系統及Shell

​​Linux學習筆記(第零篇)計算機基礎​​Linux學習筆記(第零篇)Linux檔案系統及Shell

Linux學習筆記(第一篇)零散指令

Linux學習筆記(第二篇)目錄操作指令

Linux學習筆記(第三篇)檔案操作指令

Linux學習筆記(第四篇)檔案内容操作指令+正規表達式+重定向和管道

Linux學習筆記(第五篇)歸檔及壓縮指令

Linux學習筆記(第六篇)Vi編輯器

Linux學習筆記(第七篇)使用者群組管理

Linux學習筆記(第八篇)磁盤與檔案系統管理

Linux學習筆記(第九篇)邏輯卷管理(LVM)

Linux學習筆記(第十篇)程序管理

Linux學習筆記(第十一篇)服務管理

Linux學習筆記(第十二篇)網絡基礎

Linux學習筆記(第十三篇)通信管理

Linux學習筆記(第十四篇)管理常用網絡服務

Linux學習筆記(第十五篇)常用網絡伺服器配置

Part0–Linux檔案系統

一.Linux中常見的檔案類型

1.普通檔案

  • 一個字元序列,如代碼程式、資料、文本、圖像等。
  • 在Linux中,這些檔案沒有不同,被同等對待。
  • 隻有當需要時,才由相應的使用或處理檔案的應用程式将檔案含有添加到該檔案上。
  • 例如,對Linux而言,一個C程式和一個HTML檔案沒有差異,檔案分别由C編譯器、Web浏覽器進行處理。

2.裝置檔案

  • 指一些可以通路的硬體裝置。
  • Linux将I/O裝置視同檔案對待,對每個裝置對應一個檔案。
  • 裝置檔案并不是資訊的存儲體。它們隻不過時為了I/O裝置的讀寫提供了友善的管道,并提供使用者與檔案系統相同的存取頁面。
  • 裝置檔案分為兩類:字元裝置檔案(如鍵盤)和塊裝置檔案(如硬碟)。
  • 一般放在/dev目錄下,如/dev/tty是終端的特别檔案。
  • /dev目錄位每種裝置準備了至少一個檔案,例如hda(硬碟驅動器a),lp0(行式列印機0)。
  • 由于Linux作業系統是I/O硬體接口與普通檔案的接口一緻,使用者就不必知道任何有關I/O裝置的細節。

3.目錄檔案

  • Linux中,目錄本身也是一種檔案,可以按照檔案進行管理。
  • 目錄檔案包含其它目錄和檔案。
  • 目錄檔案由許多特殊格式的記錄組成。
  • 每條記錄由索引節點号和檔案名組成。
  • 索引節點包含檔案的基本資訊,例如大小、屬性等。

二、Linux檔案的表示和存儲

1.檔案的表示

  • Linux系統将每個檔案名與一個數字(檔案的索引節點号,或者稱作i節點号)聯系起來。
  • 每個檔案對應一個唯一的索引節點。
  • 清單中每個i節點,存儲檔案屬性。
  • 所有索引節點在磁盤上組成索引節點清單。

2.檔案系統的存儲結構

  • Linux系統把可以作為一個存儲媒體(如硬碟、軟碟和CD光牒等)上的存儲空間劃分成一個至多個區域。
  • 每個區域都可以像獨立的實體裝置一樣單獨進行管理和資料存取,這樣的存儲區域,稱作邏輯區域。
  • 在邏輯裝置上按照一定的格式進行劃分,就構成了檔案系統。
  • 【檔案系統的磁盤被分成四個部分】

    (此部分的圖檔及部分内容參考自

    ​​​ http://blog.chinaunix.net/uid-15243833-id-122099.html​​​ https://docs.oracle.com/cd/E19253-01/819-7062/auto151/index.html)

    (1)引導塊:引導塊儲存引導程式,系統啟動時激活這段特殊程式。引導塊占用第0号實體塊,不屬于檔案系統管轄,如果系統中有多個檔案系統,隻有根檔案系統才有引導程式放在引導塊中,其餘檔案系統都不使用引導塊。如果檔案系統不用于引導,則将引導塊保留為空。

    (2)超級塊:包含磁盤自身的有關資訊。像磁盤的總塊數、空閑塊數、塊的大小、已使用的塊數等。

    (3)i-節點清單塊:儲存i節點的清單。每個檔案都有一個屬性,檔案的大小,檔案所有者,和建立時間等,這些性質被紀錄在一個稱為i-節點的結構中。所有i-節點都有着相同的大小,并且i-節點表是這些結構的一個清單,檔案系統中的每個檔案在該表中都有一個i-節點。

    (4)檔案和目錄塊:即資料存儲區,存放資料,以塊為機關存取。檔案的内容儲存在這個區域,磁盤上所有的塊的大小都一樣,如果檔案包含了超過一個塊的内容,則檔案内容會存放在多個磁盤塊中,一個較大的檔案很容易分布上千個獨立的磁盤塊中。

三、Linux的目錄結構

1.Linux檔案系統是按照層次結構組織的。

2.主要目錄介紹:

  • 根目錄(/):最高層目錄為根目錄,其它所有目錄直接或間接從它分支。
  • 主目錄(~ ):系統管理者在系統上建立所有使用者的賬号,并為每個使用者賬号配置設定一個特定的目錄,稱為主目錄,又稱起始 / 登入目錄。
  • 工作目錄(.):某個時刻正在使用的目錄。
  • 父目錄(..):表示目前工作目錄的父目錄。

3.路徑:

  • 在檔案系統中路徑名用來定位檔案。
  • 從根目錄開始,經過所有中間目錄,直到檔案,就形成了該檔案的路徑名。
  • 絕對路徑:從根目錄到該檔案的路徑,路徑名的開頭有斜杠(/)。(例子:目前工作目錄為usr,那麼david目錄下的myfirst檔案的絕對路徑名為/usr/david/myfirst)
  • 相對路徑:從目前目錄到該檔案的路徑,路徑名開頭沒有斜杠。(例子:目前工作目錄為usr,那麼david目錄下的myfirst檔案的相對路徑名為david/myfirst)

四、Linux的檔案名和目錄名

1.檔案名相關注意事項:

  • 檔案名由字元和數字組成,唯一的例外是根目錄(/),其它檔案不能使用這個名字。
  • 建議不要使用不可列印的字元、空白以及Shell字元。
  • Linux中區分大小寫字母。
  • Linux的擴充名可以使用一個及以上的點。

2.檔案名字尾相關注意事項:

  • 檔案擴充名可以幫助使用者進一步描述和分類檔案的内容。大多數情況下可選,但某些程式設計語言的編譯器依賴擴充名(如C語言)。
  • Windows作業系統根據檔案的擴充名來區分檔案類型,Windows下能被執行的檔案擴充名通常為.com .exe .bat等,而Linux通過檢視檔案内的頭部資訊來确定檔案的類型,與檔案的名字無關,隻要權限中有x(可執行)的話,就代表這個檔案能被執行。
  • 對于Linux作業系統而言,test檔案和test.c檔案都是text檔案,類型上無差別,對于編譯程式gcc來說就不同了,gcc編譯器程式是根據檔案的擴充名來判斷檔案類型的,是以使用gcc編譯test檔案就會提示錯誤資訊。

3.重要的目錄:

  • /:根目錄,最高層的目錄,其它所有目錄都是它的分支。
  • /bin:bin:代表binaries,該目錄存放許多基本的Linux程式檔案,這些檔案都是可執行檔案。如ls,mkdir等。
  • /usr/bin:存放面向使用者的Linux程式。
  • /usr/sbin:存放系統管理檔案。
  • /sbin:存放系統檔案。如管理工具,應用軟體和通用的根使用者權限指令等内容。包括系統管理工具,如fdisk,mkfs等,以及網絡指令,如ifconfig,route等。
  • /dev:存放裝置檔案。如sda,ip0。
  • /etc:該目錄以及其下的子目錄存放許多Linux配置檔案,這些檔案通常都是文本檔案,可以進行編輯,進而修改系統配置。例如/etc/passwd,該檔案為系統每個使用者記錄了一行資訊,描述了使用者的情況。
  • /lib、/usr/lib:存放所有程式需要的程式庫。
  • /lost+found:包含所有與其它目錄沒有連接配接的檔案。這個目錄平時是空的,當系統不正常關機後,這裡就成了一些無家可歸的檔案的避難所。
  • /home:有些系統是/users,用來組織使用者起始目錄。
  • /var/spool/mail:接收并且儲存從外面發來的電子郵件。
  • /tmp:存放不同程式執行時産生的臨時檔案,預設所有使用者都可以讀取,寫入和執行檔案。系統啟動時清除。

五、Shell相關知識:

1.Shell的作用:

  • Shell僅僅是個程式,負責使用者與Linux系統之間的互動。由外到内,自頂向下的關系為:使用者->Shell->核心->硬體。
  • 使用者登入後,系統自動啟動Shell程式。
  • 使用者每次輸入完一個指令并按回車後,指令行被傳到Shell,Shell先對指令進行分析,然後執行。
  • 大多數Linux系統采用/bin/bash作為預設登入Shell,/etc/shells檔案記錄了系統支援的有效登入Shell,可用cat指令進行檢視。
  • Shell指令:有些Linux指令是Shell程式的一部分,稱為内部指令或Shell指令,内部指令由Shell程式識别并在Shell内部執行。
  • 系統工具程式:大部分Linux指令是可執行程式(指令名和程式名一樣),這些可執行程式由Shell查找、加載并執行。Shell從系統變量PATH設定的路徑中查找可執行程式,這些可執行程式通常被稱為系統工具。
  • 通常,把Shell指令和系統工具統稱為指令。

繼續閱讀