從零開始緩慢深入Linux - 基礎指令篇(2)

Linux 查找文件

查找常用指令

指令 概述
which 顯示命令的絕對路徑
whereis 顯示命令的二進制文件、幫助文檔等存放位置
locate 根據文件名稱查找文件
find 根據指定條件查找文件

which

which [options][--] programname [...]

[root@foundation0 ~]# which test
/bin/test
[root@foundation0 ~]# which alias
/bin/alias

whereis

whereis [options][-BMS directory... -f] name...

參數 作用
-b 只尋找 binary 二進制 格式的文件
-m 只尋找在 說明文件 manual 路徑下的文件
-s 只尋找 source 來源的文件
-u 搜尋不在上述三個項目當中的其他特殊文件
-l 查看 whereis 可搜尋的路徑
[ root@www ~]# whereis /etc/passwd
passwd: /usr/bin/passwd /etc/passwd.OLD /etc/passwd /usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
[ root@www ~]# whereis man
man: /usr/bin/man /etc/man.config /usr/share/man /usr/share/man/man7/man.7.gz
/usr/share/man/man1p/man.1p.gz /usr/share/man/man1/man.1.gz

locate

locate [OPTION]... PATTERN...

參數 作用
-i 忽略大小寫的差異 ;
-r 後面可接正規表示法的顯示方式
  • 安裝軟件 mlocate 之後纔會有 updatedb 命令和 locate 命令,最小化安裝的 rhel 系統默認不安裝。
  • locate 尋找的數據是由『已建立的數據庫 /var/lib/mlocate/mlocate.db 裏面的數據所搜
    尋到 , 所以不用直接在去硬盤中存取數據 , 速度快
  • updatedb: 根據 /etc/updatedb.conf 的設定去搜尋系統硬盤內的文件名 , 並更新/var/lib/mlocate.mlocate.db
  • PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp" 設定了搜尋的目錄

find

find [-H][-L] [-P][-D debugopts] [-Olevel][path...] [expression]

選項與參數 :

  • 與時間有關 :-atime, -ctime ,-mtime , 以 -mtime 說明
    • -mtime n
    • -mtime +n
    • -mtime -n
    • -newer file : 列出比 file 還要新的檔案
if n= 2 now= 2015/12/24
then
-mtime 2:  2015/12/22 當天內容改過的文件
-mtime +2: 2 天之前 , 2015/12/22 之前被容被改過的文件 , 及 21\20\19...
-mtime -2: 2 天以內 , 2015/12/24 和 2015/12/23 號修改過的文件
<--|--|--|--|--|--|--|--|--|--|--|2-|--|--|
<----------------------------+2->|--|--|--|
<--|--|--|--|--|--|--|--|--|--|--|--|<-2->|
11 12 13 14 15 16 17 18 19 20 21 22 23 24 現在
  • 與用戶和組有關
    • uid n
    • gid n
    • user name
    • group name
    • nouser
    • nogroup
[ root@www ~]# find /tmp -user jenny
/tmp/jenny
/tmp/test1
  • 與名稱有關
    • name filename: 搜尋文件名爲 filename 的文件 ;
[ root@www ~]# find /tmp -name "*test*"
/tmp/testx
/tmp/test123
  • 與大小有關
    • size [ ±]SIZE: SIZE 的規格有 1)c: 代表 byte 2)k: 代表 1024bytes w: 字數 , 佔兩個字符 3)M\G
find / -size +5M -size -7M 2> /dev/null  
# /dev/null稱爲垃圾桶文件,往裏面丟數據不會佔用磁盤空間
# 該命令只查找5-7M之間的文件大小
  • 與類型有關
    • type TYPE:f 普通文件 d 目錄 l 鏈接文件
[ root@www ~]# find /tmp -type f
/tmp/pulse-BzLrQ7uHulwz/pid
/tmp/.X0-lock
/tmp/orbit-root/bonobo-activation-server-23d28d39cfff8983f6cac2ca00000055-ior
/tmp/orbit-root/bonobo-activation-register-23d28d39cfff8983f6cac2ca00000055.lock
/tmp/lurakm9.tmp/luraktg.tmp
/tmp/lurakm9.tmp/lurakt2.tmp
/tmp/lurakm9.tmp/lurakvs.tmp
  • 與權限有關
    • perm mode : 文件權限『剛好等於』 mode 的檔案 mode 範圍 : 7777 ~ 0000
    • -perm -mode: 文件權限『必須要全部囊括 mode 權限』
