3 文件備份、壓縮、定位、查找、閱讀3.1文[b]件備份、壓縮[/b]
在Linux中,常用的文件壓縮工具有gzip、bzip2、zip。bzip2是最理想的壓縮工具,它提供了最大限度的壓縮。zip兼容性好,Windows也支持。
命令 功能
bzip2/bunzip2 擴展名為bz2的壓縮/解壓縮工具
gzip/gunzip 擴展名為gz的壓縮/解壓縮工具
zip/unzip 擴展名為zip的壓縮/解壓縮工具
tar 創建備份和歸檔
3.1.1 bzip2命令 要使用bzip2來壓縮文件,在shell提示下輸入命令:bzip2 filename 文件即會被壓縮,並被保存為filename.bz2。
要解壓縮文件,輸入命令: bunzip2 filename.bz2 則 filename.bz2會被刪除,而以filename代替。
bzip2 filename.bz2 file1 file2 file3 /usr/work/school 命令把file1、file2、file3以及/usr/work/school目錄中的內容壓縮起來放入filename.bz2。
3.1.2 gzip命令要使用gzip來壓縮文件,輸入命令:gzip filename 文件即會被壓縮,並被保存為filename.gz。
要解壓縮文件,輸入命令:gunzip filename.gz filename.gz會被刪除,而以filename代替。
gzip -r filename.gz file1 file2 file3 /usr/work/school 命令把file1、file2、file3以及/usr/work/school目錄中的內容壓縮起來放入filename.gz。
3.1.3 zip命令 zip命令的使用方法同gzip。
3.1.4 tar命令 tar命令最早是用來做磁帶備份的,但是由於硬盤容量越來越大,因此現在主要用這個命令來備份所有的文件。
tar這個命令把大量的文件和目錄打包成一個文件。
-c 創建一個新歸檔
-f 當與-c選項一起使用時,創建的tar文件使用該選項指定的文件名;
當與-x選項一起使用時,則解除該選項指定的歸檔
-t 顯示包括在tar文件中的文件列表
-v 顯示文件的歸檔進度
-x 從歸檔中抽取文件
-z 使用gzip壓縮tar文件
-j 使用bzip2壓縮tar文件
例:
tar -cvf /home/abc.tar /home/abc 只打包,不壓縮
tar -zcvf /home/abc.tar.gz /home/abc 打包,並用gzip壓縮
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,並用bzip2壓縮
當然,如果想解壓縮,就直接替換上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 換成“x” 就可以了。
要創建一個tar文件,輸入命令:tar –cvf filename.tar directory/file /home/mine 上面的命令將directory/file、/home/mine放入歸檔文件中。
要列出tar文件的內容,輸入命令:tar –tvf filename.tar
要抽取tar文件的命令,輸入命令:tar –xvf filename.tar 這個命令不會刪除tar文件,但會把解除歸檔的內容復制到當前工作目錄下,並保留歸檔文件所使用的任何目錄結構。
要擴展並解除歸檔bzip tar文件,輸入命令:tar –xjvf filename.tbz
要創建一個用tar和gzip歸檔並壓縮的文件,使用-z選項:tar –czvf filename.tgz file 如果使用gunzip命令解壓filename.tgz文件,則filename.tgz會被刪除,以filename.tar代替。
3.2文件定位、查找選項 含義
Which 依序從path環境變量所列的目錄中找出command的位置,並顯示完整路徑的名稱
whereis 找出特定程序的可執行文件、源代碼文件以及manpage的路徑
find 按條件搜索,並執行一定的動作。
locate 帶記憶的文件搜索
updatedb 更新slocate的索引數據庫
3.2.1 which 語法 which command
說明 依序從path環境變量所列的目錄中找出command的位置,並顯示完整路徑的名稱。在找到第一個符合條件的程序文件時,就立刻停止搜索,省略其余未搜索目錄。
范例:
找出ls命令的程序文件的位置:which ls ,
系統輸出:/usr/bin/ls
3.2.2 whereis 語法 whereis [option] name
說明 找出特定程序的可執行文件、源代碼文件以及manpage的路徑。你所提供的name會被先除去前置的路徑以及任何.ext形式的擴展名。
whereis 只會在標准的Linux目錄中進行搜索。
-b 只搜索可執行文件
-m 只搜索manpage
-s 只搜索源代碼文件
-B directory 更改或限定搜索可執行的文件的目錄
-M directory 更改或限定搜索manpage的目錄
-S directory 更改或限定搜索源代碼文件的目錄
3.2.3 find 語法 find paths expression [action
說明 以paths為搜索起點逐層往下找出每一個符合expression條件的文件,並對該文件執行action所代表的動作。
expression是搜索條件,它由一個代表匹配項目的選項以及一個代表匹配模式的參數構成。
action是處理動作,它有一個代表“處理方式”的選項以及一個操作參數構成。若不指定action,則默認動作是顯示出文件名。
常用的搜索條件
-name pattern
-path pattern
-lname pattern
找出名稱、路徑名稱或符號鏈接的目標匹配pattern模式的文件。
pattern可以包含shell的文件名通配符,路徑是相對於搜索起點的。
常見處理動作
-print 顯示出文件的相對路徑(相對於搜索起點)。
-exec cmd /; 執行指定的shell命令。若cmd含有任何shell特殊字符,則他們之前都必須加上/符號,以免shell立刻執行他們。
在cmd裡,可以用”{}”符號(包括雙引號)表示 find所找出的文件。
3.2.4 locate 語法 locate patterns
說明 第一次執行locate時,它會建立一個索引數據庫,當往後再次執行時,它便從索引數據庫中迅速找出文件的位置。
locate很適合用來反復搜索很少變動的目錄樹,但是對於剛改名的舊文件以及新建的文件,locate就找不到了,除非重建數據庫。
3.2.5 updatedb 語法 updatedb [option]
說明 更新slocate的索引數據庫。
選項 -e directories 略過directories所列的目錄。
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄
find / -user user1 搜索屬於用戶 'user1' 的文件和目錄
find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件
find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件
find /usr/bin -type f -mtime -10 搜索在10天內被創建或者修改過的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結尾的文件並定義其權限
find / -xdev -name \*.rpm 搜索以 '.rpm' 結尾的文件,忽略光驅、捷盤等可移動設備
locate \*.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令
whereis halt 顯示一個二進制文件、源碼或man的位置
which halt 顯示一個二進制文件或可執行文件的完整路徑
3.3 文件閱讀 head 查看文件的開頭部分
tail 查看文件結尾的10行
less 一個分頁工具,它允許一頁一頁地(或一個屏幕一個屏幕地)查看信息
more 一個分頁工具,它允許一頁一頁地(或一個屏幕一個屏幕地)查看信息
3.3.1 head命令 head命令可以用來查看文件的開頭部分。
此命令的格式是:
head 文件名 默認設置,它只查看文件的前10行。但可以通過指定一個數字選項來改變要顯示的行數,命令如下:
head –20 文件名 這個命令將會查看文件的前20行。
3.3.2 tail命令 tail命令和head命令恰恰相反。
使用tail命令,可以查看文件結尾的10行。這有助於查看日志文件的最後10行來閱讀重要的系統信息。還可以使用tail觀察日志文件更新的過程。
使用-f選項,tail會自動實時地把打開文件中的新信息顯示到屏幕上。
例如,要活躍地觀察/var/log/messages,以根用戶身份在shell下輸入以下命令: tail –f /var/log/messages
3.3.3 less命令 less允許使用箭頭來前後移動。與more命令相似。
3.3.4 more命令 more和less的主要區別是,less允許使用箭頭來前後移動,而more使用空格鍵和b鍵來前後移動。
使用ls和more來列舉/etc目錄下的內容: ls –al /etc | more
要使用more在文本文件中搜索關鍵字,按/鍵並輸入命令搜索條目:/foo 使用空格鍵來先前翻閱頁碼。按q鍵退出。
more命令標准格式為: more [選項] [fileNames]
-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示[Press space to continue, q to quit.],如果使用者按錯鍵,則會顯示[Press h for instructions.]
-l 取消遇見特殊字元^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展為兩行或兩行以上)
-p 不以卷動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟-p相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號(根據環境變數TERM指定的terminal而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第num行開始顯示 fileNames 欲顯示內容的檔案,可為復數個數
例如: more -s testfile 逐頁顯示testfile之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第20行開始顯示testfile之檔案內容。