1. 程式人生 > >Linux常用開發命令

Linux常用開發命令

一、    將一個命令的結果作為下一個命令的引數

符號:` `

  說明:反引號,在鍵盤的左上角,數字1的左邊,不要將其同單引號(’)混淆。

  功能:反引號括起來的字串被shell解釋為命令列,在執行時,shell首先執行該命令列,並以它的標準輸出結果取代整個反引號(包括兩個反引號)部分。

  示例:(tomcat.pid檔案中存放有容器的程序Id)

  

$()

  說明:效果同` `,寫shell腳步時看起來更加清晰。

  示例:

  

xargs

  功能:通過緩衝方式(批處理,效率比較高)並以前面命令列的輸出結果作為後面命令的引數。

  常用引數:

    `-n`:一次傳遞幾個引數

    `-L`:一次傳遞幾行引數

    `-I`:標示引數使用位置

  示例一:

  

  示例二:

  -i 引數或者-I(大寫i)引數配合{},在任何位置引用前面命令的結果:

  

  注意,加-i 引數直接用 {}就能代替管道之前的標準輸出的內容;加 -I 引數 需要事先指定替換字元。

  若忽略 xargs 的 options 來看的話, cm1 | xargs cm2,可以單純看成: cm2`cm1`,因此, find .... |xargs rm 也可作 rm `find ...` 來處理;xargs由於是併發處理的,可能由於引數數量過多(成千上萬),導致後面的命令執行失敗,若遇此情況,可以用find .... -exec   rm {} \; 替換,此命令為逐條處理。

二、    一個命令列上執行多個命令

符號 ;

  說明:被分號(;)所分隔的命令會連續的執行下去,即使前面有錯誤的命令也會繼續執行後面的命令。

  示例:

  

符號 &&

  說明:被 && 所分隔,那麼命令也會一直執行下去,但是中間有錯誤的命令存在就不會執行後面的命令,沒錯就直行至完為止。

  示例:

  

符號 ||

  說明:被雙豎線 || 所分隔,那麼一遇到可以執行成功的命令就會停止執行後面的命令,而不管後面的命令是否正確與否。如果執行到錯誤的命令就是繼續執行後一個命令,一直執行到遇到正確的命令為止。

  示例:

  

三、    壓縮&解壓

tar

  壓縮:tar –cvf 檔名.tar *.jpg

          -c:建立新壓縮檔案

          -v:顯示所有過程

          -f:使用檔案名字,切記,這個引數是最後一個引數,後面只能接檔案名。

  解壓:tar –xvf 檔名.tar

          -x:解壓檔案。

  追加:tar –rf檔名.tar *.gif  

     -r向壓縮歸檔檔案末尾追。將所有.gif的檔案增加到 檔名.tar 的包裡面去。加檔案。

  更新:tar -uf all.tar logo.gif

          -u更新原壓縮包中的檔案,更新原來tar包all.tar中logo.gif檔案。

  檢視:tar –tf all.tar

          -t是列出檔案的意思,列出all.tar包中所有檔案。

tar.gz (只需要在tar命令上加-z即可,例如:)

  壓縮:tar –zcvf 檔名.tar.gz *.jpg

  解壓:tar –zxvf 檔名.tar.gz

          -z帶有gzip屬性的。

zip

  壓縮:

         把/home目錄下面的mydata目錄壓縮為mydata.zip

      zip -r mydata.zip mydata #壓縮mydata目錄

         把/home目錄下面的abc資料夾和123.txt壓縮成為mydata.zip

      zip -r mydata.zip abc 123.txt

  解壓:

         把/home目錄下面的mydata.zip解壓到mydata目錄裡面

      unzip mydata.zip -d mydata

         把/home目錄下面的mydata.zip直接解壓到/home目錄裡面

      unzip mydata.zip

         把/home目錄下面的abc12.zip、abc23.zip、abc34.zip同時解壓到/home目錄裡面

      unzip abc\*.zip

  檢視:

    檢視把/home目錄下面的mydata.zip裡面的內容

      unzip -v mydata.zip

  驗證:

    驗證/home目錄下面的wwwroot.zip是否完整

      unzip -t wwwroot.zip

  主要引數解析:

  -c:將解壓縮的結果

  -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

