Ict-創新/LPI/103.3
考生應能夠使用基本的 Linux 命令來管理檔案和目錄。
關鍵知識領域
- 分別複製、移動和刪除檔案和目錄。
- 遞迴地複製多個檔案和目錄。
- 遞迴地刪除檔案和目錄。
- 在命令中使用簡單和高階的萬用字元規範。
- 使用 find 根據型別、大小或時間查詢並操作檔案。
- 使用 tar、cpio 和 dd。
絕對路徑和相對路徑
可以透過給出其完整路徑名(從根目錄 (/) 開始)或其相對路徑(從當前目錄開始)來訪問目錄或檔案。
絕對路徑:獨立於使用者的當前目錄,以 / 開頭
相對路徑:取決於使用者的位置,不以 / 開頭
與任何結構化檔案系統一樣,有很多實用程式可以幫助您瀏覽系統。
pwd:以絕對路徑的形式給出您的實際位置。
cd:'更改目錄' 命令
ls: 列出目錄的內容。
該命令可以接受幾個引數,其中最常見的是
-l – 使用長列表格式,
-a – 列出所有檔案和目錄,包括隱藏的檔案和目錄,
-h – 以人類可讀的格式顯示檔案大小,即格式化以方便閱讀
-d – 僅列出目錄,不列出其內容。
查詢檔案和目錄
我們將描述 find、which、whereis 和 locate 實用程式。
find
語法
find <DIRECTORY> <CRITERIA> [-exec <COMMAND> {} \;]
DIRECTORY 引數告訴 find 從哪裡開始搜尋,而 CRITERIA 可以是序列選擇條件的組合,包括要查詢的檔案或目錄的名稱。
示例
|
# find /usr/X11R6/bin -name ¨x*¨. # find / -user 502 |
匹配檔案的名稱將列在標準輸出中。或者,可以對找到的每個檔案執行特定操作。例如,刪除檔案或更改許可權。find 工具具有內建選項 –exec ,允許您執行此操作。例如,刪除屬於使用者 502 的所有檔案
|
# find / -type f -user 502 –exec rm –f {} \; |
| -type | 指定檔案型別 |
| -name | 檔案的名稱(可以包含萬用字元) |
| -user | 使用者所有者 |
| -atime、ctime、mtime | 訪問時間、建立時間和修改時間(24 小時的倍數) |
| -amin、cmin、mmin | 訪問時間、建立時間和修改時間(1 分鐘的倍數) |
| -newer FILE | 比 FILE 更新的檔案 |
處理目錄
建立目錄
建立目錄時,可以使用 -m 選項設定許可權模式。另一個有用的選項是 -p,它會根據需要自動建立所有子目錄。
示例
|
# mkdir –p docs/programs/versions |
刪除目錄
要刪除目錄,請使用 rmdir 或 rm -r。rmdir 僅刪除空目錄。指定 -f 強制刪除您沒有寫入許可權的檔案。
注意:rm –rf /dir1/* 刪除所有檔案和子目錄,使 dir1 為空
rm –rf /dir1/ 刪除所有檔案和子目錄,包括 dir1
使用 cp 和 mv
cp
語法
cp [options] file1 file2
cp [options] files directory
需要注意的是,cp file1 file2 會建立 file1 的一個新副本,並保留 file1 不變。您也可以使用列表或萬用字元將多個檔案複製到目錄中。下表列出了最常用的選項。
| cp 的最常見選項 | |
| -d | 不遵循符號連結(與 -R 一起使用時) |
| -f | 強制 |
| -i | 互動式,在覆蓋之前提示 |
| -p | 保留檔案屬性 |
| -r | 遞迴地複製目錄 |
注意: cp –r /mydir/* /dir2/ 將複製所有檔案和子目錄,省略 mydir
cp –r /mydir/ /dir2/ 將複製所有檔案和子目錄,包括 mydir
mv
語法
mv [options] oldname newname
mv [options] source destination
mv [options] source directory
mv 命令既可以移動也可以重新命名檔案和目錄。如果 oldname 是檔案,而 newname 是目錄,則檔案 oldname 將被移動到該目錄中。
如果源和目標位於同一個檔案系統上,則檔案不會被複制,而是連結將簡單地移動到新位置。最常見的選項是 -f 強制覆蓋和 -i 互動式查詢。
touch 和 dd
touch
另一種建立或修改檔案的方法是使用 touch。
語法: touch {options} file(s)
如果 file 不存在,則建立它。您還可以使用 -a 選項將檔案的訪問時間更新為當前時間,-m 更改修改時間,-r 用於應用另一個檔案的屬性。
示例
touch file1.txt file2.txt 建立新檔案
touch myfile -r /etc/lilo.conf myfile 獲取 lilo.conf 的屬性
dd
此命令以可更改的 I/O 塊大小複製檔案。它也可以用於執行轉換(類似於 tr)。主要選項是 if=(輸入檔案)of= (輸出檔案)conv=(轉換)
轉換開關可以是:lcase ucase ascii
示例
|
# dd if=/dev/sda1 of=/dev/sda2 |
請注意,與 cp 不同,dd 工具會複製裝置的部分內容並保留底層檔案系統。另一方面,cp 僅處理資料,並將資料從一個檔案系統傳輸到另一個檔案系統
Linux 有幾個用於壓縮和歸檔檔案的實用程式。其中一些工具起源於磁帶歸檔和備份解決方案,引數和名稱反映了這一點。
tar
tar(磁帶存檔)命令用於歸檔目錄並可選地壓縮存檔。最初,tar 命令用於歸檔到磁帶,但現在也可以歸檔到磁碟,這是它最常見的用途。存檔如下建立
|
# tar – cvjf backup.tar.bz /home/user1 |
這將建立一個 user1 主目錄的 bzip 壓縮存檔。提供給 tar 的選項是
- c – 建立存檔,
- v – 在建立存檔期間顯示詳細輸出,
- j – 使用 bzip 壓縮壓縮存檔,或者可以使用 z,它將使用 gzip 壓縮
- f – 要建立的檔案的名稱,在本例中為 backup.tar,bz
要解壓縮 backup.tar.bz 存檔,您將使用以下命令
|
# tar -xvjf backup.tar.bz |
這將解壓縮存檔到當前目錄。命令列引數與上面的示例基本相同,除了 -x(提取)引數,它替換了 -c(建立)。要列出存檔的內容而不提取它,您將使用 -t 引數
|
# tar -tf backup.tar.bz |
cpio
cpio 是一個較舊的存檔實用程式,它本身不支援壓縮。cpio 代表 copy in/out。雖然 cpio 在很大程度上已被 tar 取代,但它仍在 Linux 中使用。特別是 initrd 映像檔案是一個 cpio 存檔。cpio 期待標準輸入中列出的要存檔的檔案,因此通常與 find 或 ls 命令結合使用。
|
$ ls | cpio -ov > backup.cpio $ find / | cpio -ov > backup.cpio |
以上兩個命令使用 cpio 建立了一個存檔。v 引數告訴 cpio 在建立存檔期間提供詳細輸出。要提取存檔,您將使用類似以下的命令
|
$ cpio -iv < backup.cpio |
這將提取 cpio 存檔到當前目錄。關於 cpio,需要注意的一點是它的引數。對於存檔,我們通常談論存檔和提取,這表明 -c 用於建立,而 -x 或 -e 用於提取。記住 -o 用於建立,而 -i 用於提取的最簡單方法是記住 cpio 代表 copy in/ copy out。您將透過從檔案系統中複製出來來建立存檔,並透過從存檔中複製進來來提取存檔。
gzip/gunzip
gzip 用於使用 Lempel-Ziv 編碼壓縮檔案。與大多數 Linux 命令一樣,它可以接受大量引數,但最常用的使用方法如下
|
$ gzip largefile.txt |
預設情況下,gzip 會建立一個與輸入檔案同名但帶有 .gz 副檔名的輸出檔案。上面的命令將建立一個名為 largefile.txt.gz 的壓縮檔案。要解壓縮檔案,您將執行以下命令
|
$ gunzip largefile.txt.gz 或 $ gzip -d largefile.txt.gz |
bzip/bzip2
bzip2 使用 Burrows-Wheeler 塊排序文字壓縮演算法和哈夫曼編碼來壓縮檔案,這被認為比 Lempel-Ziv 檔案壓縮演算法更有效。它最常用的壓縮檔案格式會以 1 到 9 之間的數字作為引數。這個數字用於告訴 bzip2 使用效率最低但速度最快的壓縮塊大小(1)或使用效率最高但速度最慢的壓縮塊大小(9)。如果沒有指定數字,則預設使用 9。
|
$ bzip2 -9 largefile.txt |
這將建立一個與原始檔名相同但副檔名為 .bz 的最小檔案。在本例中,檔案將是 largefile.txt.bz。要解壓縮檔案,可以使用
|
$ bzip2 -d largefile.txt.bz2 **或** $ bunzip2 largefile.txt.bz2 |
使用過的檔案、術語和工具:* cp
- find
- mkdir
- mv
- ls
- rm
- rmdir
- touch
- tar
- cpio
- dd
- file
- gzip
- gunzip
- bzip2
- 檔案萬用字元