1、Linux檔案系統概述
Linux檔案系統是指作業系統用來控制檔案如何儲存和檢索的結構和邏輯。
檔案系統結構
- 根目錄:
/
- Linux檔案系統從根目錄(
/
)開始,這是所有檔案和目錄的起點。
- Linux檔案系統從根目錄(
- 目錄結構: Linux使用層次化目錄結構,每個目錄包含檔案和子目錄。
- 掛載點: 各種檔案系統透過掛載點(mount point)整合到檔案系統的層次結構中。
檔案型別
- 普通檔案: 包含資料的檔案(文字檔案、二進位制檔案等)。
- 目錄檔案: 也稱為資料夾,包含其他檔案或子目錄。
- 連結檔案: 指向另一個檔案的指標,可以是硬連結或軟連結。
- 裝置檔案: 代表裝置的特殊檔案,分為字元裝置檔案和塊裝置檔案。
- 管道檔案: 用於程序間通訊的檔案。
根目錄概述
在Linux作業系統中,根目錄(/
)是整個檔案系統的起點。所有檔案和目錄都是從根目錄開始的,根目錄下包含了系統所需的各種子目錄,每個子目錄都有其特定的用途。
根目錄下的常用資料夾及其用途 (僅作了解)
-
/bin
:- 存放基本命令的二進位制檔案,如
ls
,cp
,mv
,bash
等,系統啟動和單使用者模式下需要使用這些命令。
- 存放基本命令的二進位制檔案,如
-
/etc
:- 存放系統配置檔案和子目錄,如網路配置檔案、使用者賬戶資訊、服務配置檔案等。
-
/home
:- 每個使用者的主目錄的預設位置,例如使用者
user
的主目錄為/home/user
。使用者的個人檔案和設定通常存放在這裡。
- 每個使用者的主目錄的預設位置,例如使用者
-
/lib
:- 存放系統執行所需的共享庫檔案和核心模組。包括程式執行時依賴的共享庫檔案,如
/lib/libc.so.6
,標頭檔案等。
- 存放系統執行所需的共享庫檔案和核心模組。包括程式執行時依賴的共享庫檔案,如
-
/var
:- 存放系統執行時需要改變的資料檔案,如日誌檔案、快取檔案、郵件佇列等。
-
/dev
:- 包含裝置檔案,用於訪問硬體裝置,例如磁碟、終端、音訊裝置等。每個裝置都表示為一個檔案,如
/dev/sda
表示第一個SCSI硬碟。
- 包含裝置檔案,用於訪問硬體裝置,例如磁碟、終端、音訊裝置等。每個裝置都表示為一個檔案,如
-
/proc
:- 虛擬檔案系統,包含系統程序和核心資訊的虛擬檔案。提供系統資訊,如記憶體、CPU等。
-
/root
:- 超級使用者(root)的主目錄。與普通使用者的主目錄不同,位於
/home
之外。
- 超級使用者(root)的主目錄。與普通使用者的主目錄不同,位於
-
/srv
:- 存放服務(service)相關的資料,如HTTP伺服器的網頁檔案、FTP伺服器的資料等。
-
/tmp
:- 存放臨時檔案,系統重啟後該目錄下的檔案會被刪除。
-
/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
在這個例子中,路徑從根目錄開始,依次經過home
、user
、docs
目錄,最後指向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)
符號表示法示例
- 給檔案所有者新增讀、寫和執行許可權
chmod u+rwx filename
- 給檔案組新增讀和執行許可權
chmod g+rx filename
- 給其他人新增讀許可權
chmod o+r filename
- 給所有使用者(使用者、組和其他人)新增讀、寫和執行許可權
chmod a+rwx filename
chmod +rwx filename # 預設是給所有的使用者
八進位制表示法示例
- 給檔案所有者、組和其他人新增讀、寫和執行許可權
chmod 777 filename
這裡的 777
表示使用者、組和其他人都擁有讀(4)+寫(2)+執行(1)= 7 的許可權。
- 給檔案所有者新增讀、寫和執行許可權,組和其他人新增讀和執行許可權
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. 關閉某個程序
-
首先,找出程序的 PID(程序ID)。例如:
pgrep process_name
-
使用
kill
命令來終止程序。-
傳送預設的
SIGTERM
訊號(請求程序正常終止):kill PID
-
如果程序沒有響應,可以傳送
SIGKILL
訊號(強制終止):kill -9 PID
-