gz

  壓縮:

              把test6目錄下的每個檔案壓縮成.gz檔案:

                     gzip*                             不保留原始檔

                     gzip–c file >fileName.gz  保留原始檔

              壓縮一個tar備份檔案,此時壓縮檔案的副檔名為.tar.gz:

                     gzip-r log.tar

              遞迴地壓縮目錄:

                     gzip-rv test6

                     這樣,所有test下面的檔案都變成了*.gz,目錄依然存在只是目錄裡面的檔案相應變成了*.gz.這就是壓縮,和打包不同。因為是對目錄操作,所以需要加上-r選項,這樣也可以對子目錄進行遞迴了。

       解壓:

              把當前目錄每個壓縮的檔案解壓,並列出詳細的資訊

                     gzip–dv *   (或者用gunzip相當於gzip –d ,例如gunzip test.gz)

                     gzip–c file.gz>newFileName   保留原始檔

              遞迴地解壓目錄

                     gzip–dr test6

       檢視:

              詳細顯示當前目錄每個壓縮的檔案的資訊,並不解壓

                     gzip –l *

  主要引數解析:

  

rar

  壓縮:

              rara file.rar file1              保留原始檔

              rarm file.rar file1       不保留原始檔

              說明:如果此時abc.rar檔案不存在,會自行建立abc.rar文件案,如果abc.rar檔案已經存在,則將file1檔案壓縮排abc.rar檔案中,若abc.rar檔案中已存在一個file1檔案,則會更新file1檔案。

              注意:如果只輸入"rar a file1.rar"命令,而沒有接檔名或目錄名的話,會將當前目錄下所有的檔案和資料夾壓縮排file1.rar文件中。這點要注意一下。

       解壓:

rar efile.rar

              rarx file.rar

              說明:假設file.rar目錄中有一個名為file1的檔案和一個名為test的目錄,test目錄中有一個名為file2的檔案。使用e命令,會將abc.rar中的file1檔案連同test目錄下的file2檔案解壓到當前目錄。如果想保持abc.rar目錄中的目錄結構請使用x命令。

       刪除:

              rard file.rar file1

              刪除abc.rar檔案中的file1檔案。

四、    檢視檔案

檢視全部

  cat:可以一次顯示整個檔案,如果檔案比較大,只能看到末尾部分,使用不是很方便;從第一行開始顯示。

  nl:同cat,顯示行號

  tac:類似於cat;從最後一行開始顯示。

  more:可以讓螢幕在顯示滿一螢幕時暫停,此時可按空格健繼續顯示下一個畫面,或按Q鍵停止顯示。

  less:也可以分頁顯示檔案,和more命令的區別就在於它支援上下鍵捲動螢幕,當結束瀏覽時,只要在less命令的提示符“: ”下按Q鍵即可。

  od:以二進位制方式顯示文件內容。

  示例:

       cat install.log | grep “i686”| more

              命令實際上是將install.log檔案內的所有內容管道給grep,然後查詢包含i686的文字行,最後將查詢到的內容管道給more分頁輸出。

       cat install.log | grep “i686”| less

              含義也是一樣只不過最後管道給的不是more而是less。

檢視部分

  tail:僅僅顯示後面幾行;tail-500f bus.log,如需逆序顯示加-r

  head:僅僅顯示前面幾行

過濾grep

  只過濾匹配行,直接grep[關鍵字]即可(反取加-v引數),如想過濾匹配行的上下幾行,規則如下:

  $grep -5'parttern' inputfile //列印匹配行的前後5行 

  $grep -C 5'parttern' inputfile //列印匹配行的前後5行 

  $grep -A 5'parttern' inputfile //列印匹配行的5行 

  $grep -B 5'parttern' inputfile //列印匹配行的5行

  或操作:

  grep -E '123|abc' filename  // 找出檔案(filename)中包含123或者包含abc的行

  egrep '123|abc' filename    // 用egrep同樣可以實現

  awk '/123|abc/' filename   // awk 的實現方式

  與操作:

  grep pattern1 files | grep pattern2 //顯示既匹配 pattern1 又匹配 pattern2 的行

  cat files|grep pattern1|grep pattern2 //注意利用管道的概念

  其它操作:

  grep -i pattern files //不區分大小寫地搜尋,預設情況區分大小寫

  grep -l pattern files //只列出匹配的檔名

  grep -L pattern files //列出不匹配的檔名

  grep -w pattern files //只匹配整個單詞,而不是字串的一部分(如匹配‘magic’,而不是‘magical’)

  grep -C number pattern files //匹配的上下文分別顯示[number]行

