目錄
Lunix文件與目錄管理
1 目錄與路徑
1.1 目錄的相關操作
特殊目錄:
常見的處理目錄的指令
cd (change directory)變換目錄
mkdir 建立一個新的目錄
mkdir [-mp] 目錄名稱
選項與參數:
-m 配置目錄權限 mkdir -m 744 test
-p 幫助你直接將所需要的目錄(包含上層目錄)遞歸建立起來
pwd 顯示當前目錄
pwd [-P]
選項與參數:
-P 顯示出確實的路徑,而非使用鏈接 (link) 路徑
rmdir 刪除一個空的目錄
rmdir [-p] 目錄名稱
選項與參數:
-p 連同上層空的目錄也一併刪除
1.2 文件路徑變量$PATH
系統會依照 PATH 的設定去每個 PATH 定義的目錄下搜尋文件名爲 ls 的可執行文件,如果在 PATH 定義的目錄中含有多個文件名爲 ls 的可執行文件,那麼先搜尋到的同名指令先被執行。
設置PATH: path = "${path}:/root"
2.0 文件與目錄管理
2.1 文件與目錄的檢視 ls
ls [options] 文件名或者目錄名稱
選項與參數:
-a :全部的文件,連同隱藏檔( 開頭爲 . 的文件) 一起列出來(常用)
-A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
-d :僅列出目錄本身,而不是列出目錄內的文件數據(常用)
-f :直接列出結果,而不進行排序 (ls 預設會以檔名排序!)
-F :根據文件、目錄等信息,給予附加數據結構,例如: *:代表可執行文件; /:代表目錄; =:代表 socket 文件; |:代表 FIFO 文件;
-h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來;
-i :列出 inode 號碼;
-l :長數據串行出,包含文件的屬性與權限等等數據;(常用)
-n :列出 UID 與 GID 而非使用者與羣組的名稱
-r :將排序結果反向輸出,例如:原本檔名由小到大,反向則爲由大到小-
R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來
-S :以文件容量大小排序,而不是用檔名排序;
-t :依時間排序,而不是用檔名。
--color=never :不要依據文件特性給予顏色顯示;-
-color=always :顯示顏色
--color=auto :讓系統自行依據設定來判斷是否給予顏色
--full-time :以完整時間模式 (包含年、月、日、時、分) 輸出
--time={atime,ctime} :出 access 時間或改變權限屬性時間 (ctime),而非內容變更時間 (modification time)
2.2 複製、刪除與移動
拷貝文件或目錄
cp [options] sourceFile targetFile
cp [options] sourceFile sourceFile sourceFile sourceFile ... targetFile
選項與參數:
-a :相當於 -d、-p、-r 選項的集合;(常用)
-d :若來源文件爲鏈接文件的屬性(link file),則複製鏈接文件屬性而非文件本身;
-f :爲強制(force)的意思,若目標文件已經存在且無法開啓,則移除後再嘗試一次;
-i :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
-l :進行硬式連結(hard link)的連結檔建立,而非複製文件本身;
-p :連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用);
-r :遞歸持續複製,用於目錄的複製行爲;(常用)
-s :複製成爲符號鏈接文件 (symbolic link),亦即『快捷方式』文件;
-u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才複製.
我們如果去複製別人的數據 時, 總是希望複製到的數據最後是我們自己的,所以,在預設的條件中, cp 的來源檔與目的檔的權限是不同的,目的檔的擁有者通常會是指令操作者本身。由於具有這個特性,因此當我們在進行備份的時候,某些需要特別注意的特殊權限文件, 例如密碼文件 (/etc/shadow) 以及一些配置文件,就不能直接以 cp 來複制,而必須要加上 -a 或者是 -p 等等.
可以完整複製文件權限的選項纔行!另外,如果你想要複製文件給其他的使用者, 也必須要注意到文件的權限(包含讀、寫、執行以及文件擁有者等等), 否則,其他人還是無法針對你給予的文件進行修訂的動作.
2.3 移除文件或目錄
rm [options] 文件或目錄
選項與參數:
-f :就是 force 的意思,忽略不存在的文件,不會出現警告訊息;
-i :互動模式,在刪除前會詢問使用者是否動作
-r :遞歸刪除!
2.4 移動文件和目錄、或更名
mv [options] sourceFile targetFile
mv [options] sourceFile sourceFile sourceFile sourceFile ... targetFile
選項與參數:
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,纔會更新 。
2.5 取得文件的目錄名和文件名稱
basename 文件或目錄
就取得最後的檔名
dirname 文件或目錄
取得目錄名
3.0 文件內容查詢
指令列表
cat 由第一行開始顯示文件內容
tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒着寫!
nl 顯示的時候,順道輸出行號!
more 一頁一頁的顯示文件內容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
3.1 直接檢視文件內容
cat [options] 文件
選項與參數:
-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
-E :將結尾的斷行字符 $ 顯示出來;
-n :打印出行號,連同空白行也會有行號,與 -b 的選項不同;
-T :將 [tab] 按鍵以 ^I 顯示出來;
-v :列出一些看不出來的特殊字符
3.2 可翻頁檢視
more (一頁一頁翻動)
不可向上翻頁
按鍵
空格鍵(space):代表向下翻頁
Enter:代表向下一行
/字符串:代表向下搜索某字符串
:f :立刻顯示出文件名及目前所在的行次
q:代表立刻離開
b:代表往回翻頁,不過只對文件有用,對管道無效
less (一頁一頁翻動)
可上下翻動,可向上搜尋
空格鍵 :(向下翻動一頁)
pagedown: 向下翻動一頁
pageup : 向上翻動一頁
/ 字符串: 向下搜尋字符串
?字符串:向上搜尋字符串
n:重複前一個搜尋
N:反向重複前一個搜尋
g:前進到文件的第一行去
G:前進到數據的最後一行
q:退出
3.3 數據攝取
head (取出前面幾行)
head [-n number] 文件
選項與參數:
-n : 後面接數字,代表取多少行,不加時,默認顯示十行
tail (取出後面幾行)
tail [-n number] 文件
選項與參數:
-n: 後面接數字,代表取多少行,不加時,默認顯示十行
-f:表示持續偵測文件的內容,按ctrl c 強制中斷程序的執行
od (以何種類型輸出文件)
od [-t TYPE] 文件
選項與參數:
-t :後面可以接各種『類型 (TYPE)』的輸出,例如:
a :利用默認的字符來輸出;
c :使用 ASCII 字符來輸出
d[size] :利用十進制(decimal)來輸出數據,每個整數佔用 size bytes ;
f[size] :利用浮點數(floating)來輸出數據,每個數佔用 size bytes ;
o[size] :利用八進制(octal)來輸出數據,每個整數佔用 size bytes ;
x[size] :利用十六進制(hexadecimal)來輸出數據,每個整數佔用 size bytes
3.4 修改文件時間或新建文檔
touch [options] 文件
選項與參數:
-a :僅修訂 access time;
-c :僅修改文件的時間,若該文件不存在則不建立新文件;
-d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
-m :僅修改 mtime ;
-t :後面可以接欲修訂的時間而不用目前的時間,格式爲[YYYYMMDDhhmm]
3.5 查看文件格式
file 文件
4 指令與文件的搜尋
4.1 腳本文件名的搜尋
which (尋找 [執行檔])
which -a command
選項與參數:
-a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
4.2 文件檔名的搜尋
whereis 該指令只能用於查找二進制文件、源代碼文件和man手冊頁,一般文件的定位需使用locate命令
whereis [options] 文件
選項與參數:
-l :可以列出 whereis 會去查詢的幾個主要目錄而已
-b :只找 binary 格式的文件
-m :只找在說明文件 manual 路徑下的文件
-s :只找 source 來源文件
-u :搜尋不在上述三個項目當中的其他特殊文件
locate / updatedb
locate 尋找數據的時候特別的快, 這是因爲 locate 尋找的數據是由『已建立的數據庫 /var/lib/mlocate/』 裏面的數據所搜尋到的,也因此存在限制(數據庫的建立默認是在每天執行一次),可通過updatedb更新數據庫來找到你當天建立的文件
locate [options] 文件
選項與參數:
-i :忽略大小寫的差異;
-c :不輸出檔名,僅計算找到的文件數量
-l :僅輸出幾行的意思,例如輸出五行則是 -l 5
-S :輸出 locate 所使用的數據庫文件的相關信息,包括該數據庫紀錄的文件/目錄數量等
-r :後面可接正規表示法的顯示方式
find PATH [options] action
選項與參數:
1. 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明
-mtime n :n 爲數字,意義爲在 n 天之前的『一天之內』被更動過內容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的文件檔名;
-mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的文件檔名。
-newer file :file 爲一個存在的文件,列出比 file 還要新的文件檔名
2. 與使用者或組名有關的參數:
-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 搜尋
3. 與文件權限及名稱有關的參數:
-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.... 的屬性存在!
4. 額外可進行的動作:
-exec command :command 爲其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。
-print :將結果打印到屏幕上,這個動作是預設動作!