官术网_书友最值得收藏!

2.8 打包壓縮與搜索命令

在網(wǎng)絡(luò)上,人們越來越傾向于傳輸壓縮格式的文件,原因是壓縮文件體積小,在網(wǎng)速相同的情況下,傳輸時間短。下面將學(xué)習(xí)如何在Linux系統(tǒng)中對文件進行打包壓縮與解壓,以及讓用戶基于關(guān)鍵詞在文本文件中搜索相匹配的信息、在整個文件系統(tǒng)中基于指定的名稱或?qū)傩运阉魈囟ㄎ募1竟?jié)雖然只有3條命令,但是其功能都比較復(fù)雜而且參數(shù)很多,因此放到了本章最后講解。

1.tar命令

tar命令用于對文件進行打包壓縮或解壓,格式為“tar [選項] [文件]”。

在Linux系統(tǒng)中,常見的文件格式比較多,其中主要使用的是.tar或.tar.gz或.tar.bz2格式,我們不用擔(dān)心格式太多而記不住,其實這些格式大部分都是由tar命令來生成的。劉遄老師將講解最重要的幾個參數(shù),以方便大家理解。tar命令的參數(shù)及其作用如表2-14所示。

表2-14 tar命令的參數(shù)及其作用

首先,-c參數(shù)用于創(chuàng)建壓縮文件,-x參數(shù)用于解壓文件,因此這兩個參數(shù)不能同時使用。其次,-z參數(shù)指定使用Gzip格式來壓縮或解壓文件,-j參數(shù)指定使用bzip2格式來壓縮或解壓文件。用戶使用時則是根據(jù)文件的后綴來決定應(yīng)使用何種格式參數(shù)進行解壓。在執(zhí)行某些壓縮或解壓操作時,可能需要花費數(shù)個小時,如果屏幕一直沒有輸出,您一方面不好判斷打包的進度情況,另一方面也會懷疑電腦死機了,因此非常推薦使用-v參數(shù)向用戶不斷顯示壓縮或解壓的過程。-C參數(shù)用于指定要解壓到哪個指定的目錄。-f參數(shù)特別重要,它必須放到參數(shù)的最后一位,代表要壓縮或解壓的軟件包名稱。劉遄老師一般使用“tar -czvf壓縮包名稱.tar.gz要打包的目錄”命令把指定的文件進行打包壓縮;相應(yīng)的解壓命令為“tar -xzvf壓縮包名稱.tar.gz”。下面我們來逐個演示下打包壓縮與解壓的操作。先使用tar命令把/etc目錄通過gzip格式進行打包壓縮,并把文件命名為etc.tar.gz:

        [root@linuxprobe ~]# tar -czvf etc.tar.gz /etc
        tar: Removing leading '/' from member names
        /etc/
        /etc/fstab
        /etc/crypttab
        /etc/mtab
        /etc/fonts/
        /etc/fonts/conf.d/
        /etc/fonts/conf.d/65-0-madan.conf
        /etc/fonts/conf.d/59-liberation-sans.conf
        /etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
        /etc/fonts/conf.d/59-liberation-mono.conf
        /etc/fonts/conf.d/66-sil-nuosu.conf
        ………………省略部分壓縮過程信息………………

