Linux學習(五)- sed,軟件包管理

一,sed (Stream EDitor)

1.介紹sed

  • 定義:流編輯器,對行進行處理,又稱爲行編輯器。處理過程中會接觸到倆個空間,一個是模式空間,另一個是保持空間
  • 模式空間:用sed對文本進行處理時,將正在處理的行儲存在一個臨時緩衝區中,這個臨時緩衝區就是模式空間
  • 保持空間:對於處理過的行還有其他處理,先將處理過得行臨時儲存在另一個臨時緩衝區,也就是保持空間
  • 功能:主要用來自動編輯一個或多個文件,簡化對文件的反覆操作,編寫轉換程序等

    2.sed用法

  • 常用選項

        -n   不輸出模式空間內容到屏幕
        -e   多項編輯
        -f  filename   從指定文件中讀取編輯腳本
        -r   支持使用擴展正則表達式
        -i.bak   修改內容並且備份
  • 地址命令

         地址定界:1.不給地址:對全文進行處理
                           2. 單地址
                                     #:第#行
                                    /pattern/:能匹配到/pattern/的行
                           3. 地址範圍
                                     #,*:第#行到第*行
                                     #,+#:第#行開始,向後數#行
                                     /pat1/,/pat2/:能匹配到1模式的行到能匹配到2模式的行
                                     #,/pat1/:第#行到能匹配到1模式的行
                           4. 步進
                                        1~2p 奇數行
                                         2~2p 偶數行
  • 編輯命令

          d   刪除模式空間匹配的行
          p   輸出當前模式空間內容,追加到默認輸出之後
          a text   在指定行後面追加文本      (可以使用\n進行多行追加)
          i text   在指定行前面插入文本
          c text   替換指定行
          w filename   保存模式匹配的行至filename
          r  filename   讀取filename的文本至模式空間中匹配到的行後
          =   爲模式空間中的行打印行號
          !    模式空間中匹配行取反處理
  • 查找替換

          s///:查找替換,支持使用其它分隔符, s@@@, s###
          替換標記
                 g   行內全局替換
                 p   顯示替換成功的行
                 w  filename   將替換成功的行保存至文件中

    3.高級用法

            P   打印模式空間開端至\n內容,並追加到默認輸出之前
            h   把模式空間中的內容覆蓋至保持空間中
            H   把模式空間中的內容追加至保持空間中
            g   從保持空間取出數據覆蓋至模式空間
            G   從保持空間取出內容追加至模式空間
            x   把模式空間中的內容與保持空間中的內容進行互換
            n   讀取匹配到的行的下一行覆蓋至模式空間   
            N   讀取匹配到的行的下一行追加至模式空間
            d   刪除模式空間中的行
            D   如果模式空間包含換行符,則刪除第一個換行符的行的內容, 並不會讀取新的輸入行

    二,軟件包管理

    1.包管理器

  • 二進制應用程序的組成部分
      二進制文件、庫文件、配置文件(決定軟件運行方式)、幫助文件
  • 程序包管理器:
      debian:deb文件, dpkg包管理器
      redhat:rpm文件, rpm包管理器
      rpm:Redhat Package Manager
         RPM Package Manager

    2.包命名

  • rpm包命名方式:
      name-VERSION-release.arch.rpm
    VERSION(版本號): major.minor.release
    release(操作系統版本): release.OS
    常見的arch(架構):
      x86:i386, i486, i586, i686
      x86_64: x64, x86_64, amd64
      powerpc: ppc
      跟平臺無關: noarch
      現在一般都是noarch,x86_64,i386

    3.包工具

      包之間:可能存在依賴關係(程序運行需要很多歌包,可以分開裝,但是不能缺少否則不能運行),甚至循環依賴(必須同時去裝需要個所有包,一次性的)


      分拆包:子包,子程序包,開發包

  • 解決依賴包管理工具:
      yum: rpm包管理器的前端工具

    4.庫文件

  • 管理及查看本機裝載的庫文件
       ldd 查看庫文件,ldd 'which 命令'
      ldconfig 加載庫文件
    配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
    緩存文件: /etc/ld.so.cache

    5.rpm包管理

    rpm包獲取方式:光盤,鏡像,官方,自己製作

  • 安裝(安裝完rpm包會運行一個腳本,創建用戶等;還會記錄數據,爲了卸載)

          rpm  -i
           -i 以下的選項 [install-options]    
                -v   顯示詳細的安裝信息
                -vv   非常詳細的顯示安裝信息
                -h   顯示安裝進度條
           rpm -ivh  常用的安裝命令
                 - - test   測試安裝,但不真正執行安裝,即dry run模式
                 - - nodeps   忽略依賴關係
                 - - replacepkgs   新安裝的包部分文件跟舊安裝包有衝突,替換就安裝包的文件
                 - - replacefiles   新安裝的包部分文件跟舊安裝包有衝突,不替換就安裝包的文件
                 - - nosignature   不檢查來源合法性
                 - - nodigest   不檢查包完整性
                 - - noscripts   不執行程序包腳本
                 - - nopre   安裝前的腳本(安裝軟件之前需要運行的腳本)
                 - - nopost   安裝後的腳本(運行軟件需要的腳本)
                 - - nopreun   卸載前的腳本(與安裝的同理)
                 - - nopostun   卸載後的腳本
  • 升級

             rpm -U [install-options]   安裝有舊版程序包,則“升級”,如果不存在舊版程序包,則“安裝”
             rpm -F [install-options]   安裝有舊版程序包,則“升級”,如果不存在舊版程序包,則不執行升級操作
                     - - oldpackage   降級,指定的安裝包比已經安裝的舊
                     - - force   強制安裝