awk

  基礎文字:(以下操作都圍繞此檔案進行)

  

  輸出某幾列:(預設的列分隔符為空格)

  awk '{print $1,$4}' wzp.log

  awk '{printf "%-16s%-10s\n",$1,$4}' wzp.log

  

  指定分隔符:(例如#)

  awk -F \# '{print $1,$3}' wzp.log

  awk 'BEGIN{FS="\#"} {print$1,$3}' wzp.log

  awk -F '[#:]'  '{print $1,$3,$4}' wzp.log

  

  自定義變數:(-v)

  awk -va=10 -vb=hello '{print $4,$4+a,$4b}'wzp.log

  

  過濾符合條件的記錄行:

  根據運算子過濾:

    awk '$4=="t2"' wzp.log

    awk '$2=="INFO" &&$13>=2' wzp.log

  

  運算子種類:

  

  根據正則過濾:~ 表示模式開始;// 中是模式內容

    awk '/t2/' wzp.log

    awk 'BEGIN{IGNORECASE=1} /t2/' wzp.log

    awk '$3 ~ /3/ {print $1,$2,$3}' wzp.log

  

  根據指令碼檔案過濾:

   awk指令碼示例:

   注意兩個關鍵詞BEGINEND

   BEGIN{ 這裡面放的是執行前的語句 }

   END {這裡面放的是處理完所有的行後要執行的語句 }

   {這裡面放的是處理每一行時要執行的語句}

  

  內建變數:(可以在腳步任意地方引用)

  

sed

  概述:

    grep 更適合單純的查詢或匹配文字;awk 更適合格式化文字,對文字進行較複雜格式處理;sed 更適合編輯匹配到的文字。

  語法:

    sed [-hnV][-e<script>][-f<script檔案>][文字檔案]

  

  舉例:

 

  實戰一:例如取IP地址

  

  實戰二:取檔案中間位置的內容

  

vi(只簡單介紹常用的,簡單的不說)

  查詢

    向下查詢:./

    向上查詢:?

    定位下一個匹配下:n

  刪除(在命令列模式即可,不用進入編輯模式)

         刪除游標後一字元:x

         刪除游標後n字元:nx

         刪除游標前一字元:X

         刪除游標前一字元:nX

  撤銷(在命令列模式即可,不用進入編輯模式)

         撤銷上一步操作:u

    恢復上一步被撤銷的操作:Ctrl+r

  行號

    顯示行號:setnumber/ set nu

    取消行號:setnonumber/set nonu

  游標

         跳到下一單詞:w(類似e)

         跳到上一個單詞:b

         跳到檔案首行:gg(同H)

         跳到檔案尾行:G(同L)

         跳到檔案第n行:nH(同nG)

         跳到行首:^(同0)

         跳到行尾:$

  下面附上超級牛x的vi鍵點陣圖:

  

五、    授權

chmod

       Linux/Unix的檔案呼叫許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以給這三級人員授權、減權。

       語法

              chmod [-cfvR] [--help] [--version]mode file...

  

       示例:

  

       此外chmod也可以用數字來表示許可權如 : chmod 777 file 與 chmod a=rwxfile效果相同;chmod ug=rwx,o=xfile 與 chmod 771 file 效果相同。詳情如下:

  

  這裡要說一下chmod4755和chmod 755的區別:(1)755不用多說,即讓檔案所有者可讀可寫可執行;與檔案所有者同屬一個使用者組的其他使用者可讀可執行;其它使用者組可讀可執行。(2)chmod 4755與chmod 755 的區別在於開頭多了一位,這個4表示其他使用者執行檔案時,具有與所有者相當的許可權。就是為了防止其他使用者執行檔案時,該檔案可能需要訪問一些只有root使用者才有權訪問的其它檔案。因此,雖然其它使用者有該檔案的可執行許可權,但是沒有該檔案關聯的一些檔案的可執行許可權,從而不能執行該檔案。這種情況下,就可以用 chmod 4755,從而讓其它使用者擁有了檔案擁有者一般的該檔案執行許可權。

chown

       Linux/Unix是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 將指定檔案的擁有者改為指定的使用者或組,使用者可以是使用者名稱或者使用者ID;組可以是組名或者組ID;檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。

  一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。

  

  示例: