在Linux系統中對於文件的打包壓縮與解壓的方法,以及讓用戶可以基於一個關鍵詞在文本文件中搜索匹配信息,與基於指定的名稱或屬性在整個文件系統中搜索匹配特定文件的超級實用命令。linux
tar命令用於對文件打包壓縮或解壓,格式爲:「tar [選項] [文件]」。ide
Windows系統中最多見的壓縮格式是.rar與.zip吧,而Linux系統中常見的格式比較多,但主要使用的是.tar或.tar.gz或.tar.bz2格式,同窗們不用擔憂格式好多而記不住,其實這些大部分都是由tar命令來完成的,我來把最重要的幾個參數講給大家下,首先「-c」參數是用於建立壓縮文件的,「-x」參數是用於解壓文件的,所以這兩個不能同時放一塊兒使用,其次「-z」參數是指定使用Gzip格式來壓縮解壓文件,「-j」參數是指定使用bzip2參數來壓縮解壓文件,解壓時候我們則是根據文件的後綴來決定是何種格式參數,而有些打包操做要數個小時,屏幕沒有輸出的話你必定會懷疑電腦有沒有死機了,也很差判斷打包的進度狀況,很是推薦使用「-v」參數來不斷顯示壓縮或解壓的過程給用戶,「-C」參數用於指定要解壓到的那個指定的目錄,而「-f」參數特別重要,它必須放到參數的最後一位,表明要壓縮或解壓的軟件包名稱。所以平時我會通常使用「tar -czvf 壓縮包名稱.tar.gz 要打包的目錄」命令來將指定的文件來打包,解壓的話則是「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目錄中:spa
[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
find命令用於查找文件,格式爲:「find [查找路徑] 尋找條件 操做」。orm
「Linux系統中的一切都是文件」。在Linux系統中的搜索工做通常都是經過find命令來完成的,它能夠根據不一樣的文件特性來作爲匹配項(如文件名、大小、修改時間、權限等信息),一旦匹配到了則會默認爲用戶顯示到屏幕上來,基礎的匹配項目請見下表便可,我主要講解下「--exec」參數重要的做用,這個參數是用於將find命令搜索到的結果交由給後面的命令再進一步作處理,十分相似於我們將在下一章中提到的管道符技術。
ip
Linux系統中的配置文件根據FHS協議會被保存到/etc目錄中(第六章精講),若是我們要想獲取到該目錄中全部以host開頭的文件就能夠這樣作:get
[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
想要在整個系統中搜索全部權限中包括SUID權限的文件,只需使用減號-4000便可:it
[root@linuxprobe ~]# find / -perm -4000 -print /usr/bin/fusermount /usr/bin/su /usr/bin/umount /usr/bin/passwd /usr/sbin/userhelper /usr/sbin/usernetctl
拔高題目:在整個的文件系統中找出全部歸屬於linuxprobe用戶的文件並複製到/root/findresults目錄。io
此題的重點是"-exec {} \;"其中的{}表明find命令搜索出的逐個文件,而且記得命令的結尾必須是\;class
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -arf {} /root/findresults/ \;
grep命令用於對文本內容進行關鍵詞的搜索匹配,格式爲:「grep [選項] [文件]」 (不是實時的噢)
能夠把grep命令看成是用途最普遍的文本搜索匹配工具,參數雖然不少但基本是用不到的,我用將近七年的工做和教學經驗提出本書籍核心「去掉不實用」的寫做理念絕對不是亂說,一名Linux講師若是寫書的水平只能停留在「技術的搬運工」而不成成爲一名對真正優質技術知識的提煉者,那絕對會害了一大波學生,所以劉遄老師在這裏只講兩個最經常使用的參數,只要會使用「-n」參數顯示搜索到信息的行號,使用「-v」參數用於反選信息(即沒有包含關鍵詞的全部信息行)就幾乎能完成你之後80%的工做須要,至於其餘上百個參數,之後萬一工做遇到了,再來用「man grep」命令查一下也來得及。
Linux系統中的/etc/passwd文件是保存着全部用戶信息的文件,而一旦用戶的登錄終端被設置成「/sbin/nologin」則再也不容許登錄系統,所以我們能夠經過使用grep命令來匹配出當前系統中全部不容許登錄系統的用戶信息:
[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