2017年8月2日 星期三

Linux Git Book 檔案管理

檔案管理

常用連結

系統目錄簡介

目錄名稱應放置檔案內容(一定要知道的內容)
/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 搜尋檔案

選項與參數:

  1. 與時間有關的選項:共有 -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
  1. 與使用者或群組名稱有關的參數:
    -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
  1. 與檔案權限及名稱有關的參數:
    -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
  1. 額外可進行的動作:
    -exec command :command 為其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。 -print :將結果列印到螢幕上,這個動作是預設動作!
將上個範例找到的檔案使用 ls -l 列出來~
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
找出系統中,大於 1MB 的檔案
find / -size +1M

沒有留言:

張貼留言