rpm與yum

rpm包及yum

包查詢

rpm -q –query  搭配別的選項可用來包查詢

-a

-f

-p rpmfile:針對尚未安裝的程序包文件做查詢操作  

-p 選項參數為文件名(一定要指定路徑)

例子:

rpm -qpl /media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm

可用來模擬安裝, 模擬安裝成功后查看在系統中產生的文件

–whatprovides CAPABILITY :  可用來查看某種功能是由哪個包提供

rpm -q –whatrequires CAPABILITY  查詢指定的CAPABILITY被哪個包所依賴

 

解壓rpm包:

rpm2cpio 包文件 | cpio -itv  預覽包內文件

rpm2cpio 包文件 | cpio -id "*.conf"  釋放包內文件

 

包查詢

–changelog  查詢rpm包的changelog

-c   查看程序的配置文件

-d    查看程序的文檔

-i    inforation

-l    所有的系統文件

–scripts  : 程序包自帶的腳本片段

-R : 查看指定的程序包所依賴的CAPABILITY

–provides  列出指定程序包所提供的CAPABILITY

 

卸載包:

rpm -e 包名

rpm -e 是不可以直接xxx, xxx是沒有.rpm后綴的。

 

包校驗:

rpm -V  包名

用來校驗包只安裝后, 系統中的文件的變化。

 

包來源合法性驗證及完整性驗證:

完整性驗證: SHA256

來源合法性驗證: RSA

rpm -K|checksig rpmfile 檢測包的完整性及合法性

rpm –import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7 發行版光盤提供: RPM-GPG-KEY-CentOS-7

rpm -qa gpg-pubkey* // 可用來查看rpm包是否導入公鑰

 

rpm數據庫

/var/lib/rpm

rpm –initdb | –rebuilddb

initdb: 初始化   有許多文件

如果事先不存在數據庫, 則新建之

否則, 不執行任何操作

–rebuilddb:重建  只有Packages文件夾

無論當前存在與否, 直接重新創建數據庫。

 

yum dnf

yum的工作的方式是C/S模式。 yum的服務端其實是文件服務器。

yum只支持三種文件服務器

http://

ftp://

file:///

 

yum客戶端的配置文件:

/etc/yum.conf

