1. 程式人生 > >近期學習Linux的總結

近期學習Linux的總結

Linux 基礎 基本使用

Linux系統安裝中遇到的問題
  • 時區問題

    在進行到選擇時區的時候,下面有使用utc時鐘這個不要選,勾選之後時間其實是按格林威治時間算的,我們現在處於東8區,因此勾了之後時間會差8個小時

  • 硬盤分區問題

    關於Linux分區規範中有swap分區應該是內存的兩倍,當然如果內存特別大的話則沒有必要遵循這個規範

Linux基本操作

  • 終端類型
    1. 設備終端
    2. 物理終端
    3. 虛擬終端
    4. 偽終端
    5. 串行終端
    6. 圖形終端
  • who whoami w命令的對比
    # who
    技術分享圖片
    # whoami
    技術分享圖片
    # w
    技術分享圖片

  • \r和\n的區別

    從專業術語上來說\r叫回車\n叫換行

    • \r:將光標移動到該行的行首,這樣在後面輸出的內容將會覆蓋前面的內容比如下面這個例子
      #echo -e "abc\rd"
      這時屏幕上顯示的內容為dbc,屏幕輸出了abc後輸出\r,\r將光標移動到該行行首繼續輸出這時輸出d將a覆蓋了
    • \n:換行符,將光標移動到下一行的開頭繼續輸出
      在類Unix系統上換行只需要\n就夠了,而在Windows上換行必須使用\r\n,這也就是我們看到在類Unix系統上寫的代碼拿到Windows上用記事本打開的時候為什麽格式會亂的原因,當然有時用記事本寫的文本拿到類Unix系統上則會在每一行後面都會有^M。

文件管理相關

Linux中目錄的組織形式是單根的倒置樹狀結構,在Linux的文件系統例如ext4中大小寫是敏感的


  • FHS文件分層標準

    Linux有一個LSB(Linux Standards Base)的組織定義的一個FHS(Filesystem Hierarchy Standard)文件系統層級標準,該標準主要定義了在Linux系統文件、工具和程序的存放位置和系統中的目錄層次結構
    另外其實FHS也大大的促進了LSB組織的誕生,FHS是LSB組織定義的第一個標準
    該標準其實主要定義的是Linux系統中根目錄下都有哪些目錄,已經各種文件類型的顏色等等,當然還可以登錄其官方網站下載整個標準的文檔。

  • 文件名通配符

    *:匹配任意個任意字符
    ?:匹配單個任意字符
    ~:當前用戶家目錄
    ~user_name:某個用戶的家目錄
    ~+:當前工作目錄

    ~-:表示剛才離開的目錄,-只能在cd中使用

  • 文件在硬盤上的存儲原理:

    首先,每個分區上的每個文件都有與之對應的inode號,通過該inode號可以在inode table中找到與之對應的該文件的元數據,元數據其實就是文件的屬性信息,比如所有者,權限,修改日期等,當然還有最重要的就是指向文件數據的指針,如果文件足夠小,則指向了文件的數據位置,如果比較大則會指向存放文件塊位置信息的地方,當然如果塊位置的區域放滿了仍然放不下所有的塊位置信息,則這個空間中仍然存放的是塊位置的信息。
    目錄的數據區域中存放的是該目錄下文件名和inode的對應信息,系統每存放一個文件就會為其分配一個在該分區中唯一的inode,這樣軟鏈接和硬鏈接的原理就很清楚了:
    硬鏈接其實是在某個目錄上創建了一個文件名和原文件inode號一樣的一個數據,這樣他們的屬性信息也就一樣了,當然由此看來在刪除文件的時候是會判斷文件的硬鏈接鏈接個數的,如果刪了這個文件後硬鏈接變成0了則將對應的數據區的塊標記為可以覆蓋狀態,當然創建一個目錄後其硬鏈接個數就為2是因為該目錄本身就是一個硬鏈接另外目錄中有一個‘.’的目錄再在創建的目錄中創建一個新目錄後該目錄的硬鏈接還會加1是因為這個新創建的目錄中的".."其實指向了該目錄,
    註意:以上這一段內容是個人幫助理解記憶寫下的,主要思路應該沒有問題,偶爾某個細節可能表達的不是特別準確

  • 軟鏈接和硬鏈接的區別

    • 軟鏈接:
      • 刪除原文件鏈接文件會受影響
      • 軟鏈接文件本身有自己的屬性信息
      • 軟鏈接的在磁盤上的數據區存放的是要指向文件的路徑
      • 軟鏈接可以跨分區創建
      • 軟鏈接可以指向目錄或者文件
      • 創建軟鏈接不會增加文件的鏈接數
      • 軟鏈接的文件類型是鏈接文件
      • 軟鏈接的inode號不同
      • 軟鏈接原文件的相對路徑相對的是鏈接文件所在的目錄
    • 硬鏈接:
      • 刪除原文件鏈接文件不會受影響
      • 所有直接或間接指向原文件的硬鏈接的屬性信息都一樣
      • 硬鏈接在磁盤上的數據區都是文件內容本身
      • 硬鏈接不可以跨分區創建
      • 硬鏈接只能指向文件
      • 創建硬鏈接會增加文件的鏈接數
      • 硬鏈接的文件類型還是普通文件
      • 硬鏈接的inode號相同
      • 硬鏈接原文件還是相對於自己
  • 重定向相關

    如果重定向有多個那麽系統會先執行最後一個重定向再執行前一個,依次倒退執行,而且正常情況下某一次標準輸出,輸出一次後就沒有數據了,第二次還要求輸出的話只能是空

示例:

# cmd > log 2>&1
先將錯誤輸出重定向到標準輸出中然後將標準輸出重定向到log文件中,所以屏幕無顯示,錯誤內容在文件中
# cmd 2>&1 >log
先將正確內容輸入到log文件中 然後將錯誤輸出輸出到標準輸出中,標準輸出中無內容
# cmd &>log
把所有的內容輸出到log中,log中應該只有錯誤信息
# cmd 2>log >&2
把標準輸出重定向到錯誤輸出中,然後把錯誤輸出輸出到log文件中,log文件中為錯誤信息
技術分享圖片

近期學習Linux的總結