1. 程式人生 > >Linux基礎(四)

Linux基礎(四)

Linux基礎(四)

一、檔案壓縮和打包
  1.gzip命令(應用廣泛):可以解開compress,zip與gzip等軟體所壓縮的檔案
   -c 將壓縮的資料輸出到標準輸出(stdout)上
   -d 解壓縮
   -t 可以用來檢驗一個壓縮檔案的一致性,看看檔案有無錯誤
   -v 可以顯示出原檔案/壓縮檔案的壓縮比的等資訊
   -(1,2,…,9)壓縮等級,1最快,但是壓縮比較差;9最慢,但是壓縮比最好,預設是6
   -l 檢視壓縮檔案的壓縮比:gzip -l *.gz
   eg:
    壓縮:gzip -v install.log
    解壓縮:gzip -d install.log.gz
    注意這方式無論壓縮還是解壓縮原始檔都將不再存在
    gzip -c install.log直接輸出到終端上
     gzip -c install.log > install.log.gz可以保留原檔案並且可以將壓縮檔案之間改名
   2.zcat檢視壓縮檔案內容
    zcat .gz 檢視全部內容
    zcat .gz|head -n 檢視前n行
    cat可以讀取純文字檔案,那個zcat則可以讀取純文字檔案被壓縮後的壓縮檔案
   3.bzip2命令
    -c 將壓縮的過程產生的資料輸出到標準輸出(stdout)
    -d 解壓縮的引數
    -k 保留原始檔,而不會刪除原始的檔案
    -z 壓縮的引數
    -v 可以顯示出原檔案/壓縮檔案的壓縮比等資訊
    -(1,2,…,9)與gzip同樣的,都是在計算壓縮比的引數
    eg:
     壓縮bzip2 -z install.log//刪除原始檔
      bzip2 -zk install.log//保留原始檔
     解壓bzip2 -d install.log.bz2//刪除原始檔
      bzip2 -dk install.log.gz2//保留原始檔
   4.檔案打包tar命令
    -c 建立打包檔案
    -t 檢視打包檔案的內容含有哪些檔案
    -x 解打包或解壓縮的功能,可以搭配-C大寫在特定到特定目錄開啟
    -j 通過bzip2的支援進行壓縮/解壓縮:此時檔案最好為

.tar.gz2
    -z 通過gzip的支援進行壓縮/解壓縮:此時檔案最好為
.tar.gz
    -v 在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來
    -f filename:-f 後面跟處理後文件的全名稱(路徑+檔名+字尾名)
    -C 目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以用這個選項
    -p 保留備份資料的原本許可權與屬性,常用於備份(-c)重要的配置檔案
    --exclude=FILE:在壓縮的過程中,不要將那些檔案打包
    -c -t -x不可同時出現在一串指令中

tar常用的指令組合
    1.打包和壓縮
     tar -zcv -f [/路徑/]filename.tar.gz被壓縮的檔案或目錄
     tar -jcv -f [/路徑/]filename.tar.bz2被壓縮的檔案或目錄
    2.解壓
     tar -zxv -f[/路徑/]filename.tar.gz
     tar -jxv -f[/路徑/]filename.tar.bz2
    解壓到指定目錄
     tar -zxv -f[/路徑/]filename.tar.gz -C 指定目錄
     tar -jxv -f[/路徑/]filename.tar.bz2 -C 指定目錄
     filename前帶路徑表示該路徑下的,反之表示當前目錄下
     查詢shells檔案在壓縮包中是否存在 tar -ztv -f [/路徑/]filename.tar.gz|grep ‘shells’
     僅解壓出shells檔案 tar -zxv -f etc01.tar.gz etc/shells
二、rpm安裝軟體


   1.安裝
    rpm -ivh package_name
    選項與引數
     -i:install的意思
     -v 檢視更細部的安裝資訊畫面
     -h 以安裝資訊列顯示安裝進度
    安裝多個rpm包 rpm -ivh a.rpm b.rpm
    安裝網上某個位置rpm包 rpm -ivh http://website.name/path/pkgname.rpm
    小貼士:rz:從本機到虛擬機器拷貝軟體 sz從linux虛擬機器到本機,如果輸入rz提示命令沒找到那麼沒有安裝lrzsz程式,訪問http://rpmfind.net/linux/rpm2html/serach.php?query=lrzsz 下載lrzsz-0.12.21-15.x86_64.rpm
    2.升級與更新
     rpm -Uvh <package_name> -Uvh後面接的軟體如果沒有安裝過,系統會直接安裝,若後面接的軟體安轉過但版本較舊,則更新至新版
     rpm -Fvh <package_name> -Fvh如果後面接的軟體並未安裝到linux系統上,則該軟體不會被安裝,只有已安裝的軟體才會被升級
    3.rpm查詢
     rpm在查詢的時候,其實查詢的地方是在/var/lib/rpm這個目錄下的資料庫檔案
     -q 僅查詢,後面接的軟體名稱是否有安裝
     -qa 列出所有的已經安裝在本機Linux系統上面所有軟體名稱
     -qi 列出該軟體的詳細資訊,包含開發商,版本和說明等
     -ql 列出該軟體所有的檔案與目錄所在完整檔名
     -qc 列出該軟體的所有配置檔案
     -qd 列出該軟體的所有說明檔案
     -qR 列出和該軟體有關的相依軟體所含的檔案
     -qf 由後面接的檔名,找出該檔案,屬於哪一個已安裝的軟體,查詢某個RPM檔案內含有的資訊
     -qp[icdlR]注意 -qp後面接的所有引數以上面說明一致,但用途僅在與找出某個RPM檔案內的資訊,而非已安裝的軟體資訊
     eg:
      檢視是否安裝jdk rpm -qa|grep jdk
      查詢所有凶已經安裝的包,前四個 rpm -qa|head -n 4
      查詢lrzsz所包含的檔案及目錄 rpm -ql lrzsz
      檢視安裝軟體的相關資訊 rpm -qi jdk1.8.0_111-1.8.0_111-fcs.x86_64
      列出jdk的配置檔案 rpm -qc jdk1.8.0_111-1.8.0_111-fcs.x86_64
      列出說明檔案 rpm -qd apr
      檢視需要依賴 rpm -qR apr
    4.rpm檢查
     找出有關的軟體名 rpm -qa|grep apr
     解除安裝軟體 rpm -e apr