接下來將打包后的壓縮包文件指定解壓到/root/etc目錄中(先使用mkdir命令來創(chuàng)建/root/etc目錄):

        [root@linuxprobe ~]# mkdir /root/etc
        [root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc
        etc/
        etc/fstab
        etc/crypttab
        etc/mtab
        etc/fonts/
        etc/fonts/conf.d/
        etc/fonts/conf.d/65-0-madan.conf
        etc/fonts/conf.d/59-liberation-sans.conf
        etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
        etc/fonts/conf.d/59-liberation-mono.conf
        etc/fonts/conf.d/66-sil-nuosu.conf
        etc/fonts/conf.d/65-1-vlgothic-gothic.conf
        etc/fonts/conf.d/65-0-lohit-bengali.conf
        etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
        ………………省略部分解壓過程信息………………

2.grep命令

grep命令用于在文本中執(zhí)行關(guān)鍵詞搜索,并顯示匹配的結(jié)果,格式為“grep [選項] [文件]”。grep命令的參數(shù)及其作用如表2-15所示。

表2-15 grep命令的參數(shù)及其作用

grep命令是用途最廣泛的文本搜索匹配工具,雖然有很多參數(shù),但是大多數(shù)基本上都用不到。劉遄老師在總結(jié)了近10年的運維工作和培訓(xùn)教學(xué)的經(jīng)驗后,提出的本書的寫作理念“去掉不實用”絕對不是信口開河。如果一名IT培訓(xùn)講師的水平只能停留在“技術(shù)的搬運工”層面,而不能對優(yōu)質(zhì)技術(shù)知識進行提煉總結(jié),那對他的學(xué)生來講絕非好事。我們在這里只講兩個最最常用的參數(shù):-n參數(shù)用來顯示搜索到信息的行號;-v參數(shù)用于反選信息(即沒有包含關(guān)鍵詞的所有信息行)。這兩個參數(shù)幾乎能完成您日后80%的工作需要,至于其他上百個參數(shù),即使以后在工作期間遇到了,再使用man grep命令查詢也來得及。

在Linux系統(tǒng)中,/etc/passwd文件是保存著所有的用戶信息,而一旦用戶的登錄終端被設(shè)置成/sbin/nologin,則不再允許登錄系統(tǒng),因此可以使用grep命令來查找出當(dāng)前系統(tǒng)中不允許登錄系統(tǒng)的所有用戶信息:

        [root@linuxprobe ~]# grep /sbin/nologin /etc/passwd
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin
        lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        operator:x:11:0:operator:/root:/sbin/nologin
        ………………省略部分輸出過程信息………………

3.find命令

find命令用于按照指定條件來查找文件,格式為“find [查找路徑]尋找條件 操作”。

本書中曾經(jīng)多次提到“Linux系統(tǒng)中的一切都是文件”,接下來就要見證這句話的分量了。在Linux系統(tǒng)中,搜索工作一般都是通過find命令來完成的,它可以使用不同的文件特性作為尋找條件(如文件名、大小、修改時間、權(quán)限等信息),一旦匹配成功則默認將信息顯示到屏幕上。find命令的參數(shù)以及作用如表2-16所示。

表2-16 find命令中的參數(shù)以及作用

這里需要重點講解一下-exec參數(shù)重要的作用。這個參數(shù)用于把find命令搜索到的結(jié)果交由緊隨其后的命令作進一步處理,它十分類似于第3章將要講解的管道符技術(shù),并且由于find命令對參數(shù)的特殊要求,因此雖然exec是長格式形式,但依然只需要一個減號(-)。

根據(jù)文件系統(tǒng)層次標準(Filesystem Hierarchy Standard)協(xié)議,Linux系統(tǒng)中的配置文件會保存到/etc目錄中(詳見第6章)。如果要想獲取到該目錄中所有以host開頭的文件列表,可以執(zhí)行如下命令:

        [root@linuxprobe ~]# find /etc -name "host*" -print
        /etc/avahi/hosts
        /etc/host.conf
        /etc/hosts
        /etc/hosts.allow
        /etc/hosts.deny
        /etc/selinux/targeted/modules/active/modules/hostname.pp
        /etc/hostname

如果要在整個系統(tǒng)中搜索權(quán)限中包括SUID權(quán)限的所有文件(詳見第5章),只需使用-4000即可:

        [root@linuxprobe ~]# find / -perm -4000-print
        /usr/bin/fusermount
        /usr/bin/su
        /usr/bin/umount
        /usr/bin/passwd
        /usr/sbin/userhelper
        /usr/sbin/usernetctl
        ………………省略部分輸出信息………………

注:

進階實驗:在整個文件系統(tǒng)中找出所有歸屬于linuxprobe用戶的文件并復(fù)制到/root/findresults目錄。

該實驗的重點是“-exec {} \; ”參數(shù),其中的{}表示find命令搜索出的每一個文件,并且命令的結(jié)尾必須是“\; ”。完成該實驗的具體命令如下:

            [root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;

在本章最后,劉遄老師再多提幾句:很多讀者初次接觸到本書時都擔(dān)心因為自己的英語基礎(chǔ)不好而導(dǎo)致學(xué)不會Linux系統(tǒng),其實大可不必擔(dān)心,因為我們的圖書、培訓(xùn)課程甚至紅帽考題都是中文的。而在學(xué)習(xí)完本章后您也一定發(fā)現(xiàn)了,我們以后要使用的是Linux命令,而絕不是純粹的英語單詞,即便它們的拼寫100%相同,最終用處肯定也是不一樣的。因此就學(xué)習(xí)Linux系統(tǒng)技術(shù)來講,您跟英語達人絕對都是站在同一起跑線上的,更何況還正確地選擇了一本適合您的Linux教材。休息一下,然后開始學(xué)習(xí)第3章吧!

主站蜘蛛池模板: 洛阳市| 长汀县| 浑源县| 台州市| 朝阳县| 台中县| 湘潭县| 梅河口市| 肇庆市| 太谷县| 蓬莱市| 黔西| 漳浦县| 镇康县| 教育| 夏邑县| 甘孜县| 西吉县| 隆尧县| 余江县| 湖州市| 永川市| 姚安县| 江口县| 崇阳县| 红河县| 修武县| 罗源县| 垦利县| 开原市| 三河市| 香港| 广饶县| 平舆县| 岳普湖县| 和硕县| 宁国市| 阿瓦提县| 万安县| 资中县| 龙州县|