Linux 從入門到跑路第一講 -- 程序員都應該知道的 Linux知識!

Linux 的前世今生

Linux 是一套免費使用和自由傳播的類 Unix 操作系統,是一個基於 POSIX 和 UNIX 的多用戶、多任務、支持多線程和多 CPU 的操作系統。Linux 能運行主要的 UNIX 工具軟件、應用程序和網絡協議。它支持 32 位和 64 位硬件。Linux 繼承了 Unix 以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操作系統。

Linux 系統最大的特色是源代碼完全公開,任何人都可以獲得甚至修改源代碼。

Linux 與 Windows 的恩怨情仇

Linux 與 Windows 都是當前市場上較爲火熱的操作系統,那它們有什麼區別呢?

  1. 界面:Windows 界面統一; Linux 圖形界面風格可能因爲發佈版的不同而不同,可能互不兼容
  2. 使用:Windows 使用簡單,容易入門,圖形化界面便於新手操作;Linux 圖形界面容易入門,文字界面則需要一定程度的學習
  3. 學習:Windows 系統構造複雜、變化頻繁,且知識、技能淘汰快,深入學習困難;Linux 系統構造簡單、穩定,且知識、技能傳承性好,深入學習相對容易
  4. 軟件:Windows 需要購買相應的授權;Linux 大部分軟件都可以自由獲取
  5. 安全:Linux 要比 Windows 更加安全
  6. 定製:Windows 是封閉的,而 Linux 是開源的

Linux 的組成

  1. 內核:內核是操作系統的核心。內核直接與硬件交互,並處理大部分較低層的任務,如內存管理、進程調度、文件管理等
  2. Shell:Shell 是一個處理用戶請求的工具,它負責解釋用戶輸入的命令,調用用戶希望使用的程序
  3. 命令和工具:日常工作中,你會用到很多系統命令和工具,如 cp、mv、cat 和 grep 等。在 Linux 系統中,有250多個命令,每個命令都有多個選項;第三方工具也有很多,他們也扮演着重要角色
  4. 文件和目錄:Linux 系統中所有的數據都被存儲到文件中,這些文件被分配到各個目錄,構成文件系統,其中 Linux 的目錄與 Windows 的文件夾是類似的概念

Linux 的一些特點

  1. 在 Linux 中,所有內容以文件形式保存,包括硬件
  2. Linux 嚴格區分大小寫
  3. Linux 不靠擴展名區分文件類型

Linux 的目錄結構

Linux 的所有數據都被保存在文件中,所有的文件被分配到不同的目錄,目錄是一種類似於樹的結構,稱爲文件系統。其中,文件系統採用級層式的樹狀目錄結構,在此結構中的最上層是根目錄 “/”,然後在此目錄下再創建其他的目錄。

文件類型

Linux 有三種基本的文件類型:

  1. 目錄:目錄可以包含普通文件和特殊文件,其相當於 Windows 中的文件夾
  2. 普通文件:普通文件是以字節爲單位的數據流,包括文本文件、源碼文件、可執行文件等。文本和二進制對 Linux 來說並無區別,對普通文件的解釋由處理該文件的應用程序進行
  3. 設備文件:Linux 與外部設備(例如光驅,打印機,終端)是通過一種被稱爲設備文件的文件來進行通信的。Linux 輸入輸出到外部設備的方式和輸入輸出到一個文件的方式是相同的,Linux 在與一個外部設備通訊前,這個設備必須首先要有一個設備文件存在。例如,每一個終端都有自己的設備文件來供 Linux 寫數據(出現在終端屏幕上)和讀取數據(用戶通過鍵盤輸入)。設備文件和普通文件不一樣,設備文件中並不包含任何數據

子目錄

