首頁 > 軟體

Linux使用者管理、文字處理、安裝包管理

2020-06-16 16:49:47

一、Linux使用者管理

1、使用者,組,許可權

Authentication 認證

Authorization 授權

Adition 審計

認證:認證標識,口令

許可權:不同使用者,許可權不同

使用者 :username,UID

    root:管理員,擁有全部許可權,0

    普通使用者:許可權由管理員授予,1-65535

      系統使用者:對守護行程獲取資源進行許可權分配,1-499(CentOS 6),1-999(centOS 7)

      登陸使用者:互動式登入,500+(centOS 6),999+(centOS 7)

組:groupname,GID

    管理員組:root,0

    普通組:

      系統組:1-499, 1-999(CENTOS7)
          普通組:500+, 1000+(CENTOS7)

  Linux組的類別
      使用者的主要組(primary group)
      使用者必須屬於一個且只有一個主組
      組名同使用者名稱,且僅包含一個使用者,私有組
      使用者的附加組(supplementary group)
      一個使用者可以屬於零個或多個輔助組

    進程代表使用者身份執行,進程的許可權由啟動的使用者的許可權決定。

  Linux使用者和組的主要組態檔: 
      /etc/passwd:使用者及其屬性資訊(名稱、UID、主組ID等)
      /etc/group:組及其屬性資訊
      /etc/shadow:使用者密碼及其相關屬性
      /etc/gshadow:組密碼及其相關屬性

passwd檔案格式

    login name:登入用名(Tom)
    passwd:密碼  (x)
    UID:使用者身份編號
    GID:登入預設所在組編號 
    GECOS:使用者全名或註釋
    home directory:使用者主目錄 (/home/Tom)
    shell:使用者預設使用shell (/bin/bash)