注意:
(1) 不要對內核做升級操作; Linux支持多內核版本並存,直接安裝新版本內核即可
(2) 如果原程序包的配置文件安裝後曾被修改,升級時,新版本提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)後保留


  • 查詢

                rpm -q  [select-options]  [query-options]
               與 -q 搭配使用 [select-options]
                            -a   所有包
                            -f    查看指定的文件由哪個程序包安裝生成
                            -p rpmfile(程序包文件)   針對尚未安裝的程序包文件做查詢操作
                            - - whatprovides CAPABILITY   查詢指定的CAPABILITY由哪個包所提供
                            - - whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴    
                        CAPABILITY:能力名,軟件提供的能力
                              [query-options]
                                      - - changelog   查詢rpm包的changelog  日誌記錄
                                      -c   查詢程序的配置文件
                                      -d   查詢程序的文檔
                                      -i    查詢程序的information
                                      -l    查看指定的程序包安裝後生成的所有文件
                                      - - scripts    程序包自帶的腳本
                                      - - provides     列出指定程序包所提供的CAPABILITY
                                      -R    查詢指定的程序包所依賴的CAPABILITY
                  rpm2cpio 包文件|cpio –itv    預覽包內文件
                  rpm2cpio 包文件|cpio –id “*.conf”   釋放包內文件
  • 卸載

                  rpm -e 
  • 校驗

                   rpm -V  [select-options] [verify-options]
                           [verify-options]
                                 S file Size differs    文件大小比較
                                 M Mode differs (includes permissions and file type)    模式比較,包括權限和文件類型
                                 5 digest (formerly MD5 sum) differs    md5值比較

            md5是單向加密。相當於文件的特徵碼,只要文件有一絲改變,md5碼就會發生變化

                                 D Device major/minor number mismatch    主次要版本號的匹配
                                 L readLink(2) path mismatch    
                                 U User ownership differs    所屬主的比較
                                 G Group ownership differs    所屬組的比較
                                 T mTime differs    修改時間的比較
                                 P capabilities differ   
  • 公鑰,私鑰加密
    對稱加密:加密、解密使用同一密鑰,速度性能快,不安全,不能長久存在
    非對稱加密:密鑰是成對兒的,安全,速度性能慢,需要計算
    公鑰(public key):公開所有人
    私鑰(secret key) :不能公開
  • 導入所需要公鑰

                   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 - - initdb
                          - - rebuilddb

    initdb: 初始化
    如果事先不存在數據庫,則新建之,否則,不執行任何操作
    rebuilddb:重建已安裝的包頭的數據庫索引目錄


   sr0 光驅設備名字,固定的
   mount -r /dev/sr0 /mnt 掛載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章