[root@jenny /]# find / -user jenny -perm -200
find: ‘/proc/24068/task/24068/fd/6’: No such file or directory
find: ‘/proc/24068/task/24068/fdinfo/6’: No such file or directory
find: ‘/proc/24068/fd/5’: No such file or directory
find: ‘/proc/24068/fdinfo/5’: No such file or directory
/var/spool/mail/jenny
/tmp/jennyfile
/home/jenny
/home/jenny/.bash_logout
/home/jenny/.bash_profile
/home/jenny/.bashrc
/home/jenny/.bash_history
[root@jenny /]#
  • 額外動作
    • exec [ 命令 ] : 後面可再接額外的命令來處理搜尋到的結果,非交互式
    • ok [命令]: 後面可再接額外的命令來處理搜尋到的結果,交互式

格式:find [path] -exec [cmd] {} \;

格式:find [path] -ok [cmd] {} \;

[ root@www ~]# find /tmp -name "test*" -exec ls -l {} \;

Linux壓縮打包

壓縮的意義

  • 節省磁盤空間,提升磁盤利用率
  • 避免帶寬佔用過多,提升文件傳輸效率

壓縮打包命令

1.zip命令用法

確認已經安裝了zip程序

[root@mastera0 zip-3.0]# which zip
/usr/bin/zip
[root@mastera0 zip-3.0]# head -n 18 /usr/share/doc/zip-3.0/README
Zip 3.0 is the first Zip update adding large file support. For now Zip 2.3x
remains available and supported, but users should switch to this new release.
Testing for Zip 3.0 has focused mainly on Unix, VMS, Max OS X, and Win32,
and some other ports may not be fully supported yet. If you find your
favorite port is broke, send us the details or, better, send bug fixes. It's
possible that support for some older ports may be dropped in the future.
Copyright (c) 1990-2008 Info-ZIP. All rights reserved.
See the accompanying file LICENSE (the contents of which are also included
in unzip.h, zip.h and wiz.h) for terms of use. If, for some reason, all
of these files are missing, the Info-ZIP license also may be found at:
ftp://ftp.info-zip.org/pub/infozip/license.html and
http://www.info-zip.org/pub/infozip/license.html.

zip 命令可以用來解壓縮文件,或者對文件進行打包操作。zip 是個使用廣泛的壓縮程序,文件經它壓縮後會另外產生具有 “ .zip” 擴展名的壓縮文件。

語法 zip( 選項 )( 參數 )

選項

-A :調整可執行的自動解壓縮文件;
-b< 工作目錄 > :指定暫時存放文件的目錄;
-c :替每個被壓縮的文件加上註釋;
-d :從壓縮文件內刪除指定的文件;
-D :壓縮文件內不建立目錄名稱;
-f :此參數的效果和指定 “ -u” 參數類似,但不僅更新既有文件,如果某些文件原本不存在於壓縮文
件內,使用本參數會一併將其加入壓縮文件中;
-F :嘗試修復已損壞的壓縮文件;
-g :將文件壓縮後附加在已有的壓縮文件之後,而非另行建立新的壓縮文件;
-h :在線幫助;
-i< 範本樣式 > :只壓縮符合條件的文件;
-j :只保存文件名稱及其內容,而不存放任何目錄名稱;
-J :刪除壓縮文件前面不必要的數據;
-k :使用 MS-DOS 兼容格式的文件名稱;
-l :壓縮文件時,把 LF 字符置換成 LF+CR 字符;
-ll :壓縮文件時,把 LF+cp 字符置換成 LF 字符;
-L :顯示版權信息;
-m :將文件壓縮並加入壓縮文件後,刪除原始文件,即把文件移到壓縮文件中;
-n< 字尾字符串 > :不壓縮具有特定字尾字符串的文件;
-o :以壓縮文件內擁有最新更改時間的文件爲準,將壓縮文件的更改時間設成和該文件相同;
-q :不顯示指令執行過程;
-r :遞歸處理,將指定目錄下的所有文件和子目錄一併處理;
-S :包含系統和隱藏文件;
-t< 日期時間 > :把壓縮文件的日期設成指定的日期;
-T :檢查備份文件內的每個文件是否正確無誤;
-u :更換較新的文件到壓縮文件內;
-v :顯示指令執行過程或顯示版本信息;
-V :保存 VMS 操作系統的文件屬性;
-w :在文件名稱裏假如版本編號,本參數僅在 VMS 操作系統下有效;
-x< 範本樣式 > :壓縮時排除符合條件的文件;
-X :不保存額外的文件屬性;
-y :直接保存符號連接,而非該鏈接所指向的文件,本參數僅在 UNIX 之類的系統下有效;
-z :替壓縮文件加上註釋;
-$ :保存第一個被壓縮文件所在磁盤的卷冊名稱;
-< 壓縮效率 > :壓縮效率是一個介於 1~9 的數值。
參數
zip 壓縮包:指定要創建的 zip 壓縮包;
文件列表:指定要壓縮的文件列表。
實例
zip -q -r html.zip /home/Blinux/html
zip -q -r html.zip *