shadow檔案格式

    登入用名
    使用者密碼:一般用sha512加密(安全雜湊演算法,能計算出一個數位訊息所對應到的,長度固定的字串(又稱訊息摘要)的演算法。
    從1970年1月1日起到密碼最近一次被更改的時間
    密碼再過幾天可以被變更(0表示隨時可被變更)
    密碼再過幾天必須被變更(99999表示永不過期)
    密碼過期前幾天系統提醒使用者(預設為一週)
    密碼過期幾天後帳號會被鎖定
    從1970年1月1日算起,多少天後帳號失效

 group檔案格式

群組名稱:就是群組名稱
群組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
GID:就是群組的 ID
以當前組為附加組的使用者列表(分隔符為逗號)

gshdow檔案格式

群組名稱:就是群組名稱
群組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組為附加組的使用者列表:(分隔符為逗號)

2、使用者,組操作指令

useradd [options] LOGIN
    -u UID
    -o 配合-u 選項,不檢查UID的唯一性
    -g GID:指明使用者所屬基本組,可為組名,也可以GID
    -c "COMMENT":使用者的注釋資訊
    -d HOME_DIR: 以指定的路徑(不存在)為家目錄
    -s SHELL: 指明使用者的預設shell程式
         可用列表在/etc/shells檔案中
    -G GROUP1[,GROUP2,...]:為使用者指明附加組,組須事先存在
    -N 不建立私用組做主組,使用users組做主組
    -r: 建立系統使用者 CentOS 6: ID<500,CentOS 7: ID<1000
    -m  建立家目錄,用於系統使用者
    -M  不建立家目錄,用於非系統使用者

usermod [OPTION] login 使用者屬性修改
    -u UID: 新UID
    -g GID: 新主組
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
    -s SHELL:新的預設SHELL
    -c 'COMMENT':新的註釋資訊
    -d HOME: 新家目錄不會自動建立;若要建立新家目錄並移動原家資料,同時使用-m選項
    -l login_name: 新的名字;
    -L: lock指定使用者,在/etc/shadow 密碼欄的增加 !
    -U: unlock指定使用者,將 /etc/shadow 密碼欄的 ! 拿掉
    -e YYYY-MM-DD: 指明使用者賬號過期日期
    -f INACTIVE: 設定非活動期限

userdel [OPTION]... login 刪除使用者
    -r: 刪除使用者家目錄

id [OPTION]... [USER] 檢視使用者相關的ID資訊
    -u: 顯示UID
    -g: 顯示GID
    -G: 顯示使用者所屬的組的ID
    -n: 顯示名稱,需配合ugG使用

su [options...] [-] [user [args...]]
    su UserName:非登入式切換,即不會讀取目標使用者的組態檔,不改變當前工作目錄
    su - UserName:登入式切換,會讀取目標使用者的組態檔,切換至家目錄,完全切換
    root su至其他使用者無須密碼;非root使用者切換時需要密碼
    su [-] UserName -c 'COMMAND'換個身份執行命令
    -l  --login
    su -l UserName  相當於 su - UserName

passwd [OPTIONS] UserName: 修改指定使用者的密碼
    -d:刪除指定使用者密碼
    -l:鎖定指定使用者
    -u:解鎖指定使用者
    -e:強制使用者下次登入修改密碼
    -f: 強制操作
    -n mindays: 指定最短使用期限
    -x maxdays:最大使用期限
    -w warndays:提前多少天開始警告
    -i inactivedays:非活動期限
    --stdin:從標準輸入接收使用者密碼
     echo "PASSWORD" | passwd --stdin USERNAME

groupadd [OPTION]... group_name
    -g GID: 指明GID號;[GID_MIN, GID_MAX]
    -r: 建立系統組
        CentOS 6: ID<500
        CentOS 7: ID<1000

groupmod [OPTION]... group  

    -n group_name: 新名字  

    -g GID: 新的GID

groupdel GROUP  組刪除

gpasswd [OPTION] GROUP
    -a user  將user新增至指定組中
    -d user  從指定組中移除使用者user
    -A user1,user2,...  設定有管理許可權的使用者列表

newgrp命令:臨時切換主組

chown 修改檔案的屬主

chown [OPTION]... [OWNER][:[GROUP]] FILE...

  -R: 遞回
    chown [OPTION]... --reference=RFILE FILE...

  user1:grp1 file    :將檔案file的屬主改為user1,屬組改為grp1,用.也可以。

chgrp [OPTION]... GROUP FILE...
      chgrp [OPTION]... --reference=RFILE FILE...
      -R 遞回

chmod :修改檔案的許可權

檔案的許可權修改要用到000-777的引數,

rwx    
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

 

 

 

 

 

 

 

 

 

表中表示了一位的許可權設定,三位表示屬主、屬組、其他許可權。

  chmod 777 file:表示給file檔案所有的許可權都開放

  chmod 740 file: 表示給file檔案屬主所有許可權,屬組讀許可權,其他使用者不給許可權。

  輸入位數不足左側補零,要補齊位數。

  普通檔案不要給任何執行許可權,除非確定可以執行

  目錄一定要有執行許可權,否則回無法cd進入

  修改目錄許可權不會修改目錄下的檔案的許可權。

chmod -R 遞回

   g= :組許可權修改,u=使用者許可權修改,o=其他許可權,a=所有使用者許可權。可組合使用。例如:

  ug=rw,給與屬主和屬組讀寫許可權,不給執行許可權,不改其他使用者許可權。

  o=  ,其他使用者許可權全部取消

  u+w:表示給屬主寫許可權,不改變其他位置

  go-r:表示取消屬組和其他使用者的讀許可權

  +x file :表示給所有使用者操作許可權

  +w file:只給屬主加寫的許可權

  --reference filea=fileb :將檔案a的許可權設定的與b相同

更改存取控制列表

getfacl file 檢視存取控制列表

setfacl

  setfacl -m u:user1:rw file.txt  更改存取控制列表,使user1對檔案file.txt能讀能寫。普通使用者可改自己檔案。root使用者有所有許可權。

  setfacl -m  g:grp1:rw file

  -x 減許可權 例如:  setfacl -x g:grp1 file  刪除存取控制列表,不用指定許可權。

  ACL:Access Control List,實現靈活的許可權管理
  除了檔案的所有者,所屬組和其它人,可以對更多的使用者設定許可權
  CentOS7 預設建立的xfs和ext4檔案系統具有ACL功能
  CentOS7 之前版本,預設手工建立的ext4檔案系統無ACL功能,需手動增加
  tune2fs –o acl /dev/sdb1
  mount –o acl /dev/sdb1  /mnt/test
  ACL生效順序:所有者,自定義使用者,自定義組,其他人

Linux檔案系統上的特殊許可權

SUID, SGID, Sticky

三種常用許可權:r, w, x    user, group, other
安全上下文
  前提:進程有屬主和屬組???檔案有屬主和屬組
     (1) 任何一個可執行程式檔案能不能啟動為進程,取決發起者對程式檔案是否擁有執行許可權
     (2) 啟動為進程之後,其進程的屬主為發起者,進程的屬組為發起者所屬的組
     (3) 進程存取檔案時的許可權,取決於進程的發起者
     (a) 進程的發起者,同檔案的屬主:則應用檔案屬主許可權
     (b) 進程的發起者,屬於檔案屬組;則應用檔案屬組許可權
     (c) 應用檔案“其它”許可權

可執行檔案上SUID許可權

  任何一個可執行程式檔案能不能啟動為進程:取決發起者對程式檔案是否擁有執行許可權
  啟動為進程之後,其進程的屬主為原程式檔案的屬主
  SUID只對二進位制可執行程式有效
  SUID設定在目錄上無意義
    許可權設定:
     chmod u+s FILE...    -rwsr--r--  -rwSr--r--   小寫原來有執行許可權,大寫原來沒有。
     chmod u-s FILE...

可執行檔案上SGID許可權

  任何一個可執行程式檔案能不能啟動為進程:取決發起者對程式檔案是否擁有執行許可權
  啟動為進程之後,其進程的屬組為原程式檔案的屬組
    許可權設定:
     chmod g+s FILE...    -rwxrwsr--
     chmod g-s FILE...

sticky位 黏滯位

  具有寫許可權的目錄通常使用者可以刪除該目錄中的任何檔案,無論該檔案的許可權或擁有權
  在目錄設定Sticky 位,只有檔案的所有者或root可以刪除該檔案
  sticky 設定在檔案上無意義
  許可權設定:
    chmod o+t file
    chmod o-t file
    例如:ls -ld /tmp

       drwxrwxrwt  12 root  root  4096 Nov 2 15:44 /tmp

  drwxrwxrwT t大寫表示原來沒有執行許可權

  sst可以設定在最左側,用0-7表示。

  chmod 5775 file 表示設定SUID和stick位,後邊與之前相同。

二、文字處理

文字檢視,分析,統計工具

正規表示式

擴充套件正規表示式

vim

grep

sed

文字檢視,分析,統計工具

cat 檢視檔案,將檔案內容全部輸出到標準輸出

more 按頁檢視,到尾部自動退出

less 按頁檢視,指令man使用的文字檢視工具。

head 輸出前十行  head -1: 輸出第一行

tail 輸出後十行 tail -1: 輸出最後一行

  tail -f 監視,持續輸出檔案尾部的追加的新內容

cut -d: -f7 file      以:為分割,顯示第七個欄位

cut -d‘ ’  以空格為分割

wc        word cut,字元統計

   -l  只顯示行

  -w  只顯示單詞

  -m 只顯示字元數

  -c  只顯示位元組

 sort 排序

  -r  逆序

  -n  以大小排

  -f  忽略大小寫

   -u 去重 unique

uniq 去連續重複

  -c 顯示重複計數

  -d 顯示重複出現的行

  -u 顯示只出現一次的行

diff  比較

patch 打修補程式 

正規表示式

REGEXP:由一類特殊字元及文字字元所編寫的模式,其中有些字元(元字元)不表示字元字面意義,而表示控制或通配的功能
  程式支援:grep,sed,awk,vim, less,nginx,varnish等
  分兩類:
     基本正規表示式:BRE
     擴充套件正規表示式:ERE           grep -E, egrep
  正規表示式引擎:
     採用不同演算法,檢查處理正規表示式的軟體模組
           PCRE(Perl Compatible Regular Expressions)
  元字元分類:字元匹配、匹配次數、位置錨定、分組
  man  7 regex

字元匹配

  .    匹配任意單個字元
   []  匹配指定範圍內的任意單個字元
   [^]  匹配指定範圍外的任意單個字元
   [:alnum:] 字母和數位
   [:alpha:] 代表任何英文大小寫字元,亦即 A-Z, a-z
   [:lower:] 小寫字母    [:upper:] 大寫字母
   [:blank:] 空白字元(空格和製表符)
   [:space:] 水平和垂直的空白字元(比[:blank:]包含的範圍廣)
   [:cntrl:] 不可列印的控制字元(退格、刪除、警鈴...)
   [:digit:] 十進位制數位 [:xdigit:]十六進位制數位
   [:graph:] 可列印的非空白字元
   [:print:] 可列印字元
   [:punct:] 標點符號

匹配次數:用在要指定次數的字元後面,用於指定前面的字元要出現的次數
   * 匹配前面的字元任意次,包括0次
   貪婪模式:盡可能長的匹配
   .* 任意長度的任意字元
   ? 匹配其前面的字元0或1次
   + 匹配其前面的字元至少1次
   {n} 匹配前面的字元n次
   {m,n} 匹配前面的字元至少m次,至多n次
   {,n} 匹配前面的字元至多n次
   {n,} 匹配前面的字元至少n次

位置錨定:定位出現的位置
   ^ 行首錨定,用於模式的最左側
   $ 行尾錨定,用於模式的最右側
   ^PATTERN$  用於模式匹配整行
   ^$  空行
   ^[[:space:]]*$  空白行
   < 或 b 詞首錨定,用於單詞模式的左側
   > 或 b 詞尾錨定;用於單詞模式的右側
   <PATTERN> 匹配整個單詞

分組:() 將一個或多個字元捆綁在一起,當作一個整體進行處理,如:(root)+
  分組括號中的模式匹配到的內容會被正規表示式引擎記錄於內部的變數中,這些變數的命名方式為: 1, 2, 3, ...
  1  表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字元
    範例:  (string1+(string2)*)
          1 :string1+(string2)*
          2 :string2
後向參照:參照前面的分組括號中的模式所匹配字元,而非模式本身
  或者:|
     範例:a|b: a或b  C|cat: C或cat  (C|c)at:Cat或cat

文字處理常用工具

grep 全域性搜尋正規表示式並列印

  逐行處理,顯示匹配到的

  -v 顯示未匹配到的

  -i 忽略大小寫

  -n:顯示匹配的行號
  -c: 統計匹配的行數
  -o: 僅顯示匹配到的字串
  -q: 靜默模式,不輸出任何資訊
  -A #: after, 後#行
  -B #: before, 前#行
  -C #:context, 前後各#行
  -e:實現多個選項間的邏輯or關係
     grep –e ‘cat ’  -e ‘dog’  file
  -w:匹配整個單詞
  -E:使用ERE
  -F:相當於fgrep,不支援正規表示式

   (a|b)a或b

sed  Stream EDitor, 行編輯器

  sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下一個迴圈。如果沒有使諸如‘D’的特殊命令,那會在兩個迴圈之間清空模式空間,但不會清空保留空間。這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。
功能:主要用來自動編輯一個或多個檔案,簡化對檔案的反復操作,編寫轉換程式等
參考: http://www.gnu.org/software/sed/manual/sed.html

地址定界:
   (1) 不給地址:對全文進行處理
   (2) 單地址:
      #: 指定的行,$:最後一行
      /pattern/:被此處模式所能夠匹配到的每一行
   (3) 地址範圍:
      #,#
      #,+#
      /pat1/,/pat2/
      #,/pat1/
   (4) ~:步進
      1~2 奇數行
      2~2 偶數行

sed [option]... 'script' inputfile...
  常用選項:
  -n:不輸出模式空間內容到螢幕,即不自動列印
  -e: 多點編輯
  -f:/PATH/SCRIPT_FILE: 從指定檔案中讀取編輯指令碼
  -r: 支援使用擴充套件正規表示式
  -i.bak: 備份檔案並原處編輯

  d: 刪除模式空間匹配的行,並立即啟用下一輪迴圈
  p:列印當前模式空間內容,追加到預設輸出之後
  a []text:在指定行後面追加文字
       支援使用n實現多行追加
  i []text:在行前面插入文字
  c []text:替換行為單行或多行文字
  w /path/somefile: 儲存模式匹配的行至指定檔案
  r /path/somefile:讀取指定檔案的文字至模式空間中匹配到的行後
  =: 為模式空間中的行列印行號
  !:模式空間中匹配行取反處理 

  s///:查詢替換,支援使用其它分隔符,s@@@,s###
    替換標記:
    g: 行內全域性替換
    p: 顯示替換成功的行
    w /PATH/TO/SOMEFILE:將替換成功的行儲存至檔案中

 awk  格式化文字並列印  gawk: GNU awk

vim

  vi: Visual Interface,文字編輯器
  文字:ASCII, Unicode
  文字編輯種類:
   行編輯器: sed
   全螢幕編輯器:nano, vi
   vim - Vi Improved
  其他編輯器:
     gedit  一個簡單的圖形編輯器
     gvim  一個Vim編輯器的圖形版本

# vim [OPTION]... FILE...
  +#: 開啟檔案後,讓游標處於第#行的行首,+預設行尾
  +/PATTERN:開啟檔案後,直接讓游標處於第一個被PATTERN匹配到的行的行首
  –b file 二進位制方式開啟檔案
  –d file1 file2…  比較多個檔案
  -m file  唯讀開啟檔案
  ex  file 或 vim –e  直接進入ex模式
  如果該檔案存在,檔案被開啟並顯示內容
  如果該檔案不存在,當編輯後第一次存檔時建立它

  擊鍵行為是依賴於 vim的 的“模式”
  三種主要模式:
    命令(Normal)模式:預設模式,移動游標,剪下/貼上文字
    插入(Insert)或編輯模式: 修改文字
    擴充套件命令(extended command )模式: 儲存,退出等
  Esc鍵 退出當前模式
  Esc鍵 Esc鍵 總是返回到命令模式

 

命令模式 --> 插入模式
  i: insert, 在游標所在處輸入
  I:在當前游標所在行的行首輸入
  a: append, 在游標所在處後面輸入
  A:在當前游標所在行的行尾輸入
  o: 在當前游標所在行的下方開啟一個新行
  O:在當前游標所在行的上方開啟一個新行

字元編輯:  

  x: 刪除游標處的字元  

  #x: 刪除游標處起始的#個字元  

  xp: 交換游標所在處的字元及其後面字元的位置  

  ~:轉換大小寫  

  J:刪除當前行後的換行符

替換命令(r, replace)

  r: 替換游標所在處的字元  

  R:切換成REPLACE模式

刪除命令:
  d: 刪除命令,可結合游標跳轉字元,實現範圍刪除
  d$: 刪除到行尾
  d^:刪除到非空行首
  d0:刪除到行首
  dw:
  de:
  db:
  #COMMAND
  dd: 刪除游標所在的行
  #dd:多行刪除
  D:從當前游標位置一直刪除到行尾,留空行,等同於d$

複製命令(y, yank):
  y: 複製,行為相似於d命令
  y$
  y0
  y^
  ye
  yw
  yb
  #COMMAND
  yy:複製行
  #yy: 複製多行
  Y: 複製整行

貼上命令(p, paste):
  p:緩衝區存的如果為整行,則貼上當前游標所在行的下方;否則,則貼上至當前游標所在處的後面
  P:緩衝區存的如果為整行,則貼上當前游標所在行的上方;否則,則貼上至當前游標所在處的前面

改變命令(c, change)
  c: 修改後切換成插入模式

復原命令

  u 復原

  ctrl+r復原之前的復原,取消復原

  .  點表示重複之前的操作

游標跳轉

命令模式字元間跳轉:
  h: 左  l: 右 j: 下 k: 上
  #COMMAND:跳轉由#指定的個數的字元
命令模式單詞間跳轉:
  w:下一個單詞的詞首
  e:當前或下一單詞的詞尾
  b:當前或前一個單詞的詞首
  #COMMAND:由#指定一次跳轉的單詞數
命令模式當前頁跳轉:
  H:頁首  M:頁中間行 L:頁底

行首行尾跳轉:
   ^: 跳轉至行首的第一個非空白字元
   0: 跳轉至行首
   $: 跳轉至行尾
行間移動:
   #G、擴充套件模式:# :跳轉至由#指定行
   G:最後一行
   1G, gg: 第一行
句間移動:
   ):下一句 (:上一句
段落間移動:
   }:下一段 {:上一段

擴充套件模式

  按“:”進入Ex模式 
  建立一個命令提示字元:  處於底部的螢幕左側
  命令:
   w 寫(存)磁碟檔案
   wq 寫入並退出
   x 寫入並退出
   q  退出
   q! 不存檔退出,即使更改都將丟失 
   r filename 讀檔案內容到當前檔案中
   w  filename 將當前檔案內容寫入另一個檔案
   !command 執行命令
   r!command 讀入命令的輸出

  c$
  c^
  c0
  cb
  ce
  cw
  #COMMAND
  cc:刪除當前行並輸入新內容,相當於S
  #cc:
  C:刪除當前游標到行尾,並切換成插入模式

地址定界
  :start_pos,end_pos
  # 具體第#行,例如2表示第2行
  #,# 從左側#表示起始行,到右側#表示結尾行 
  #,+#  從左側#表示的起始行,加上右側#表示的行數
  :2,+3  表示2到5行
  .  當前行
  $  最後一行
  .,$-1 當前行到倒數第二行
  %  全文, 相當於1,$

  /pat1/,/pat2/
    從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
  #,/pat/
  /pat/,$
使用方式:後跟一個編輯命令
  d
  y
  w file: 將範圍內的行另存至指定檔案中
  r  file:在指定位置插入指定檔案中的所有內容

查詢
  /PATTERN:從當前游標所在處向檔案尾部查詢
  ?PATTERN:從當前游標所在處向檔案首部查詢
  n:與命令同方向
  N:與命令反方向

s: 在擴充套件模式下完成查詢替換操作
  格式:s/要查詢的內容/替換為的內容/修飾符
  要查詢的內容:可使用模式
  替換為的內容:不能使用模式,但可以使用1, 2, ...等後向參照符號;還可以使用“&”參照前面查詢時查詢到的整個內容
  修飾符:
    i: 忽略大小寫
    g: 全域性替換;預設情況下,每一行只替換第一次出現
    gc:全域性替換,每次替換前詢問
查詢替換中的分隔符/可替換為其它字元,例如
  s@/etc@/var@g
  s#/boot#/#i

允許選擇的文字塊
  v 面向字元
  V 面向行
  ctrl-v 面向塊
視覺化鍵可用於與移動鍵結合使用:
  w  )   }  箭頭等
