咱們繼續接着上篇和你們說說Linux中對目錄和文件管理所使用的命令的操做:
此處須要用到的軟件有安裝好CentOS 7的VMware虛擬機和已經鏈接過CentOS 7的Xshell遠程控制終端。
咱們打開VMware中的CentOS 7登陸到root帳戶,咱們打開終端以後先安裝一下httpd的服務,由於這次實驗中咱們須要用到其中的配置文件,具體命令以下:yum install httpd
中途須要輸入兩次y並敲回車確認安裝,最終完成後以下圖:
此時咱們須要以下命令啓動此服務:systemctl start httpd,再輸入ifconfig查看IP,爲了可以訪問咱們創建的服務,還須要輸入命令關閉防火牆:systemctl stop firewalld.service
再輸入setenforce 0,操做過程以下:
這個時候咱們把獲得的地址192.168.195.136,輸入到咱們的瀏覽器中,進入界面以後就會獲得咱們用CentOS 7搭建的Apache的網站
這個時候若是咱們想查看它其中的配置文件須要回到命令界面輸入:vim /etc/httpd/conf/httpd.conf(進入到的是配置文件目錄下的配置文件)shell
接下來的head
和tail
命令是按行進行查詢的,通常咱們在須要查看帳戶帳號信息的時候須要用到,接下來咱們進行試驗(提早將Xshell與centos 7鏈接好),進入Xshell的界面:
查詢帳戶文件的話輸入:vim /etc/passwd,獲得以下圖:
若是咱們看前10行,輸入:head /etc/passwd:
若是咱們只看前三行,輸入:head -3 /etc/passwd:
若是咱們只看尾十行,輸入:tail /etc/passwd:
接下來咱們進行統計命令(wc)的操做:
輸入:wc /etc/httpd/conf/httpd.conf:
其中:353表明行、1801表明單詞數、 11753表明字節數
若是想分別統計格式以下:
接下來咱們進行檢索和過濾命令(grep)的操做:
輸入cd /etc/httpd/conf/進入相對應目錄找到配置文件,再輸入vim httpd.conf敲回車,這時會發現其中有#號爲開頭的是註釋,是描述信息,不起任何做用;不帶#的就是功能,若是咱們在功能前面加上#,那麼功能就會失效
此時咱們只看文件中有#號的行,輸入:grep 「#」 httpd.conf,敲回車獲得全部#號的行:
若是咱們在字符終端中這樣輸入會是什麼結果,輸入:grep 「#」 /etc/httpd/conf/httpd.conf,敲回車此時只能看到末尾的看不徹底,以下圖:
這種狀態下咱們應該怎麼辦?
1.咱們輸入:grep 「#」 /etc/httpd/conf/httpd.conf > /opt/httpd01.txt(其中>爲重定向符號),此時信息導出生成到opt文件夾當中,而且起名叫httpd01.txt
2.再輸入:cd /opt/進入此目錄
3.再輸入ls查看詳細信息,此時顯示有生成的httpd01.txt的文件在此文件夾下
4.再輸入:vim httpd01.txt進入查看下,這時咱們可以看到全部帶#號的行就被所有導入到其中了,具體操做和結果以下圖:
咱們還能夠進行反向過濾(此時過濾的就是全部不帶#號的行):
輸入:grep -v 「#」 /etc/httpd/conf/httpd.conf > /opt/httpd01.txt(此處咱們將過濾的信息導入到的仍是剛剛的文件當中,咱們看看會有什麼樣的結果)
再輸入:vim httpd01.txt進入查看下,這時咱們可以看到全部不帶#號的行就被所有導入到其中了,而原先帶#號的內容則沒有了,結果以下圖:
此時咱們總結以下:重定向在此處雖然可以將導出的內容生成到一個文件當中,可是若是是同名文件,會直接覆蓋本來裏面的內容,並且不會提醒。
若是咱們想在不動到文件中原先內容的狀況下,再繼續追加應該如何操做呢?
輸入:grep 「#」 /etc/httpd/conf/httpd.conf >> opt/httpd01.txt(>>爲追加符號,此時新增的內容不會覆蓋原有的內容,會跟在以前的內容後面進行添加)此處咱們過濾的是帶有#號的行
再輸入:vim httpd01.txt進入查看下,這時咱們可以看到前面是不帶有#號的行,翻頁以後有#行被添加在後面,結果以下圖:
咱們還能夠嘗試一下cat能不能配合重定向符號使用?
輸入cat /etc/passwd > /opt/abc.txt
再輸入ls查看詳細信息
再輸入vim abc.txt,查看其中信息,這時咱們發現全部的帳戶信息被導入在這個文件中了
咱們還能夠嘗試一下cat能不能配合重定向符號使用?
輸入cat /etc/passwd > /opt/abc.txt
再輸入ls查看詳細信息
再輸入vim abc.txt,查看其中信息,這時咱們發現全部的帳戶信息被導入在這個文件中了
輸入:grep -v 「#」 /etc/httpd/conf/httpd.conf > /opt/httpd02.txt(過濾沒有#號的行導入到opt文件夾中,同時重命名爲httpd02.txt)
再輸入:vim /opt/httpd02.txt,此時咱們看到顯示出的信息都是沒有#號的,可是咱們同時也發現其中是有空行的。
這時咱們應該如何過濾空行呢?
此時若是咱們輸入:grep -v 「^$」 /opt/httpd02.txt > /opt/httpd02.txt,會顯示以下內容:
由於這個文件此時正在被使用,就沒法執行此命令!
總結:grep不能同時操做同一個文件,不能同時對一個文件作導入導出
那咱們只能新生成一個文件並把內容導過去,輸入:grep -v 「^$」 /opt/httpd02.txt > /opt/httpd03.txt
再輸入:vim /opt/httpd03.txt,此時咱們再進入此新文件中查看內容,可是裏面是空的,其中的問題是由於在以前的導入過程當中由於進程的問題,內容在被轉移過程當中直接消失,只要沒有中途的失敗,那麼獲得的正確結果應該是過濾了空行的顯示,以下圖:
此時若是咱們想顯示有幾個用戶能夠登陸系統(只顯示數字):
輸入:grep 「bash$」 /etc/passwd | wc -1敲回車,此時會顯示數字爲2(此處「|」爲管道符號,把前面一條命令的操做結果轉給下一條命令繼續執行),結果以下圖:
接下來咱們對咱們以前創建的txt文件進行壓縮和解壓縮的操做:
首先咱們找到opt下的文件,輸入:cd /opt/
再輸入:ls,能夠看到咱們之間建立的三個txt文件,並且這幾個文件中都是有內容的
咱們如今直接在此目錄下直接建立壓縮包,該如何操做?
第一步:輸入:gzip -9 http01.txt敲回車,這時壓縮包建立完成
第二步:輸入:ls敲回車,這個時候咱們能夠看到httpd01.txt.gz格式的壓縮包文件在目錄中了,可是此時咱們也能夠發現源文件消失,過程結果以下圖:
結論:直接用gzip或bzip2格式建立壓縮包時,一旦建立壓縮包以後,源文件就會消失vim
解壓的操做以下:
第一步:輸入:gzip -d http01.txt.gz敲回車,這時候解壓縮完成
第二步:輸入:ls敲回車,這個時候咱們能夠看到httpd01.txt.gz格式的壓縮包從目錄中消失,此時http01.txt的文件已經被解壓出來,過程結果以下圖:
總結:直接用gzip -d/9或bzip2 -d/9格式解壓縮包時,一旦文件被解壓出來以後,壓縮包就會消失centos
那麼咱們用什麼樣的方法才能像微軟同樣,使源文件不消失呢?
此時咱們就要用到歸檔命令,tar命令
例如此時咱們要把目錄下剛剛的httpd01.txt換成gzip格式:
第一步:輸入:tar czvf httpd.tar.gz httpd*.txt,此時就將目錄下的httpd開頭的txt文件一塊兒打到了壓縮包裏瀏覽器
第二步:輸入:ls,能夠看到三個源文件沒有消失,並且壓縮包建立成功,過程和結果以下圖:bash
咱們再對此壓縮包進行解壓到data目錄下
第一步:輸入:tar zxvf httpd.tar.gz -C /data/敲回車,此時三個txt文件被解壓到了data目錄下
第二步:輸入ls /data/敲回車,此時咱們就能夠看到三個文件在目錄中,過程和結果以下圖:less
那麼若是建立bzip2的壓縮包步並解壓縮到data目錄中的操做驟以下:編輯器
咱們接着以前的實驗文檔進行操做,
輸入:vim httpd01.txt,此時咱們敲回車進入的是文本的命令模式:
輸入:1G(跳轉至第一行)
輸入::set nu(顯示行號)
此時咱們怎麼在命令模式下進入輸入模式呢?
咱們以光標所在點的英文字母「S」爲參考點
1.輸入:a,末行顯示插入,此時進入插入模式,輸入內容abc,內容插入在S以後
按Esc退出到命令模式
2.光標回到「S」輸入「i」,此時進入插入模式,輸入內容abc,內容插入在S以前
按Esc退出到命令模式
3.光標回到「S」輸入「o」,此時進入插入模式,輸入內容abc,內容插入在S的下一行
按Esc退出到命令模式
4.光標回到「S」輸入「O」,此時進入插入模式,輸入內容abc,內容插入在S的上一行
按Esc退出到命令模式
此時咱們將光標移動到英文字母「R」處做爲參考點:ide
/Directory
就是自上而下查找出文本中有這個單詞的地方,此時再按n就是向下尋找,按N就是向上尋找?Directory
就是自下而上的查找, 按N就是向上尋找:q!
:wq
,或者在命令模式按ZZ就能夠保存退出了接下來咱們仍是使用以前test01.txt,此處進行文件替換的操做:
首先進入文檔中編輯其中一行內容爲this this this is test01,而且粘貼到下面全部行
此時我想修改光標所在行第一個單詞「this」改成「the」,輸入::s .this/the/
此時我想修改光標所在行剩餘兩個單詞「this」改成「the」,輸入::s .this/the/g
只替換9-15行的全部單詞「this」改成「the」,輸入::9,15 s .this/the/g
替換全文的單詞「this」改成「the」,輸入::% s/this/the/g
敲回車,此時全文的this改成the,結果以下圖:網站