linux 基礎知識彙總

小程xy發表於2024-08-05

1、Linux檔案系統概述

Linux檔案系統是指作業系統用來控制檔案如何儲存和檢索的結構和邏輯。

檔案系統結構

  • 根目錄: /
    • Linux檔案系統從根目錄(/)開始,這是所有檔案和目錄的起點。
  • 目錄結構: Linux使用層次化目錄結構,每個目錄包含檔案和子目錄。
  • 掛載點: 各種檔案系統透過掛載點(mount point)整合到檔案系統的層次結構中。

檔案型別

  • 普通檔案: 包含資料的檔案(文字檔案、二進位制檔案等)。
  • 目錄檔案: 也稱為資料夾,包含其他檔案或子目錄。
  • 連結檔案: 指向另一個檔案的指標,可以是硬連結或軟連結。
  • 裝置檔案: 代表裝置的特殊檔案,分為字元裝置檔案和塊裝置檔案。
  • 管道檔案: 用於程序間通訊的檔案。

根目錄概述

在Linux作業系統中,根目錄(/)是整個檔案系統的起點。所有檔案和目錄都是從根目錄開始的,根目錄下包含了系統所需的各種子目錄,每個子目錄都有其特定的用途。

根目錄下的常用資料夾及其用途 (僅作了解)

  1. /bin:

    • 存放基本命令的二進位制檔案,如ls, cp, mv, bash等,系統啟動和單使用者模式下需要使用這些命令。
  2. /etc:

    • 存放系統配置檔案和子目錄,如網路配置檔案、使用者賬戶資訊、服務配置檔案等。
  3. /home:

    • 每個使用者的主目錄的預設位置,例如使用者user的主目錄為/home/user。使用者的個人檔案和設定通常存放在這裡。
  4. /lib:

    • 存放系統執行所需的共享庫檔案和核心模組。包括程式執行時依賴的共享庫檔案,如/lib/libc.so.6,標頭檔案等。
  5. /var:

    • 存放系統執行時需要改變的資料檔案,如日誌檔案、快取檔案、郵件佇列等。
  6. /dev:

    • 包含裝置檔案,用於訪問硬體裝置,例如磁碟、終端、音訊裝置等。每個裝置都表示為一個檔案,如/dev/sda表示第一個SCSI硬碟。
  7. /proc:

    • 虛擬檔案系統,包含系統程序和核心資訊的虛擬檔案。提供系統資訊,如記憶體、CPU等。
  8. /root:

    • 超級使用者(root)的主目錄。與普通使用者的主目錄不同,位於/home之外。
  9. /srv:

    • 存放服務(service)相關的資料,如HTTP伺服器的網頁檔案、FTP伺服器的資料等。
  10. /tmp:

    • 存放臨時檔案,系統重啟後該目錄下的檔案會被刪除。
  11. /usr:

    • 存放使用者應用程式和檔案,包括二進位制檔案、庫檔案、文件等。包含子目錄:
      • /usr/bin: 存放使用者命令的二進位制檔案。
      • /usr/lib: 存放使用者命令的庫檔案。
      • /usr/local: 存放本地安裝的軟體。

根目錄結構圖

下面是一張根目錄下常用資料夾的結構圖:

/
├── bin
├── etc
├── home
│   ├── user1
│   └── user2
├── lib
├── proc
├── root
├── dev
├── srv
├── tmp
├── usr
│   ├── bin
│   ├── lib
│   ├── local
│   │   ├── bin
│   │   └── lib
│   └── share
├── var
    ├── log
    ├── mail
    ├── cache
    └── tmp

2、路徑

路徑是指檔案或目錄在檔案系統中的位置。路徑分為絕對路徑和相對路徑。

絕對路徑

絕對路徑是從根目錄(/)開始,逐級指定檔案或目錄的路徑。絕對路徑總是唯一的,並且不依賴於當前工作目錄。

  • 示例: /home/user/docs/file.txt

在這個例子中,路徑從根目錄開始,依次經過homeuserdocs目錄,最後指向file.txt檔案。

相對路徑

相對路徑是從當前工作目錄開始,逐級指定檔案或目錄的路徑。相對路徑依賴於當前工作目錄,可以使用相對路徑操作檔案和目錄而不需要知道它們的絕對位置。

  • 示例:
    • 當前目錄: /home/user
    • 相對路徑: docs/file.txt

在這個例子中,相對路徑docs/file.txt指向的是/home/user/docs/file.txt檔案。