突出顯示的文字可被刪除,複製,變更,過濾,搜尋,替換等

插入模式 --------> 命令模式
    ESC
命令模式 --------> 擴充套件命令模式
      :
擴充套件命令模式 --------> 命令模式
      ESC,enter

退出:

  擴充套件模式:
    :q 退出
    :q! 強制退出,丟棄做出的修改
    :wq 儲存退出
    :x 儲存退出
  命令模式
    ZZ: 儲存退出
    ZQ:不儲存退出

多檔案分割
  vim -o|-O FILE1 FILE2 ...
  -o: 水平分割
  -O: 垂直分割
  在視窗間切換:Ctrl+w, Arrow
  單檔案視窗分割:
  Ctrl+w,s: split, 水平分割
  Ctrl+w,v: vertical, 垂直分割
  ctrl+w,q:取消相鄰視窗
  ctrl+w,o:取消全部視窗
  :wqall 退出

組態檔:永久有效
  全域性:/etc/vimrc
  個人:~/.vimrc
擴充套件模式:當前vim進程有效
  (1) 行號
    顯示:set number, 簡寫為set nu
    取消顯示:set nonumber, 簡寫為set nonu
  (2) 忽略字元的大小寫
    啟用:set ic
    不忽略:set noic
  (3) 自動縮排
     啟用:set ai
     禁用:set noai 

  (4)智慧縮排
    啟用:smartindent 簡寫 set si
    禁用:set nosi
  (5) 高亮搜尋
    啟用:set hlsearch
    禁用:set nohlsearch
  (6) 語法高亮
    啟用:syntax on
    禁用:syntax off
  (7) 顯示Tab和換行符 ^I 和$顯示
    啟用:set list
    禁用:set nolist

  (8) 檔案格式
    啟用windows格式:set  fileformat=dos
    啟用unix格式:set fileformat=unix
    簡寫: set ff=dos|unix
  (9) 設定文字寬度
    啟用: set textwidth=65 (vim only)
    禁用: set wrapmargin=15
  (10) 設定游標所在行的標識線
    啟用:set cursorline,簡寫cul
    禁用:set no cursorline
  (11) 複製保留格式
    啟用: set paste
    禁用: set nopaste