unzip 的用法

unzip 命令用於解壓縮由 zip 命令壓縮的 “ .zip” 壓縮包

語法 unzip( 選項 )( 參數 )

選項

-c :將解壓縮的結果顯示到屏幕上,並對字符做適當的轉換;
-f :更新現有的文件;
-l :顯示壓縮文件內所包含的文件;
-p :與 -c 參數類似,會將解壓縮的結果顯示到屏幕上,但不會執行任何的轉換;
-t :檢查壓縮文件是否正確;
-u :與 -f 參數類似,但是除了更新現有的文件外,也會將壓縮文件中的其他文件解壓縮到目錄中;
-v :執行時顯示詳細的信息;
-z :僅顯示壓縮文件的備註文字;
-a :對文本文件進行必要的字符轉換;
-b :不要對文本文件進行字符轉換;
-C :壓縮文件中的文件名稱區分大小寫;
-j :不處理壓縮文件中原有的目錄路徑;
-L :將壓縮文件中的全部文件名改爲小寫;
-M :將輸出結果送到 more 程序處理;
-n :解壓縮時不要覆蓋原有的文件;
-o :不必先詢問用戶, unzip 執行後覆蓋原有的文件;
-P< 密碼 > :使用 zip 的密碼選項;
-q :執行時不顯示任何信息;
-s :將文件名中的空白字符轉換爲底線字符;
-V :保留 VMS 的文件版本信息;
-X :解壓縮時同時回存文件原來的 UID/GID ;
-d< 目錄 > :指定文件解壓縮後所要存儲的目錄;
-x< 文件 > :指定不要處理 .zip 壓縮文件中的哪些文件;
-Z : unzip-Z 等於執行 zipinfo 指令

參數 壓縮包:指定要解壓的 “ .zip” 壓縮包。

實例

unzip test.zip
unzip -v test.zip
unzip -n test.zip -d /tmp

2. gzip 的用法

語法 gzip( 選項 )( 參數 )

選項

-a 或 —— ascii :使用 ASCII 文字模式;
-d 或 --decompress 或 ----uncompress :解開壓縮文件;
-f 或 —— force :強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否爲符號連接;
-h 或 —— help :在線幫助;
-l 或 —— list :列出壓縮文件的相關信息;
-L 或 —— license :顯示版本與版權信息;
-n 或 --no-name :壓縮文件時,不保存原來的文件名稱及時間戳記;
-N 或 —— name :壓縮文件時,保存原來的文件名稱及時間戳記;
-q 或 —— quiet :不顯示警告信息;
-r 或 —— recursive :遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-S 或 < 壓縮字尾字符串 > 或 ----suffix< 壓縮字尾字符串 > :更改壓縮字尾字符串;
-t 或 —— test :測試壓縮文件是否正確無誤;
-v 或 —— verbose :顯示指令執行過程;
-V 或 —— version :顯示版本信息;
-< 壓縮效率 > :壓縮效率是一個介於 1~9 的數值,預設值爲 “ 6” ,指定愈大的數值,壓縮效率就會
愈高;
--best :此參數的效果和指定 “ -9” 參數相同;
--fast :此參數的效果和指定 “ -1” 參數相同。

參數 文件列表:指定要壓縮的文件或指定要解壓的文件。。

實例

gzip * 將當前目錄下的每個文件都壓縮成 .gz 文件
gzip testtest 文件壓縮成 test.gz 文件並刪除源文件
gzip -rv /tmp 第歸壓縮目錄中的所有文件,壓縮成 .gz 結尾的文件,並顯示指令執行過程
gzip -dr /tmp 第歸解壓 /tmp 目錄下的 .gz 結尾的文件

gunzip 的用法

語法 gunzip( 選項 )( 參數 )

選項

