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的支援進行壓縮/解壓縮:此時檔案最好為
-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