根目錄 (/) 包含的子目錄如下:

  1. /bin:系統有很多放置執行檔的目錄,但 /bin 比較特殊。因爲 /bin 放置的是在單人維護模式下還能夠被操作的指令。在 /bin 底下的指令可以被 root 與一般帳號所使用,主要有:cat,chmod(修改權限),chown,date,mv,mkdir,cp,bash 等常用的指令
  2. /boot:主要放置開機會使用到的檔案,包括 Linux 核心檔案以及開機選單與開機所需設定檔等等
  3. /dev:在 Linux 系統上,任何裝置與周邊設備都是以檔案的型態存在於這個目錄當中。 只要通過存取這個目錄下的某個檔案,就等於存取某個裝置
  4. /etc:系統主要的設定檔幾乎都放置在這個目錄內,例如人員的帳號密碼檔、各種服務的啓始檔等等。 一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的,但是隻有 root 有權力修改。建議不要放置可執行檔 (binary) 在這個目錄中
  5. /home:系統預設的使用者家目錄 (home directory)。 在你新增一個一般使用者帳號時,預設的使用者家目錄都會規範到這裏來。比較重要的是,家目錄有兩種代號: ~ :代表當前使用者的家目錄,而 ~guest:則代表用戶名爲 guest 的家目錄
  6. /lib:系統的函式庫非常的多,而 /lib 放置的則是在開機時會用到的函式庫,以及在 /bin 或 /sbin 底下的指令會呼叫的函式庫而已 。什麼是函式庫呢?你可以將他想成是外掛,某些指令必須要有這些外掛才能夠順利完成程式的執行之意。 尤其重要的是 /lib/modules/ 這個目錄,因爲該目錄會放置核心相關的模組(驅動程式)
  7. /media:media 是媒體的英文,顧名思義,這個 /media 底下放置的就是可移除的裝置。 包括軟碟、光碟、DVD 等等裝置都暫時掛載於此
  8. /mnt:如果你想要暫時掛載某些額外的裝置,一般建議你可以放置到這個目錄中。在早時候,這個目錄的用途與 /media 相同。 只是有了 /media 之後,這個目錄就用來暫時掛載用了
  9. /opt:給第三方協力軟體放置的目錄 。 另外,如果你想要自行安裝額外的軟體,那麼也能夠將你的軟體安裝到這裏來。 不過,以前的 Linux 系統中,我們還是習慣放置在 /usr/local 目錄下
  10. /root:系統管理員 (root) 的家目錄。 之所以放在這裏,是因爲如果進入單人維護模式而僅掛載根目錄時,該目錄就能夠擁有 root 的家目錄,所以我們會希望 root 的家目錄與根目錄放置在同一個分區中
  11. /sbin:Linux 有非常多指令是用來設定系統環境的,這些指令只有 root 才能夠利用來設定系統,其他使用者最多隻能用來查詢而已。放在 /sbin 底下的爲開機過程中所需要的,裏面包括了開機、修復、還原系統所需要的指令
  12. /srv:srv 可以視爲 service 的縮寫,是一些網路服務啓動之後,這些服務所需要取用的資料目錄
  13. /tmp:讓一般使用者或者是正在執行的程序暫時放置檔案的地方。這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄。 因爲 FHS(一個對 Linux 做一些基本要求的機構) 甚至建議在開機時,應該要將 /tmp 下的資料都刪除

需要注意的是,由於根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分區則是在開機完成之後纔會持續的進行掛載的行爲。就是因爲如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分區去。那哪些目錄不可與根目錄分開呢?一共有以下五個:

  1. /etc:配置文件
  2. /bin:重要執行檔
  3. /dev:所需要的裝置文件
  4. /lib:執行檔所需的函式庫與核心所需的模塊
  5. /sbin:重要的系統執行文件

/usr

/usr 裏面放置的數據屬於可分享的與不可變動的 ,可以分享給局域網絡內的其他主機來使用。

/usr 是 Unix 操作系統軟件資源所放置的目錄,而不是指用戶的數據。FHS 建議所有軟件開發者,應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目錄。這是因爲所有系統默認的軟件都會放置到 /usr 底下,系統剛安裝完畢時,這個目錄會佔用最多的硬盤容量。

/var

如果 /usr 是安裝時會佔用較大硬盤容量的目錄,那麼 /var 就是在系統運作後纔會漸漸佔用硬盤容量的目錄。 因爲 /var 目錄主要針對常態性變動的文件,包括緩存、登錄檔以及某些軟件運作所產生的文件, 包括程序文件,或者例如 MySQL 數據庫的文件等等。

絕對路徑與相對路徑

我們可以將路徑定義爲絕對路徑與相對路徑兩種。

  1. 絕對路徑:由根目錄 (/) 開始寫起的文件名或目錄名稱, 例如 /home/dmtsai/.bashrc
  2. 相對路徑:相對於目前路徑的文件名寫法。 例如 ./home/dmtsai ,反正開頭不是 / 就屬於相對路徑的寫法

相對路徑是以你當前所在路徑的相對位置來表示的,舉個例子,當前在 /home 這個目錄下,想進入 /var/log 這個目錄,應該怎麼規劃路徑呢?

如果用絕對路徑來表示,直接 /var/log 就行了,但如果使用相對路徑表示,我們需要寫成 ../var/log,這是因爲 ./ 代表當前目錄,../ 代表上一層的目錄,我們現在在 /home 目錄下,需要先返回上一層目錄,再向 /var 移動。

參考:深入理解linux系統的目錄結構(總結的非常詳細)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章