Set 幫助
  :help option-list 
  :set or :set all
vi/vim內建幫助 
  :help
  :help topic
  Use :q to exit help
vimtutor 練習

Linux安裝包安裝

rpm: RedHat Package Manager
   RPM  Package Manager

原始碼:name-VERSION.tar.gz|bz2|xz
    VERSION: major.minor.release
rpm包命名方式:
  name-VERSION-release.arch.rpm
    例:bash-4.2.46-19.el7.x86_64.rpm
  VERSION: major.minor.release
  release:release.OS
  常見的arch:
    x86: i386, i486, i586, i686
    x86_64: x64, x86_64, amd64   
    跟平台無關:noarch

包:分類和拆包
  Application-VERSION-ARCH.rpm: 主包
  Application-devel-VERSION-ARCH.rpm 開發子包
  Application-utils-VERSION-ARHC.rpm 其它子包
  Application-libs-VERSION-ARHC.rpm 其它子包
包之間:可能存在依賴關係,甚至迴圈依賴
解決依賴包管理工具:
  yum:rpm包管理器的前端工具
  apt-get:deb包管理器前端工具
  zypper: SUSE上的rpm前端管理工具
  dnf: Fedora 18+ rpm包管理器前端管理工具

檢視二進位制程式所依賴的庫檔案
  ldd /PATH/TO/BINARY_FILE
