檔案管理
常用連結
系統目錄簡介
目錄名稱 | 應放置檔案內容(一定要知道的內容) |
---|---|
/bin | /bin 主要放置一般用戶可操作的指令 |
/sbin | 主要放置系統管理員可操作的指令這兩個資料目前都是連結檔,分別連結到 /usr/bin, /usr/sbin 當中 |
/boot | 與開機有關的檔案,包括核心檔案 / 開機管理程式與設定檔 |
/dev | 是 device 的縮寫,放置裝置檔,包括硬碟檔、鍵盤滑鼠終端機檔案等 |
/etc | 一堆系統設定檔,包括帳號、密碼與各式服務軟體的設定檔大多在此目錄內 |
/home | /home 是一般帳號的家目錄預設放置位置 |
/root | 則是系統管理員的家目錄了! |
/lib /lib64 | 系統函式庫與核心函式庫,其中 /lib 包含核心驅動程式,而其他軟體的函式庫若為 64 位元,則使用 /lib64 目錄內的函式庫檔案。 這兩個目錄目前也都是連結到 /usr/lib, /usr/lib64 內。 |
/proc | 將記憶體內的資料做成檔案類型,放置於這個目錄下,連同某些核心參數也能手動調整 |
/sys | 跟 /proc 類似,只是比較針對硬體相關的參數方面。 |
/usr | 是 usr 不是 user 喔!是 unix software resource 的縮寫,與 Unix 程式有關。從 CentOS 7 開始, 系統相關的所有軟體、服務等,均放置在這個目錄中了!因此不能與根目錄分離。 |
/var | 是一些變動資料,系統運作過程中的服務資料、暫存資料、登錄資料等等。 |
/tmp | 一些使用者操作過程中會啟用的暫存檔,例如 X 軟體相關的資料等等。 |
Centos 目錄結構
目錄與路徑
目錄簡介
目錄名稱 | 目錄意義 |
---|---|
/ | 根目錄,從根目錄寫起的檔名只會存在一個 |
~ | 使用者的家目錄,不同用戶的家目錄均不相同 |
. | 一個小數點,代表的是『本目錄』,亦即目前的工作目錄之意 |
.. | 兩個小數點,代表的是『上一層目錄』 |
- | 一個減號,代表『上一次的工作目錄』之意 |
cd (絕對路徑or相對路徑) 切換目錄
範例
切換到家目錄
cd #/home/pellok
cd ~
切換目錄到/tmp(絕對路徑):
cd /tmp
切換目錄到上層目錄
cd ..
切換目錄到上層目錄下的/tmp資料夾(相對路徑):
cd ../tmp
pwd 顯示目前目錄
選項與參數:
-P :顯示出確實的路徑,而非使用連結 (link) 路徑
範例
顯示現在目錄
pwd #/tmp
mkdir 創建目錄
選項與參數:
-m :設定檔案的權限喔!直接設定,不需要看預設權限 (umask)的臉色~ -p :幫助你直接將所需要的目錄(包含上層目錄)遞迴建立起來!
範例
創建/tmp/folder目錄
mkdir /tmp/folder
創建多層級目錄
mkdir -p test1/test2/test3/test4
rmdir 刪除目錄
選項與參數:
-p :連同『上層』『空的』目錄也一起刪除
範例
刪除目錄
rmdir /tmp/folder
刪除多層級空目錄,注意要都是空目錄才可以刪除
rmdir -p test1/test2/test3/test4
$PATH 預設路徑
範例
顯示預設路徑,搜尋可用指令時,會依據搜尋預設路徑是否有這個指令
echo $PATH
檔案與目錄管理
ls 查看檔案指令
選項與參數:
-a :全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來(常用) -d :僅列出目錄本身,而不是列出目錄內的檔案資料(常用) -h :將檔案容量以人類較易讀的方式(例如 GB, KB 等等)列出來; -l :長資料串列出,包含檔案的屬性與權限等等資料;(常用)
範例
列出所有檔案,包括隱長檔案:
ls -al
列出所有檔案,顯示檔案大小:
ls -ahl
touch 檔名 創建檔案
範例
創建file
touch file
cp 來源 目的 複製檔案指令
選項與參數:
-a :相當於 -dr --preserve=all 的意思,至於 dr 請參考下列說明;(常用) -d :若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身; -f :為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次; -i :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用) -p :連同檔案的屬性(權限、用戶、時間)一起複製過去,而非使用預設屬性(備份常用); -r :遞迴持續複製,用於目錄的複製行為;(常用) -u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才複製。
範例
複製/tmp/file 到當前目錄下:
cp /tmp/file .
複製/etc目錄到/tmp目錄下:
cp -r /etc /tmp
目標檔案與來源檔案有差異時,才會複製,常被用於『備份』的工作當中喔
cp -u ~/.bashrc /tmp/bashrc
rm 刪除檔案指令
選項與參數:
-f :就是 force 的意思,忽略不存在的檔案,不會出現警告訊息; -i :互動模式,在刪除前會詢問使用者是否動作 -r :遞迴刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!
範例
刪除/tmp/file檔案:
rm /tmp/file
刪除/tmp資料夾底下所有檔案(萬用字元*),包含目錄,注意很危險,救不回來
rm -rf /tmp/*
mv 來源 目的 移動檔案指令,更名
選項與參數:
-f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋; -i :若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋! -u :若目標檔案已經存在,且 source 比較新,才會更新 (update)
範例
更改檔案名稱:
mv file1 file2
把/tmp/file檔案移動到檔下目錄,並重新命名為file2
mv /tmp/file ./file2
檔案內容查閱
cat 印出檔案內容
選項與參數:
-n :列印出行號,連同空白行也會有行號,與 -b 的選項不同;
範例
印出/tmp/file檔案:
cat /tmp/file
印出/tmp/file檔案,並顯示行數:
cat -n /tmp/file
tail 印出檔案內容,最後幾行
選項與參數:
-n :後面接數字,代表顯示幾行的意思 -f :表示持續偵測後面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測
範例
印出/tmp/file檔案:
tail -n /tmp/file
印出/tmp/file檔案,並顯示行數:
tail -f /tmp/file
chown 使用者.群組 檔名 修改檔案擁有者
ls -al 顯示屬性
選項與參數:
-R 連同目錄下的所有檔案一起修改
範例
修改/tmp/file的擁有者和群組
chown pellok.pellok /tmp/file
修改/opt/floder資料夾下的所有檔案的擁有者和群組
chown -R pellok.pellok /opt/floder
chmod 權限 檔名 修改檔案權限
權限
選項與參數:
+ (r/w/x)增加權限 - (r/w/x)減少權限
r:4 、 w:2 、 x:1 owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others= --- = 0+0+0 = 0
範例
讓pellok.sh擁有可以執行的權限
chmod +x pellok.sh
修改pellok資料夾權限,擁有者可以讀寫執行、群組可以讀執行、其他可以讀執行
chmod 755 pellok
修改pellok.sh權限,擁有者可以讀寫、群組可以讀、其他可以讀
chmod 644 pellok.sh
which 搜尋執行檔
選項與參數:
-a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
範例
搜尋ifconfig指令:
which ifconfig
find 搜尋檔案
選項與參數:
- 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明-mtime n :n 為數字,意義為在 n 天之前的『一天之內』被更動過內容的檔案; -mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的檔案檔名; -mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的檔案檔名。 -newer file :file 為一個存在的檔案,列出比 file 還要新的檔案檔名
將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出
find / -mtime 0 #0 代表目前的時間
尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
find /etc -newer /etc/passwd
- 與使用者或群組名稱有關的參數:-uid n :n 為數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
/etc/passwd 裡面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
-gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在/etc/group,相關的介紹我們會第四篇說明~
-user name :name 為使用者帳號名稱喔!例如 dmtsai -group name:name 為群組名稱喔,例如 users ; -nouser :尋找檔案的擁有者不存在 /etc/passwd 的人! -nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!當你自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者, 這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
搜尋 /home 底下屬於 dmtsai 的檔案
find /home -user dmtsai
搜尋系統中不屬於任何人的檔案
find / -nouser
- 與檔案權限及名稱有關的參數:-name filename:搜尋檔案名稱為 filename 的檔案; -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 還要大的檔案,就是『 -size +50k 』
-type TYPE :搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f), 裝置檔案 (b, c),目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。
-perm mode :搜尋檔案權限『剛好等於』 mode 的檔案,這個 mode 為類似 chmod的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
-perm -mode :搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案,舉例來說,我們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744, 當一個檔案的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來, 因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
-perm /mode :搜尋檔案權限『包含任一 mode 的權限』的檔案,舉例來說,我們搜尋-rwxr-xr-x ,亦即 -perm /755 時,但一個檔案屬性為 -rw------- 也會被列出來,因為他有 -rw.... 的屬性存在!
找出檔名為 passwd 這個檔案
find / -name passwd
找出檔名包含了 passwd 這個關鍵字的檔案
find / -name "*passwd*"
找出 /run 目錄下,檔案類型為 Socket 的檔名有哪些?
find /run -type s
- 額外可進行的動作:-exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。 -print :將結果列印到螢幕上,這個動作是預設動作!
將上個範例找到的檔案使用 ls -l 列出來~
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
找出系統中,大於 1MB 的檔案
find / -size +1M
參考資料 Linux 指令列模式 Linux 檔案與目錄管理