-a 或 —— ascii :使用 ASCII 文字模式;
-c 或 --stdout 或 --to-stdout :把解壓後的文件輸出到標準輸出設備;
-f 或 -force :強行解開壓縮文件,不理會文件名稱或硬連接是否存在以及該文件是否爲符號連接;
-h 或 —— help :在線幫助;
-l 或 —— list :列出壓縮文件的相關信息;
-L 或 —— license :顯示版本與版權信息;
-n 或 --no-name :解壓縮時,若壓縮文件內含有原來的文件名稱及時間戳記,則將其忽略不予處理;
-N 或 —— name :解壓縮時,若壓縮文件內含有原來的文件名稱及時間戳記,則將其回存到解開
的文件上;
-q 或 —— quiet :不顯示警告信息;
-r 或 —— recursive :遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-S 或 < 壓縮字尾字符串 > 或 ----suffix< 壓縮字尾字符串 > :更改壓縮字尾字符串;
-t 或 —— test :測試壓縮文件是否正確無誤;
-v 或 —— verbose :顯示指令執行過程;
-V 或 —— version :顯示版本信息;

參數 文件列表:指定要解壓的壓縮包。

實例
gzip -d test.gz
gunzip test.gz
效果一樣

3. bzip2 的用法

語法 bzip2( 選項 )( 參數 )

選項

-c 或 —— stdout :將壓縮與解壓縮的結果送到標準輸出;
-d 或 —— decompress :執行解壓縮;
-f 或 -force : bzip2 在壓縮或解壓縮時,若輸出文件與現有文件同名,預設不會覆蓋現有文件。若
要覆蓋。請使用此參數;
-h 或 —— help :在線幫助;
-k 或 —— keep : bzip2 在壓縮或解壓縮後,會刪除原始文件。若要保留原始文件,請使用此參數;
-s 或 —— small :降低程序執行時內存的使用量;
-t 或 —— test :測試 .bz2 壓縮文件的完整性;
-v 或 —— verbose :壓縮或解壓縮文件時,顯示詳細的信息;
-z 或 —— compress :強制執行壓縮;
-V 或 —— version :顯示版本信息;
--repetitive-best :若文件中有重複出現的資料時,可利用此參數提高壓縮效果;
--repetitive-fast :若文件中有重複出現的資料時,可利用此參數加快執行效果。

參數 文件列表:指定要壓縮的文件或指定要解壓的文件。

實例

bzip2 test 壓縮 test 文件,生成壓縮文件 test.bz2 ,並刪除源文件
bzip2 -k test 壓縮 test 文件,生成壓縮文件 test.bz2 ,並保留源文件
bzip2 -d test.bz2 解壓文件
bunzip2 test.bz2 解壓文件

bunzip2 的用法

[root@mastera0 ~]# which bzip2
/usr/bin/bzip2
[root@mastera0 ~]# which bunzip2
/usr/bin/bunzip2
[root@mastera0 ~]# ll -i /usr/bin/bzip2
33853111 -rwxr-xr-x. 1 root root 36752 Jul 31 2014 /usr/bin/bzip2
[root@mastera0 ~]# ll -i /usr/bin/bunzip2
34293684 lrwxrwxrwx. 1 root root 5 Jun 23 13:50 /usr/bin/bunzip2 -> bzip2

bunzip2 [ -fkvsVL ] [ filenames ... ]

-f 或 --force :解壓縮時,若輸出的文件與現有文件同名時,預設不會覆蓋現有的文件;
-k 或 --keep :在解壓縮後,預設會刪除原來的壓縮文件。若要保留壓縮文件,請使用此參數;
-s 或 --small :降低程序執行時,內存的使用量;
-v 或 --verbose :解壓縮文件時,顯示詳細的信息;
-l , --license , -V 或 —— version :顯示版本信息。

4. xz 命令用法

語法 xz ( 選項 )( 參數 )

選項