管理及檢視本機裝載的庫檔案
  ldconfig 載入庫檔案
  /sbin/ldconfig -p: 顯示本機已經快取的所有可用庫檔名及檔案路徑對映關係
組態檔:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
快取檔案:/etc/ld.so.cache

程式包管理器:
  功能:將編譯好的應用程式的各組成檔案打包一個或幾個程式包檔案,從而方便快捷地實現程式包的安裝、解除安裝、查詢、升級和校驗等管理操作
包檔案組成 (每個包獨有)
  RPM包內的檔案
  RPM的後設資料,如名稱,版本,依賴性,描述等
  安裝或解除安裝時執行的指令碼
資料庫(公共):/var/lib/rpm
  程式包名稱及版本
  依賴關係
  功能說明
  包安裝後生成的各檔案路徑及校驗碼資訊

管理程式包的方式:
  使用包管理器:rpm
  使用前端工具:yum, dnf
獲取程式包的途徑:
  (1) 系統發版的光碟或官方的伺服器;
    CentOS映象:
    https://www.centos.org/download/
    http://mirrors.aliyun.com
    http://mirrors.sohu.com
    http://mirrors.163.com
 (2) 專案官方站點

 (3) 第三方組織:
  Fedora-EPEL:
    Extra Packages for Enterprise Linux
  Rpmforge:RHEL推薦,包很全
  搜尋引擎:
    http://pkgs.org
    http://rpmfind.net
    http://rpm.pbone.net
    https://sourceforge.net/