/etc/yum.repos.d/*.repo

 

[repositoryID]   唯一性

name=xxxxxxxxxxxx

baseurl=xxxxxxxxx

enabled=

gpgcheck=

gpgkey=

enablegroups

failovermethod={roundrobin|priority}

默認: roundrobin   意外隨記挑選;

cost=  默認為1000  開銷

while 循環的特殊用法(遍歷文件的每一行):

 

Shell編程模塊

while read line;do

循環體

done < /PATH/FROM/SOMEFILE

 

for(())  適合于數字循環

select 循環與菜單(使用與交互式的建立)

select variable in list

do

循環體指令

done

加入list為{a,b,c}

這會產生一個的界面

1>a

2>b

3>c

用戶可以使用1 2 3 進入相應的模塊功能, 而不是a b c

select  循環主要用于創建菜單,按數字順序排列的

菜單項將顯示在標準錯誤上,并顯示 PS3  提示符,

等待用戶輸入

用戶輸入菜單列表中的某個數字,執行相應的命令

用戶輸入被保存在內置變量 REPLY  中。

 

for 與 select 后面都可以沒有循環列表, 而可以使用位置變量。

函數是不能單獨使用, 而應該被調用使用。 被調用的函數與依附的shell程序是一個整體, 沒有父子進程之說。

 

定義函數的三種方式:

1>. function myfun1 {}    

2>. myfun2() {}

3>. function myfun3() {}

{ 必須和函數名隔開或則是直接從下一行開始。

 

C、java都非常相似, 函數的退出狀態碼:

(1). 取決于函數中執行的最后一條命令的退出狀態碼

(2). 自定義退出狀態碼, 其格式為:

return 從函數中退出, 由最后命令的狀態決定返回值

return 0 無錯誤返回

return 1-255  有錯誤返回

return是用于函數中的, 而不是不用于自己編寫的腳本程序中, 用來返回返回以值并且終止函數。

如果在自己寫的腳本中想要終止的話, 使用exit退出當前shell就ok了。

 

set  查看變量和函數

unset  取消變量和函數

 

函數可以接受參數:

傳遞參數給函數:調用參數時,在函數名后面以空白分隔給定參數列表即可;例如"testfunc  arg1 arg2 …"

函數體內部的參數, 是函數本身的參數, 而函數為參數則是整個shell腳本的參數。

add(){

        ((sum=$1+$2))   函數內部的參數

        echo "sum=$sum"

}

add $1 $2    而這兩個參數則是函數外部的參數

 

函數變量:

壞境變量: 當前shell和子shell有效

export a=1

echo $a

aa(){

        a=2

}

aa

echo $a

 

本地變量: 只在當前shell進程有效,為執行腳本會啟動

專用子shell進程;因此,本地變量的作用范圍是當前shell腳本

程序文件,包括腳本中的函數。

 

局部變量:函數的生命周期;函數結束時變量被自動銷毀

注意:如果 函數中有局部變量,如果其名稱同本地變量, 使用局部變量。

局部變量只能作用于函數中, 這樣僅僅自己使用, 不影響函數外部的與其同名的名字

a=1

echo $a

aa(){

        local a=2

}

aa

echo $

執行結果:

[root@centos7 0819]# bash export.sh

1

1

遞歸:

1>. 自己調用自己

2>. 告訴自己什么時候就停下來不調用了

3>. 遞歸是由層數限制的。

#!/bin/bash

#

fact(){

if [ $1 -eq 0 -o  $1 -eq 1 ];then

echo 1

else

 sum=$[$1*$(fact $[$1-1])]

 echo $sum

fi

}

fact 5

 

如何判斷輸入的參數為

expr xxx + 0  只有整數才能參加運算, 通過命令的返回結果來判斷xxx是否為整數。

 

            作業: 斐波拉契數列遞歸

feibolaqi.main

feibo() {

if [ $1 -eq 0 ];then

echo "0"

elif [ $1 -eq 1 ];then

echo "1"

else

echo "$[$(feibo $[$1-1])+$(feibo $[$1-2])]"

fi

}

feibolaqi.sh

while true;

do

read -p "please input one zheng interger:" int

if ! expr $int + 0 >> /dev/null;then

echo "please input one integer!!!"

elif [ $int -lt 0 ];then

echo "please input one zheng integer!!!"

else

. ./feibolaqi.main

feibo $int

exit

fi

done

 

 

 

 

 

 

 

 

原創文章,作者:458813466,如若轉載,請注明出處:http://www.www58058.com/38770

(0)
458813466458813466
上一篇 2016-08-24 10:26
下一篇 2016-08-24 10:27

相關推薦

  • 馬哥教育網絡班22期第五周課程練習1

    1、cat /etc/passwd  | egrep "^root|^fedora|^user1"| cut -d":" -f1,7  2、egrep -o  "[^[:space:]]+\(\)" /etc/rc.d/init.d/functions   3…

    Linux干貨 2016-09-15
  • N24期第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 vim /etc/group,增加此行 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home…

    Linux干貨 2016-11-22
  • grup修復與安裝操作介紹

    一、bgru Stage1的安裝     1、stage1存儲在MBR的前446字節,首先破壞。使用dd命令     2、使用grub-install命令安裝修復grub stage1     3、使用grub命令修復 二、進入救援模式,修改grub     1、先破壞grub …

    Linux干貨 2016-06-03
  • M20 – 1- 第三周(1):課堂練習與作業

    課堂練習: 1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為"Gentoo Distribution" [root@localhost ~]# useradd -G bin,root -s /bin/csh -c&nbsp…

    Linux干貨 2016-08-08
  • Linux運維之進程管理

    一、進程概念 進程是內核的一個功能,在Linux中,運行一個程序或命令可以出發一個事件而驅動一個PID,在linux系統中,系統只識別二進制程序文件,我們可以通過執行系統上的二進制程序來運行程序,進而產生進程。在linux系統中第一個進程是init程序,它是系統開機第一個加載的程序,用來支撐系統的正常運行的一個程序,內核啟動的一個用戶級進程。   …

    Linux干貨 2016-09-09
  • Linux文本三劍客之grep

    一、定義:                 GREP  :Global search REgular expression and Print out the line的縮寫。是一種強大的文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;并把匹配的行打印出…

    Linux干貨 2016-04-05
欧美性久久久久