-z, --compress
force compression 強制壓縮
-d, --decompress, --uncompress
force decompression 解開壓縮文件
-t, --test test compressed file integrity 測試壓縮文件是否正確無誤
-l, --list list information about .xz files 列出壓縮文件的相關信息
-k, --keep keep (don't delete) input files 不刪除源文件
-f, --force force overwrite of output file and (de)compress links 強制壓縮,覆蓋輸出文件同名的文件
-c, --stdout, --to-stdout write to standard output and don't delete input files 寫入標準輸出,不要刪除輸入文件
-0 ... -9 compression preset; default is 6; take compressor *and* decompressor memory usage into account before using 7-9! 壓縮效率是一個介於
1~9 的數值,預設值爲 “ 6” ,指定愈大的數值,壓縮效率就會愈高;解壓由縣考慮使用 7-9
-e, --extreme try to improve compression ratio by using more CPU time; does not affect decompressor memory requirements 通過使用更多的處理器時間
來提高壓縮比;不影響解壓時的內存需求
-T, --threads=NUM use at most NUM threads; the default is 1; set to 0 to use the number of processor cores 最多使用的線程數量,默認爲 1 ,如果設置爲
0 去使用處理器內核的數量
-q, --quiet suppress warnings; specify twice to suppress errors too 抑制警告;指定兩次
以抑制錯誤
-v, --verbose be verbose; specify twice for even more verbose
-h, --help display this short help and exit
-H, --long-help display the long help (lists also the advanced options)
-V, --version display the version number and exit

參數 文件列表:指定要壓縮的文件列表。

實例
xz test 壓縮一個文件 test ,壓縮成功後刪除源文件
xz -d -k test.xz 解壓 test.xz 文件, -k 參數保證源文件不被刪除
xz -l test.xz 查看基本信息,包括壓縮率等
xz -k7 test 使用參數 -0, -1, -2, ... -6, ... -9 或參數 --fast, --best 設定壓縮率。 xz 命令的默認爲-6 。
藉助 xargs 命令並行壓縮多文件。下面的命令行可以將 /var/log 目錄下所有的擴展名爲 .log 的文件壓縮。通過 xargs 命令同時運行多個 xz 進行壓縮。
find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1
注意:運行此命令須有 root 權限。

5. tar命令用法

tar 命令可以爲 linux 的文件和目錄創建檔案。利用 tar,可以爲某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar 最初被用來在磁帶上創建檔案,現在用戶可以在任何設備上創建檔案。利用 tar 命令可以把一大堆的文件和目錄全部打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是非常有用的。

語法 tar ( 選項 )( 參數 )
用法:
        打包   tar -cf /tmp/test.tar [file]
        解包   tar -xf /tmp/test.tar
        打包並壓縮  tar -czf /tmp/test.tar.gz [file] # 調用gzip程序完成壓縮
                    tar -cjf /tmp/test.tar.bz2 [file] # 調用的bzip2 程序完成壓縮
                    tar -cJf /tmp/test.tar.xz [file] # 調用xz程序完成壓縮
        解壓並解包
                    tar -xzf test.tar.gz  # 調用gzip程序完成解壓
                    tar -xjf test.tar.bz2  # 調用的bzip2 程序完成解壓
                    tar -xJf test.tar.xz  # 調用xz程序完成解壓
        指定位置解壓:
                    tar -xzf test.tar.gz -C /srv/
                    
選項
-A 或 --catenate :新增文件到以存在的備份文件;
-B :設置區塊大小;
-c 或 --create :建立新的備份文件;
-C < 目錄 > :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
-d :記錄文件的差別;
-x 或 --extract 或 --get :從備份文件中還原文件;
-t 或 --list :列出備份文件的內容;
-z 或 --gzip 或 --ungzip :通過 gzip 指令處理備份文件;
-Z 或 --compress 或 --uncompress :通過 compress 指令處理備份文件;
-f< 備份文件 > 或 --file=< 備份文件 > :指定備份文件;
-v 或 --verbose :顯示指令執行過程;
-r :添加文件到已經壓縮的文件;
-u :添加改變了和現有的文件到已經存在的壓縮文件;
-j :支持 bzip2 解壓文件;
-J :支持 xz 解壓文件;
-v :顯示操作過程;
-l :文件系統邊界設置;
-k :保留原有文件不覆蓋;
-m :保留文件不被覆蓋;
-w :確認壓縮文件的正確性;
-p 或 --same-permissions :用原來的文件權限還原文件;
-P 或 --absolute-names :文件名使用絕對名稱,不移除文件名稱前的 “ /” 號;
-N < 日期格式 > 或 --newer=< 日期時間 > :只將較指定日期更新的文件保存到備份文件裏;
--exclude=< 範本樣式 > :排除符合範本樣式的文件。

參數 文件列表:指定要打包的文件或目錄列表。

實例
tar -cvf log.tar log2012.log 僅打包,不壓縮! tar -xf 解壓
tar -zcvf log.tar.gz log2012.log 打包後,以 gzip 壓縮 tar -zxf 解壓
tar -jcvf log.tar.bz2 log2012.log 打包後,以 bzip2 壓縮 tar -jxf 解壓
tar -Jcvf log.tar.xz log2012.log 打包後,以 xz 壓縮 tar -Jxf 解壓
tar -tf log.tar 查看打包文件
注意 -f 參數後面必須接文件名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章