特殊目錄符號

  • .: 當前目錄
  • ..: 上一級目錄
  • ~: 當前使用者的主目錄(通常是/home/username

3、終端常用命令

1. ls - 列出目錄內容

用來顯示指定目錄下的檔案和子目錄。

  • ls:顯示當前目錄下的檔案和目錄。
  • ls -l:以長格式顯示檔案和目錄的詳細資訊,包括許可權、所有者、檔案大小和修改時間。
  • ls -a:顯示所有檔案和目錄,包括隱藏檔案(以.開頭的檔案)。
  • ls -lh:以長格式和人類可讀的格式顯示檔案大小(例如,KB、MB)。
  • ls -R:遞迴地列出所有子目錄中的檔案。

2. cd - 切換目錄

用於在不同的目錄之間導航。

  • cd:返回使用者的主目錄。
  • cd /path/to/directory:切換到指定目錄。
  • cd ..:返回上一級目錄。
  • cd -:返回到上一個工作目錄。

3. mkdir - 建立目錄

用來建立新目錄。

  • mkdir directory_name:建立一個名為directory_name的新目錄。
  • mkdir -p /path/to/directory:遞迴建立目錄路徑中的所有目錄(如果它們不存在)。

4. touch - 建立檔案

用於建立一個新的空檔案或更新現有檔案的時間戳。

  • touch filename:建立一個名為filename的新檔案,或者如果檔案已存在,則更新其修改時間。

5. pwd - 顯示當前目錄

顯示當前工作目錄的完整路徑。

  • pwd:顯示當前工作目錄的絕對路徑。

6. cat - 連線並顯示檔案

用於檢視檔案內容或將檔案內容連線輸出。

  • cat filename:顯示filename檔案的內容。
  • cat file1 > file2:將file1的內容複製到file2(覆蓋)。
  • cat file1 >> file2:將file1的內容追加到file2

7. cp - 複製檔案或目錄

用於複製檔案或目錄。

  • cp source destination:將檔案source複製到destination
  • cp -r source_directory destination_directory:遞迴複製目錄及其內容。
  • cp -i source destination:在覆蓋檔案時提示確認。

8. mv - 移動或重新命名檔案或目錄

用於移動檔案或目錄,或者重新命名它們。

  • mv source destination:將檔案或目錄source移動到destination,或者重新命名為destination
  • mv -i source destination:在覆蓋檔案時提示確認。

9. rm - 刪除檔案或目錄

用於刪除檔案或目錄。

  • rm filename:刪除filename檔案。
  • rm -r directory:遞迴刪除目錄及其內容。
  • rm -f filename:強制刪除檔案而不提示確認。
  • rm -rf directory:強制遞迴刪除目錄及其內容而不提示確認。

10. chmod - 更改檔案許可權

用於更改檔案或目錄的許可權。

許可權可以用兩種方式表示:符號表示法和八進位制表示法。

符號表示法
  • r:讀許可權(read)
  • w:寫許可權(write)
  • x:執行許可權(execute)

使用符號表示法時,許可權可以分配給使用者(u)、組(g)和其他人(o)。

八進位制表示法
  • 4:讀許可權(read)
  • 2:寫許可權(write)
  • 1:執行許可權(execute)
符號表示法示例
  1. 給檔案所有者新增讀、寫和執行許可權
 chmod u+rwx filename
  1. 給檔案組新增讀和執行許可權
chmod g+rx filename
  1. 給其他人新增讀許可權
chmod o+r filename
  1. 給所有使用者(使用者、組和其他人)新增讀、寫和執行許可權
chmod a+rwx filename
chmod +rwx filename # 預設是給所有的使用者
八進位制表示法示例
  1. 給檔案所有者、組和其他人新增讀、寫和執行許可權
chmod 777 filename

這裡的 777 表示使用者、組和其他人都擁有讀(4)+寫(2)+執行(1)= 7 的許可權。

  1. 給檔案所有者新增讀、寫和執行許可權,組和其他人新增讀和執行許可權
chmod 755 filename

這裡的 755 表示使用者擁有讀(4)+寫(2)+執行(1)= 7 的許可權,而組和其他人擁有讀(4)+執行(1)= 5 的許可權。

這裡的 -rwxrwxrwx 表示檔案的許可權。第一個字元表示檔案型別,後面的字元分為三組,每組三個字元,分別表示所有者、組和 其他人的許可權。

11. chown - 更改檔案所有者

用於更改檔案或目錄的所有者。

  • chown user:group filename:將檔案filename的所有者改為user,組改為group
  • chown -R user:group directory:遞迴更改目錄及其內容的所有者。

12. find - 查詢檔案

用於在目錄中搜尋檔案。

  • find /path -name filename:在/path目錄下查詢名為filename的檔案。
  • find /path -type d:在/path目錄下查詢所有目錄。
  • find /path -type f -name "*.txt":在/path目錄下查詢所有副檔名為.txt的檔案。

13. grep - 搜尋文字

用於在檔案中搜尋匹配的文字。

  • grep "pattern" filename:在filename中搜尋pattern字串。
  • grep -r "pattern" /path:遞迴搜尋目錄/path中的pattern字串。
  • grep -i "pattern" filename:在filename中搜尋pattern字串(忽略大小寫)。
  • grep -v "pattern" filename:在filename中顯示不包含pattern的行。

14. man - 顯示命令手冊頁

用於顯示命令的手冊頁,幫助瞭解命令的詳細用法。

  • man command:顯示command命令的手冊頁。
  • man -k keyword:搜尋包含keyword的所有手冊頁。

這些命令是Linux系統中最常用的一些基本命令,透過掌握這些命令,您可以有效地管理和操作檔案系統。

14. 重啟系統

sudo reboot

14. 關閉某個程序

  1. 首先,找出程序的 PID(程序ID)。例如:

    pgrep process_name
    
  2. 使用 kill 命令來終止程序。

    • 傳送預設的 SIGTERM 訊號(請求程序正常終止):

      kill PID
      
    • 如果程序沒有響應,可以傳送 SIGKILL 訊號(強制終止):

      kill -9 PID
      

相關文章