三、yum安刪更軟體

  1.配置epel
   1.確認版本 cat /etc/redhat-release
   2.下載epel的rpm安裝包 
   wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
   3.安裝 rpm -ivh
   4.更新yum源 yum repolist
  2.yum查詢引數
   serach 查詢某個軟體名稱或是描述的關鍵字
   list 列出目前yum所管理的所有軟體名稱與版本類似 rpm -qa
   info 同上,格式不太一樣,不過有限類似 rpm -qai的執行結果
   eg:
    查詢jdk相關的軟體包 yum search jdk
    檢視beakerlib軟體包功能 yum info beakerlib
    列出yum伺服器上提供的所有軟體的詳細資訊20條  yum info|head -20
    列出yum伺服器上面提供的所有軟體名稱100條 yum list|head -100
    列出目前伺服器上可供本機進行升級的軟體有哪些 yum install updates
    列出目前伺服器上xz.x86_64可更新版本 yum list updates|grep xz.x86_64
   3.yum安裝/升級/解除安裝軟體
    yum [install|update|remove] 軟體名
    install 後面要安裝的軟體
    update 後面接要升級的軟體,若要升級整個系統就直接update即可
    remove:刪除某個軟體時,依賴於該軟體並已經安裝到系統中的其他軟體或者包,會被一併刪除
   4.yum安裝hadoop分散式軟體
    yum list|grep hadoop 發現沒有需要在/etc/yum.repos.d下自己配置repo檔案 http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo
   5.建立本地yum源
    1.rpm -qa|grep httpd檢查是否有web伺服器,如果沒有則安裝
    2.建立本地web服務yum intall httpd
    3.安裝自帶工具:yum install yum-utils createrepo
    4.在/var/www/html下執行 reposync -r cloudera-cdh5
    5.通過http://ip:port專案名來訪問本地yum源
    6.最後修改/etc/yum.repos.d/xxx.repo 檔案中的baseurl換成本地地址
四、shell基礎
  1.變數讀取
   1.通過echo讀取
    命令格式:echo $ variable
    eg:
     讀取登陸使用者名稱:echo $ LOGNAME
     讀取使用者home目錄:echo $ HOME
     讀取當前系統預設的shell:echo $ SHELL
    2.另一種格式 echo $ {LOGNAME}
   2.環境變數
    1將普通變數變為環境變數
     1.export 變數名=值
     2.變數名1=值1 變數名2=值2 export 變數名1 變數名2
   3.區域性變數的設定規則
    1.變數與變數內容以一個等號"=“連結(name=value)
    2.等號兩邊不能直接接空格符
    3.變數名稱只能是英文字母,數字,下劃線,但開頭不能是數字
    4.變數內容若有空格符可使用雙引號或單引號將變數內容結合起來
     1.雙引號中的特殊字元保有原本的特性
     2.單引號中的特殊字元僅為一般字元
    5.可用轉義字元”"將特殊字元變為一般字元
    6.把一個命令定義為一個變數
     1.version= $ (uname)
     2.cmd=date+%F
    7.資料重定向
     將某個命令列執行後應該要出現在螢幕上的資料,給他傳輸到其他地方,例如傳輸到檔案或是其他命令
     執行命令時候會有標準輸出和標準錯誤輸出
     標準輸出是指命令執行之後,傳回正確資訊的輸出目標
     標準錯誤輸出是命令執行失敗後,所傳回錯誤資訊的輸出目標
     標準輸入(stdin):編號為0
     標準輸出(stdout):編號為1
     標準錯誤輸出(stderr):編號為2
     1>:以覆蓋的方法,將正確的資料輸出到檔案;
     1>>:以累加的方法,將正確的資料輸出到檔案;
     2>:以覆蓋的方法,將錯誤輸出的資料輸出到檔案;
     2>>:以累加的方法,將錯誤輸出的資料輸出到檔案;
    8.命令執行判斷
     $ ?:命令回傳值
     cmd1&&cmd2:若cmd1執行完畢且正確執行( $ ?=0),則開始執行cmd2,若cmd1執行完畢且為錯誤( $ ?≠ 0),則cmd2不執行。
     ||:若cmd1執行完畢且正確執行( $ ?=0),則cmd2不執行。
     若cmd1執行完畢且為錯誤($ ?≠0),則開始執行cmd2
     舉例:如果/tmp/test存在,則建立/tmp/test/jinxf
     ls /tmp/test && touch /tmp/test/jinxf