(4) 自己製作
  注意:第三方包建議要檢查其合法性。    來源合法性,程式包的完整性

 YUM: Yellowdog Update Modifier,rpm的前端程式,可解決軟體包相關依賴性,可在多個庫之間定位軟體包,up2date的替代工具
  yum repository: yum repo,儲存了眾多rpm包,以及包的相關的後設資料檔案(放置於特定目錄repodata下)

  yum用戶端組態檔:
  /etc/yum.conf:為所有倉庫提供公共設定
  /etc/yum.repos.d/*.repo:為倉庫的指向提供設定
  倉庫指向的定義:
    [repositoryID]
    name=Some name for this repository
    baseurl=url://path/to/repository/
    enabled={1|0}
    gpgcheck={1|0}
    gpgkey=URL
    enablegroups={1|0}
    failovermethod={roundrobin|priority}
      roundrobin:意為隨機挑選,預設值
      priority:按順序存取
    cost=   預設為1000

yum的repo組態檔中可用的變數:
  $releasever: 當前OS的發行版的主版本號
  $arch: 平台,i386,i486,i586,x86_64等
  $basearch:基礎平台;i386, x86_64
  $YUM0-$YUM9:自定義變數
範例:
  http://server/centos/$releasever/$basearch/
  http://server/centos/7/x86_64
  http://server/centos/6/i384

阿里雲repo檔案:
  http://mirrors.aliyun.com/repo/
CentOS系統的yum源
  阿里雲:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
EPEL的yum源:
  阿里雲:
  https://mirrors.aliyun.com/epel/$releasever/x86_64
yum命令的用法:
    yum [options] [command] [package ...]
  顯示倉庫列表:
    yum repolist [all|enabled|disabled]
  顯示程式包:
    yum list
    yum list [all | glob_exp1] [glob_exp2] [...]
    yum list {available|installed|updates} [glob_exp1] [...]
  安裝程式包:
    yum install package1 [package2] [...]
    yum reinstall package1 [package2] [...]  (重新安裝)

  升級程式包:
    yum update [package1] [package2] [...]
    yum downgrade package1 [package2] [...] (降級)
  檢查可用升級:
    yum check-update
  解除安裝程式包:
    yum remove | erase package1 [package2] [...]

  檢視程式包information:
    yum info [...]
  檢視指定的特性(可以是某檔案)是由哪個程式包所提供:
    yum provides | whatprovides feature1 [feature2] [...]
  清理本地快取:
    清除/var/cache/yum/$basearch/$releasever快取
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
  構建快取:
    yum makecache

搜尋:yum search string1 [string2] [...]
  以指定的關鍵字搜尋程式包名及summary資訊
檢視指定包所依賴的capabilities:
  yum deplist package1 [package2] [...]
檢視yum事務歷史:
  yum history [info|list|packages-list|packages-info|
  summary|addon-info|redo|undo|
  rollback|new|sync|stats]
  yum history
  yum history info 6
  yum history undo 6
紀錄檔 :/var/log/yum.log

  安裝及升級本地程式包:
    yum localinstall rpmfile1 [rpmfile2] [...]
       (用install替代)
    yum localupdate rpmfile1 [rpmfile2] [...]
      (用update替代)
  包組管理的相關命令:
    yum groupinstall group1 [group2] [...]
    yum groupupdate group1 [group2] [...]
    yum grouplist [hidden] [groupwildcard] [...]
    yum groupremove group1 [group2] [...]
    yum groupinfo group1 [...]

yum的命令列選項:
  --nogpgcheck:禁止進行gpg check
  -y: 自動回答為“yes”
  -q:靜默模式
  --disablerepo=repoidglob:臨時禁用此處指定的repo
  --enablerepo=repoidglob:臨時啟用此處指定的repo
  --noplugins:禁用所有外掛

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-07/153289.htm


IT145.com E-mail:sddin#qq.com