在Linux下對檔案和目錄的操作是學習linux的基礎,檔案的操作無非就是增删改查等等。對于目錄的操作也是對目錄的增删改查以及修改目錄屬性等操作。在了解目錄管理前得先了解目錄的結構。linux下的目錄是樹型結構,所有的目錄都從根(/)開始,其他的檔案系統以挂載的方式挂載到目錄上去進行使用。通路目錄時有相對路徑和絕對路徑之分。
相對路徑:路徑的寫法不是由根寫起的,而是在目前路徑的基礎之上的。例如:例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: cd ../man
絕對路徑:路徑從根寫起,例如:/usr/local
1.檔案與目錄管理常用指令
ls / cd / cp / mv /pwd /rm / rmdir / chgrp /chown /chmod / find / ln / mkdir / whereis / which / file / touch / locate / dd / updatedb / rename
接下來我将總結這些指令的常用選項
1.1 ls 用來顯示目标清單,在Linux中是使用率較高的指令。
-a:顯示所有檔案及目錄(ls内定将檔案名或目錄名稱為“.”的視為影藏,不
會列出);
-A:顯示除影藏檔案“.”和“..”以外的所有檔案清單;
-C:多列顯示輸出結果。這是預設選項;
-l:與“-C”選項功能相反,所有輸出資訊用單列格式輸出,不輸出為多列;
-c:與“-lt”選項連用時,按照檔案狀态時間排序輸出目錄内容,排序的依據
是檔案的索引節點中的ctime字段。與“-l”選項連用時,則排序的一句是檔案的狀
态改變時間;
-d:僅顯示目錄名,而不顯示目錄下的内容清單。顯示符号連結檔案本身,而
不顯示其所指向的目錄清單;
-i:顯示檔案索引節點号(inode)。一個索引節點代表一個檔案; --file-
type:與“
-F”選項的功能相同,但是不顯示“*”;
-k:以KB(千位元組)為機關顯示檔案大小;
-l:以長格式顯示目錄下的内容清單。輸出的資訊從左到右依次包括檔案
名,檔案類型、權限模式、硬連接配接數、所有者、組、檔案大小和檔案的最後修
改時間等;
-m:用“,”号區隔每個檔案和目錄的名稱;水準輸出檔案清單;
-r:以檔案名反序排列并輸出目錄内容清單;
-s:顯示檔案和目錄的大小,以區塊為機關;
-t:用檔案和目錄的更改時間排序;
-R:遞歸處理,将指定目錄下的所有檔案及子目錄一并處理;
--full-time:列出完整的日期與時間;
--color[=WHEN]:使用不同的顔色高亮顯示不同類型的。
-F:在每個輸出項後追加檔案的類型辨別符,可用于按照特殊字元對檔案進
行分類
具體含義:“*”表示具有可執行權限的普通檔案,“/”表示目錄,“@”表示符
号連結,“|”表示指令管道FIFO,“=”表示sockets套接字。當檔案為普通檔案時,
不輸出任何辨別符;
1.2 cd 用來切換工作目錄。
cd 進入使用者主目錄;
cd ~ 進入使用者主目錄;
cd - 傳回進入此目錄之前所在的目錄;
cd .. 傳回上級目錄(若目前目錄為“/“,則執行完後還在“/";".."為上級目錄的意思);
cd ../.. 傳回上兩級目錄;
cd !$ 把上個指令的參數作為cd參數使用。
1.3 cp 複制指令
-a:此參數的效果和同時指定"-dpR"參數相同;
-i:(預設選項)覆寫既有檔案之前先詢問使用者;
-f:強行複制檔案或目錄,不論目标檔案或目錄是否已存在;
-p:保留源檔案或目錄的屬性;
-R/r:遞歸處理,将指定目錄下的所有檔案與子目錄一并處理;
-l:對源檔案建立硬連接配接,而非複制檔案;
-s:對源檔案建立符号連接配接,而非複制檔案;
-d:當複制符号連接配接時,把目标檔案或目錄也建立為符号連接配接,并指向與源文
件或目錄連接配接的原始檔案或目錄;
-u:使用這項參數後隻會在源檔案的更改時間較目标檔案更新時或是名稱互相
對應的目标檔案并不存在時,才複制檔案;
-b:覆寫已存在的檔案目标前将目标檔案備份;
-v:詳細顯示指令執行的操作。
1.4 mv 用來對檔案或目錄重新命名,或者将檔案從一個目錄移到另一個目錄中。
-i:(預設)互動式操作,覆寫前先行詢問使用者,如果源檔案與目标檔案或目标
目錄中的檔案同名,則詢問使用者是否覆寫目标檔案。使用者輸入”y”,表示将覆寫目标
檔案;輸入”n”,表示取消對源檔案的移動。這樣可以避免誤将檔案覆寫。
-b:當檔案存在時,覆寫前,為其建立一個備份;
-f:若目标檔案或目錄與現有的檔案或目錄重複,則直接覆寫現有的檔案或目
錄;
-u:當源檔案比目标檔案新或者目标檔案不存在時,才執行移動操作。
1.5 rm 可以删除一個目錄中的一個或多個檔案或目錄,也可以将某個目錄
及其下屬的所有檔案及其子目錄均删除掉。對于連結檔案,隻是删除整個連結
檔案,而原有檔案保持不變。
-d:直接把欲删除的目錄的硬連接配接資料删除成0,删除該目錄;
-f:強制删除檔案或目錄;
-i:删除已有檔案或目錄之前先詢問使用者;
-r或-R:遞歸處理,将指定目錄下的所有檔案與子目錄一并處理;
-v:顯示指令的詳細執行過程。
1.6 chgrp 用來改變檔案或目錄所屬的使用者組。該指令用來改變指定檔案所
屬的使用者組。其中,組名可以是使用者組的id,也可以是使用者組的組名。檔案名
可以 是由空格分開的要改變屬組的檔案清單,也可以是由通配符描述的檔案集
合。如果使用者不是該檔案的檔案主或超級使用者(root),則不能改變該檔案的
組。
-R或——recursive:遞歸處理,将指令目錄下的所有檔案及子目錄一并處
理;
-f或--quiet或——silent:不顯示錯誤資訊;
-h或--no-dereference:隻對符号連接配接的檔案作修改,而不是該其他任何相關
檔案;
-v或——verbose:顯示指令執行過程;
--reference=<參考檔案或目錄>:把指定檔案或目錄的所屬群組全部設成和參
考檔案或目錄的所屬群組相同;
1.7 chown 改變某個檔案或目錄的所有者和所屬的組,該指令可以向某個
使用者授權,使該使用者變成指定檔案的所有者或者改變檔案所屬的組。使用者組可
以是組名或組id。檔案名可以使由空格分開的檔案清單,在檔案名中可以包含
通配符。
-f或--quite或——silent:不顯示錯誤資訊;
-h或--no-dereference:隻對符号連接配接的檔案作修改,而不更改其他任何相關
-R或——recursive:遞歸處理,将指定目錄下的所有檔案及子目錄一并處理;
-v或——version:顯示指令執行過程;
--dereference:效果和“-h”參數相同;
--reference=<參考檔案或目錄>:把指定檔案或目錄的擁有者與所屬群組全
部設成和參考檔案或目錄的擁有者與所屬群組相同;
1.8 chmod 用來變更檔案或目錄的權限。在UNIX系統家族裡,檔案或目錄
權限的控制分别以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可
供運用。使用者可以使用chmod指令去變更檔案與目錄的權限,設定方式采用文
字或數字代号皆可。符号連接配接的權限無法變更,如果使用者對符号連接配接修改權
限,其改變會作用在被連接配接的原始檔案。
權限範圍的表示法如下:
u User,即檔案或目錄的擁有者;
g Group,即檔案或目錄的所屬群組;
o Other,除了檔案或目錄擁有者或所屬群組之外,其他使用者皆屬于這個範
圍;
a All,即全部的使用者,包含擁有者,所屬群組以及其他使用者;
r 讀取權限,數字代号為“4”;
w 寫入權限,數字代号為“2”;
x 執行或切換權限,數字代号為“1”;
- 不具任何權限,數字代号為“0”;
s 特殊功能說明:變更檔案或目錄的權限。
-f或--quiet或——silent:不顯示錯誤資訊;
-R或——recursive:遞歸處理,将指令目錄下的所有檔案及子目錄一并處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考檔案或目錄>:把指定檔案或目錄的所屬群組全部設成和
參考檔案或目錄的所屬群組相同;
<權限範圍>+<權限設定>:開啟權限範圍的檔案或目錄的該選項權限設定;
<權限範圍>-<權限設定>:關閉權限範圍的檔案或目錄的該選項權限設定;
<權限範圍>=<權限設定>:指定權限範圍的檔案或目錄的該選項權限設定;
1.9 mkdir 建立目錄/檔案夾
-m<目錄屬性> 設定目錄屬性
-p 建立父目錄,确定目錄是否存在,不存在則建立
-parenls 建立父目錄
-v 顯示詳細的處理資訊
1.10 whereis 查找檔案/檢視指令路徑
-b 定位可執行檔案。
-m 定位幫助檔案。
-s 定位源代碼檔案。
-u 搜尋預設路徑下除可執行檔案、源代碼檔案、幫助檔案以外的其它檔案。
-B 指定搜尋可執行檔案的路徑。
-M 指定搜尋幫助檔案的路徑。
-S 指定搜尋源代碼檔案的路徑。
-f 隻顯示檔案的真實名稱
1.11 file - 确定檔案類型
-b 不輸出檔案名 (簡要模式)
-z 試圖檢視壓縮檔案内部資訊.
-L (在支援符号連結的系統上)選項顯示符号連結檔案的原檔案, 就像 ls(1) 指令的like-named 選項.
1.12 touch 用來更新檔案或目錄的時間,不存在的檔案将會被建立為空檔案,除非使用-c 或-h 選項。 如果檔案名為"-"則特殊處理,更改與标準輸出相關的檔案的通路時間。
長選項必須使用的參數對于短選項時也是必需使用的。
-a 隻更改通路時間
-m 隻更改修改時間
-c, --no-create 不建立任何檔案
-d, --date=字元串 使用指定字元串表示時間替代目前時間
-r, --reference=檔案 使用指定檔案的時間屬性替代目前時間
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的時間替代當--time=WORD 使用WORD 指定的時間:access、atime、use 都等于 -a選項的效果,而modify、mtime 等于-m 選項的效果
1.13 rename 用于 對檔案進行命名管理,可進行批量命名并支援正規表達式, rename指令存在兩個版本用法上有所差別 一個是 C語言版本支援通配符,另一個是 Perl版本.支援正規表達式
-n 操作預覽,在不更改檔案名稱情況下,顯示執行後的結果
-f 強制執行
【常用通配符說明】
? 表示一個任意字元
* 表示一個或一串任意字元 -------------------------------------------------
【常用正規表達式符号說明】
^ 比對輸入的開始位置
$ 比對輸入的結尾
. 比對除換行符外的任意字元
+ 比對前一個字元一次或多次 例如,"zo+"可以比對"zoo",但不比對"z"
[a-z] 表示某個範圍内的字元,例如,"[a-z]"比對"a"與"z"之間的任何一個小寫字母字元。
[^m-z] 否定的字元區間。與不在指定區間内的字元比對。
1.14 updatedb指令用來建立或更新slocate指令所必需的資料庫檔案。updatedb指令的執行過程較長,因為在執行時它會周遊整個系統的目錄樹,并将所有的檔案資訊寫入slocate資料庫檔案中。 補充說明:slocate本身具有一個資料庫,裡面存放了系統中檔案與目錄的相關資訊。
-o<檔案>:忽略預設的資料庫檔案,使用指定的slocate資料庫檔案;
-U<目錄>:更新指定目錄的slocate資料庫; -v:顯示執行的詳細過程。
1.15 dd轉換和拷貝檔案
當進行非強制的轉換的時候,使用指定的輸入和輸出塊大小拷貝檔案 (預設是從标準輸入到标準輸出。)
它每次從輸入讀取指定大小的一個塊(預設是512位元組)。 如果使用 bs=bytes 選項,并且沒有轉換,除了指定 sync, noerror, 或 notrunc 之外, 那麼dd将把全部讀到的資料(可以比請求讀的少) 寫到獨立的輸出塊去。 這個輸出塊的長度和讀到的資料 完全一樣,除非指定使用 sync(同步) 轉換,那樣的話,資料結尾處将追加NUL字元(或空格,見下)。
其他情況下,輸入的時候每次讀一個塊,然後處理,并将 輸出結果收集起來,最後寫到指定大小的資料塊中去。最 終的輸出塊可能會比指定的大小短一些。
if=file 從 file 中讀而不是标準輸入。
of=file 寫到 file 裡去而不是标準輸出。除非指定 conv=notrunc ,否則, dd 将把 file 截為O位元組(或由 seek= 選項指定的大小)
ibs=bytes 一次讀 bytes 位元組。預設是512。
obs=bytes 一次寫 bytes 位元組。預設是512。
bs=bytes 一次讀和寫 bytes 位元組。這将覆寫 ibs 和 obs 設定的值(并且,設定 bs 不等于同時将 ibs 和 obs 設為同一個值,至少在 隻使用 sync, noerror 或 notrunc 轉換時是這樣的。因為bs規定,每個輸入塊都應作為單獨 的資料塊拷貝到輸出,而不把較短的塊組合到一起)。
count=blocks 隻拷貝輸入檔案的前 blocks 塊(每塊的大小為 ibs-byte 位元組),而不是全部内容,直到檔案末尾。 conv=轉換[,轉換]... 将檔案按 轉換 參數指定的方式轉換(在lq,rq兩邊沒有空格)。
本文轉自willis_sun 51CTO部落格,原文連結:http://blog.51cto.com/willis/1845667,如需轉載請自行聯系原作者