關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器

1、 用戶

  在Linux系統中,能夠建立多個用戶,每個用戶都有一個與其對應的ID號,就像每個人都有一個×××號同樣,這就是用戶的UID,
  在Linux中管理員 root的默認UID爲0,普通用戶爲1-65535,而普通用戶又分爲系統用戶和登陸用戶,系統用戶是不可登陸的,對守護進程獲取資源進行權限分配使用,其默認UID是1-499(在centos7中是1-1000),普通用戶的UID爲500-65535(centos7中爲1000-65535)nginx

 一、 用戶及其屬性信息

  /etc/passwd
關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
   例:root:x:0:0:root:/root:/bin/bash
    以:分隔
    root 用戶名(普通用戶或系統用戶或組名)
    x 用戶的密碼(映射到etc/shadow)
    0 UID 用戶的ID號
    0 GID用戶所屬組的ID號(主組,私有組)
    root 用戶所屬組組名
      /root 用戶的家目錄
      /bash 用戶的登陸shell(/bash:表示可登陸用戶,/nologin:表示不可登陸用戶)
   /etc/shadow
關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器   root:$6$4a0qWypn588Lf5ey$pCPLZaQa0bt/SEUnWVczNwxlA1xsjW2UrPnjsS2RXumSqDUtJaNe.qB7oNoGEI.zZmFt/644AmKLV.yB4Rs6L/:17540:0:99999:7:::
   以:分隔
   Root:用戶名
  6 : sha512加密
  4a0qWypn588Lf5ey:加密算法數據
  pCPLZaQa0bt/SEUnWVczNwxlA1xsjW2UrPnjsS2RXumSqDUtJaNe.qB7oNoGEI.zZmFt/644AmKLV.yB4Rs6L/:這一串字符是加密後的數據
   17540:從1970年1月1日起到密碼最近一次被更改的時間
    0:密碼再過幾天能夠被變動,0表示隨時可被變動
   99999:密碼再過幾天必須被變動,99999表示永不過時
   7:密碼過時前幾天系統提醒用戶,默認是7天,一週
   倒數第三位:密碼過時幾天後被鎖定
   倒數第二位:從1970年1月1日算起,多少天后帳號失效
   最後一位:爲擴展而有的,目前沒意義git

 二、 用戶管理命令

  1.用戶建立:useradd(adduser)

   語法:useradd 選項 參數 用戶名
    -u UID :指定uid默認從1000開始日後
    -o :與 -u 配合,不檢查UID的惟一性(用於所建立的用戶UID已被使用的狀況下)
    -g GID或組名: 指定用戶的主要組爲某個已存在的組,能夠指定GID也能夠指定組名
    -G :指定附加組 以逗號爲間隔能夠同時指定多個,組必須事先存在,能夠指定GID也能夠指定組名。
    -c 「...」:註釋信息
    -d 用戶家目錄:指定用戶家目錄,如不指定默認在/home下與用戶同名。指定時注意,目錄名需已存在,基名不存在。
    -s shell:指定登陸shell以下
    useradd -s /sbin/nologin test 建立shell爲不可交互式登陸的用戶
    -N :不建立私用組作主組,默認使用UID爲100的組爲主組
    -r :建立系統用戶 (centos 6及以前的版本 < 500, centos 7 < 1000)正則表達式

  2.用戶密碼的修改passwd

   語法:passwd 選項 (用戶名指定要修改密碼的用戶名,僅在root運行時,不用輸入原密碼,可直接更改,)
     -l 鎖定用戶 實際就是在密碼位前加!!
     -u 取消用戶鎖定
     -e 強制用戶下次登陸時更改密碼
     -n mindays: 指定最短使用期限
     -x maxdays:最大使用期限
     -w warndays:提早多少天開始警告
     -i inactivedays:非活動期限
     --stdin 從標準輸入接收用戶密碼算法

  3.更改密碼的默認設置

    chage 選項 用戶名
     -d 日期:上一次的更改日期(LAST_DAY)
     -E 具體日期(例:2017-09-08) : 帳戶過時過時時間過了這天,帳戶將不可用(expiredate EXPIRE_DATE)
     -I 天數 : 密碼過時幾天後此帳戶將不可用 (inactive INACTIVE)
     -m 天數 :密碼的最小存活期(mindays MIN_DAYS)
     -M 天數:密碼的最大存活期(maxdays MAX_DAYS)
     -W 天數:密碼過時前,提早警告的信息的天數(--warndays WARN_DAYS)
     –l 顯示密碼策略
 例:
     chage -d 0 tom 下一次登陸強制重設密碼
     chage -m 0 –M 42 –W 14 –I 7 tom 更改tom的密碼的最小存活期爲0天,最大存活期爲42天,在過時前14天提示警告的信息,過時7天后帳戶不可用
     chage -E 2016-09-10 tom 當到了這一天時帳戶不可用shell

  4.用戶屬性修改

   Usermod 選項 參數 用戶名
    -u UID:新UID
    -g GID: 新主組
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的 附加組將會被覆蓋;若保留原有,則要同時使用-a選項
    -a 與-G 結合 使用能夠增長用戶的附加組,而不會影響以前的附加組
    -s SHELL:新的默認SHELL
    -c 'COMMENT':新的註釋信息
    -d HOME: 新家目錄不會自動建立;若要建立新家目錄並移 動原家數據,同時使用-m選項
     -l login_name: 修改用戶名;
     -L: lock指定用戶,在/etc/shadow 密碼欄的增長 ! 至關於passwd -l
     -U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
     -e YYYY-MM-DD: 指明用戶帳號過時日期
     -f INACTIVE: 設定非活動期限vim

  5.用戶的刪除

     Userdel 選項 用戶名
      -r:刪除用戶的家目錄,centos

  6.查看用戶相關的ID信息

    ID 選項 用戶名
     -u: 顯示UID
     -g: 顯示GID
     -G: 顯示用戶所屬的組的ID
     -n: 顯示名稱,需配合ugG使用bash

  7.用戶切換

   su [options...] [-] [user [args...]]
   切換用戶的方式:
     su UserName:非登陸式切換,即不會讀取目標用戶的 配置文件,不改變當前工做目錄
     su - UserName:登陸式切換,會讀取目標用戶的配置 文件,切換至家目錄,徹底切換
   root su至其餘用戶無須密碼;
   非root用戶切換時須要密碼
   換個身份執行命令: su [-] UserName -c 'COMMAND'
選項:  -l –login
     su -l UserName 至關於 su – UserNameapp

  8. 手工建立家目錄的方法

mkdir /home/machao
            chmod 700 /home/machao/
            cp -r /etc/skel/.[^.]*  /home/machao/
            chown -R machao.machao /home/machao

2、組

 組是爲了方便對普通用戶的權限的管理,組內成員平等而獨立less

 一、 Linux組的類別

   用戶的主要組(primary group):
   用戶必須屬於一個且只有一個主組
   組名同用戶名,且僅包含一個用戶:私有組
   用戶的附加組(supplementary group): 一個用戶能夠屬於零個或多個輔助組

 二、 用戶和組的配置文件

  1./etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)

   /etc/group:組及其屬性信息
關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
     羣組名稱:就是羣組名稱
     羣組密碼:一般不須要設定,密碼是被記錄在/etc/gshadow
     GID:就是羣組的ID
     以當前組爲附加組的用戶列表(分隔符爲冒號)
   /etc/shadow:用戶密碼及其相關屬性
   /etc/gshadow-:組密碼及其相關屬性
    組名
    組密碼
    管理員:更改組密碼和成員
    組成員:功能同/etc/group中的第四列

  2.pwconv 將passwd當中的密碼映射到了/etc/shadow

    pwunconv 取消映射,密碼仍然放在/etc/passwd當中
    grpconv 將組密碼映射到了/etc/gshadow
    grpunconv 取消組密碼的映射

  3.vipw = vim /etc/passwd

   vipw -s = vim /etc/shadow
   vigr = vim /etc/group
   vigr -s = vim /etc/gshadow
   pwck 檢查/etc/passwd語法
   grpck 檢查/etc/group語法

  4. /etc/default/useradd 建立用戶的默認配置文件

關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
GROUP=100 :表示使用useradd -N時默認使用的組爲GIP爲100的組
HOME=/home: 自動建立家目錄時,從哪一個目錄下建立與用戶同名的家目錄
INACTIVE=-1 :用戶是否設置密碼過時後,多少天賬戶過時,爲-1時,不會觸發賬戶過時
EXPIRE= :是否指定一個賬戶過時時間,爲空表示賬戶默認永不過時
SHELL=/bin/bash: 使用useradd建立用戶時,如不使用-s 指定則默認的用戶shell爲/bin/bash
SKEL=/etc/skel :自動建立家目錄時,從哪一個目錄拷貝模板文件
CREATE_MAIL_SPOOL=yes : 建立用戶時是否在/var/spool/mail下爲用戶與用戶同名的郵箱文件。

 三、 建立組

   groupadd 選項 參數 groupname
     -g GID:指明GID號;
 -r :建立系統組

 四、組修改

  Groupmod 選項 參數 groupname
    -n newname 組名:修改組名
    -g newGID:修改組ID

 五、設置組密碼及組的管理

   1.Gpasswd 組名 設置組密碼

   管路員能夠執行:
    -a 用戶名 組名:將某用戶以附加組方式加入某組中,
    -d 用戶名 組名:將某用戶從指定組踢出
僅root執行
    -M用戶名[,用戶名…] 組名:設置某組的用戶列表
    -A 用戶名[,用戶名…] 組名:設置某組的管理員列表
(管理員在不是組成員的狀況下,僅能修改密碼,和將其餘人加入和踢出組,並不具備組成員的權限)
(newgrp 組名 「普通用戶執行」,非附加組成員的普通用戶在正確輸入組密碼後可使用該命令臨時變動主要組)
(附加組成員的普通用戶無需輸入密碼可使用該命令臨時變動主組,原主組臨時變成附加組)

  2.Groupmems -g 組名 選項 用戶名 (僅root執行)

-g 組名 -a 用戶名:將某用戶以附加組方式加入到某組中
            -g 組名 -d 用戶名:將某用戶從指定組踢出
            -g 組名 -p 清空全部成員
            -g 組名 -l 查看指定組有哪些成員(僅顯示附加組)

  3.groups 用戶名 查看用戶屬於哪些組(包含主組和附加組,普通用戶也可用)

  4.組刪除 groupdel

   Groupdel 組名:刪除組

3、 文件權限

 一、 文件屬性

關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器

 二、 修改文件的屬主和屬組

  1.文件的權限主要針對三類對象進行定義:

    owner: 屬主, u
    group: 屬組, g
    other: 其餘, o

  2.修改文件的屬主 chown(僅root才能更改文件所屬人)

Chown 選項 owner:group filename(:和.能夠互換着用)
               -R:遞歸修改目錄下全部文件
               Owner  只修改屬主
               Owner.group或owner:group 同時修改屬主和屬組
               :group或.group 只修改屬組(.或:不能省略)
                --reference=file1 file2 將file1的group信息複製給file2

  3.使用chgrp修改文件的group(文件的owner可使用chgrp更改文件的group,前提是owner必定要屬於目標group)

Chgrp 組名 filename
             -R 遞歸
             --reference=file1 file2 將file1的group信息複製給file2

 三、權限設置

  1.每一個文件針對每類訪問者都定義了三種權限:

    r: Readable 可讀
    w: Writable 可寫
    x: eXcutable 可執行
   文件:
    r: 可以使用文件查看類工具獲取其內容
    w: 可修改其內容
    x: 能夠把此文件提請內核啓動爲一個進程
   目錄:
    r: 可使用ls查看此目錄中文件列表
    w: 可在此目錄中建立文件,也可刪除此目錄中的文件
    x: 可使用ls -l查看此目錄中文件列表,能夠cd進入此
   目錄 X:只給目錄x權限,不給文件x權限

  2.當rwx分別或組合做用在文件上時

   當僅r權限做用在文件上的時候,用戶能夠讀取該文件的內容:cat less more head tail
   當僅w權限做用在文件上的時候,用戶能夠修改文件的內容:>>
   當僅x權限做用在文件上的時候,無做爲.
   當rw權限做用在文件上的時候,用戶即能讀與能修改:cat less more head tail vim nano > >>
   當rx權限做用在文件上的時候,用戶能夠執行該文件
   當wx權限做用在文件上的時候,權限等同於僅w權限.
   文件的常見權限是r-- rw- rwx

  3.當rwx分別或組合在目錄上時

   當僅r權限做用在目錄上的時候,用戶能夠短列出目錄下的文件名.
   當僅w權限做用在目錄上的時候,無做爲.
   當僅x權限做用在目錄上的時候,用戶能夠進入該目錄,而且在知道具體文件名且具備相關權限的狀況下,能夠訪問子文件.
   當rw權限做用在目錄上的時候,權限等同於僅r權限
   當rx權限做用在目錄上的時候,用戶進入,長列出.
   當wx權限做用在目錄上的時候,用戶能夠進入且能夠建立及刪除文件.但不能使用文件名通配符
   目錄的常見權限r-x rwx

  4.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

  5.修改文件權限 chmod

   Chmod 選項 權限 filename
    -R:遞歸
     --reference file1 file2: 將file1的權限複製給file2
   權限表達式:
    u/g/o/a= :指定給u,g,o或所有的權限
    u/g/o/a+ :給u,g,o或所有添加某個權限
    u/g/o/a- :給u,g,o或所有減去某個權限
(當使用a給所有加x權限時,只給目錄及已有部分x權限的文件加上x權限,不給三個權限位徹底沒有x權限的文件加x權限)

4、 特殊權限

 一、 前提:進程有屬主和屬組;文件有屬主和屬組

  1.任何一個可執行程序文件能不能啓動爲進程,取決發起者 對程序文件是否擁有執行權限

  2.啓動爲進程以後,其進程的屬主爲發起者,進程的屬組爲 發起者所屬的組

  3.進程訪問文件時的權限,取決於進程的發起者

   (a) 進程的發起者,同文件的屬主:則應用文件屬主權限
   (b) 進程的發起者,屬於文件屬組;則應用文件屬組權限
   (c) 應用文件「其它」權限

 二、 三種經常使用的權限:r, w, x user, group, other

  三種不經常使用的特殊權限:SUID, SGID, Sticky

 三、 SUID 權限

  任何一個可執行程序文件能不能啓動爲進程:取決發起者對 程序文件是否擁有執行權限。
  啓動爲進程以後,其進程的屬主爲原程序文件的屬主
  SUID只對二進制可執行程序有效
  SUID設置在目錄上無心義

  1.權限設定:

   chmod u+s 文件路徑 :給某個二進制文件添加SUID權限
   chmod u-s 文件路徑 :給某個二進制文件減去SUID權限

  2.SUID 權限的做用

任何一個可執行程序文件能不能啓動爲進程:取決發起者對 程序文件是否有執行權限
啓動爲進程以後,其進程的屬主爲原程序文件的屬主

 四、 SGID權限

  1. 當SGID 做用在一個二進制程序上時

   (1)SGID 的做用

    任何一個可執行程序文件能不能啓動爲進程:取決發起者對 程序文件是否擁有執行權限
    啓動爲進程以後,其進程的屬主爲原程序文件的屬組

   (2)權限設定

    Chmod g+s 文件路徑
    Chmod g-s 文件路徑

  2.當SGID做用在一個目錄上時

   (1) SGID的做用

    默認狀況下,用戶建立文件時,其屬組爲此用戶所屬的主組
    一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此 目錄中建立的文件所屬的組爲此目錄的屬組
    一般用於建立一個協做目錄

   (2) 權限設定

    chmod g+s 目錄路徑 :給某個目錄添加SGID 權限
    chmod g-s 目錄路徑:給某個目錄上SGID權限取消

 五、 Sticky位

  具備寫權限的目錄一般用戶能夠刪除該目錄中的任何 文件,不管該文件的權限或擁有權
  在目錄設置Sticky 位,只有文件的全部者或root可 以刪除該文件 sticky
  設置在文件上無心義
  權限設定:
   chmod o+t 目錄路徑
   chmod o-t 目錄路徑

 六、 特殊權限數字法

關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
   例:chmod u+s =chmod 4xxx
    Chmod g+s=chmod 2xxx
    Chmod o+t=chmod 1xxx
    即有suid又有sgid 6xxx
    即有suid又有sticky 5xxx
    即有sgid又有Sticky 3xxx
    全有7xxx
(權限位本來有x(執行權限)的,加上特殊權限後,顯示爲小寫,本來沒有,顯示爲大寫)

 七、 文件特定權限

   Chattr +a 文件路徑 :不能刪除,不能更名,不能修改,能夠追加
   chattr +i 不能刪除,不能更名,不能修改,不能追加
   lsattr 查看文件特定權限

 八、 權限的優先級

   owner > acl user > group 與 acl group 誰的權限多,誰優先 > other

 九、 umask,用戶新建文件或目錄時的默認權限

   umask值 能夠用來保留在建立文件權限
   新建文件權限: 666-umask
   若是所得結果某位存在執行(奇數)權限,則將其權限+1
   新建目錄權限: 777-umask
   非特權用戶umask是 002
   root的umask 是 022
   umask:查看當前用戶的umask值
   umask #:設定當前用戶的umask值,(臨時,當切換用戶再切換回來時會失效)
   umask –S :以u/g/o=rwx顯示當前用戶的umask值,後跟具體值也能夠更改用戶umask值
   umask -p:輸出可被調用,
   全局設置: /etc/bashrc
   用戶設置:~/.bashrc

5、 Acl擴展訪問列表

   ACL:Access Control List,實現靈活的權限管理
   除了文件的全部者,所屬組和其餘人,能夠對更多的用戶設置權限
   centos7中的全部文件系統以及Centos6隨着操做系統安裝是劃分的文件系統均已默認開啓acl。

 一、 centos6當中對新建分區開啓acl的過程

  1. 建立分區

   fdisk /dev/sda
     n 回車
     回車
    +2G回車
    W回車

  2.同步分區表

   partx -a /dev/sda

  3.建立文件系統

   mkfs.ext4 /dev/sda6

  4.開啓acl支持

   tune2fs -o acl /dev/sda6

  5.查看acl

   tune2fs -l /dev/sda6 |grep option

 二、訪問控制列表的設置

   爲多用戶或者組的文件和目錄賦予訪問權限rwx (經過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限)
   setfacl -m u:用戶名:rwx 目錄路徑 給某個文件或目錄添加一條acl user的權限
   setfacl -Rm g:sales:rwX directory 遞歸
   setfacl -M file.acl file|directory 提早寫一個acl的文件,而後把文件的acl設置賦給該文件或目錄
   setfacl -m g:salesgroup:rw file| directory給某個文件或目錄添加一個acl group的權限
   setfacl -m d:u:wang:rx directory
   setfacl -x u:wang file |directory 刪除一條acl
   setfacl -X file.acl directory刪除賦給某個文件或目錄的acl文件
   setfacl -m m:r-x file |directory 設置上限閥值 或chmod g=r-x
   setfacl -d -m u/g:username/groupname file |directory 設置默認權限
   setfacl -k file |directory 清除默認acl權限
   setfacm -b file |directory 清除全部acl屬性
   mount -o acl /directory

 三、 Getfacl 查看特殊權限

關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
   ACL文件上的group權限是mask 值(自定義用戶,自定義組 ,擁有組的最大權限),而非傳統的組權限

 四、 Mask

   mask隻影響除全部者和other的以外的人和組的最大權限 Mask須要與用戶的權限進行邏輯與運算後,才能變成有限的 權限(Effective Permission)
   用戶或組的設置必須存在於mask權限設定範圍內纔會生效
   setfacl -m mask::rx file
   --set選項會把原有的ACL項都刪除,用新的替代,須要注 意的是必定要包含UGO的設置,不能象-m同樣只是添加 ACL就能夠
     setfacl --set u::rw,u:wang:rw,g::r,o::- file1

 五、 備份和恢復ACL

   getfacl -R /tmp/dir1 > acl.txt 把文件的acl生成一個ACL表文件,保存起來
   setfacl -R -b /tmp/dir1 清空文件上全部的acl屬性
   setfacl --restore acl.txt 加載 acl文件
   getfacl -R /tmp/dir1 查看特殊權限

6、 文本處理工具

 一、 Cat文件查看命令

   cat 選項 文件路徑
    -E: 顯示行結束符
    -n: 對顯示出的每一行進行編號
    -A:顯示全部控制符
    -b:非空行編號
    -s:壓縮連續的空行成一行
    -v 顯示^M
    -T 顯示^I即tab

 二、 more:分頁查看工具

   more 選項 文件路徑
    -d :顯示翻頁及退出提示

 三、 less 一頁一頁地查看文件或STDIN輸出

   查看時有用的命令包括: /
   文本 搜索 文本
   n/N 跳到下一個 或 上一個匹配
   less 命令是man命令使用的分頁器

 四、 head

   head 選項 文件路徑(n表明一個數字)
     -c n :顯示前n個字節
     -n n:顯示前n行
     -n:顯示前n行

 五、 tail

   tail 選項 文件路徑
    -c n:顯示文件倒數n字節
    -n n: 顯示文件內容倒數n行
    -n : 顯示文件內容倒數n行
    -f:動態顯示,實時顯示文件新添加的內容,經常使用日誌監控

 六、 cut

   cut 選項 文件路徑
    -d : :指定分隔符爲:,默認tab
    -f 列數:顯示指定的第幾列,也能夠跟多個列數
     N :第n列
     1,3,6:離散的多個列
     1-4:連續的多個列,
    -c n:按字符切割,顯示第n個字符那一列
    --output-delimiter=STRING指定輸出分隔符

 七、 paste 合併兩個文件的內容同時顯示,行號相同的在同一行顯示

   paste 選項 file1 file2
    -d分隔符:指定分隔符,默認用tab
    -s:全部行合成一行顯示
     Paste file1 file2
    paste -s f1 f2

7、 分析文本的工具

 一、 收集文本統計數據wc

   計數單詞總數、行總數、字節總數和字符總數
   能夠對文件或STDIN中的數據運行
   wc 文件路徑:顯示該文件的行數,字數,字符數以及文件名
    -l:只計數行數
    -w:只計數單詞總數
    -c:只計數字節總數
    -m:只計數字符總數

 二、文本排序sort

  把整理過得文本顯示在終端上,不改變原始文件的
  Sort 選項 文件路徑
   -r :執行反方向(由上至下)整理
   -n :執行按數字大小整理
   -f :忽略(fold)字符串中的字符大小寫
   -u :(獨特,unique)刪除輸出中的重複行
   -t c :使用c作爲字段界定符
   -k X :按照使用c字符分隔的X列來整理可以使用屢次

 三、 Unip

   從輸入中刪除先後相接的重複的行
   Unip 選項 文件路徑
    -c顯示每行重複出現的次數
    -d: 僅顯示重複過的行
    -u: 僅顯示未曾重複的行 (連續且徹底相同方爲重複)
   常和sorrt命令一塊兒使用
    Sort userlist.txt | unip -c

 四、 比較文件diff

   比較兩個文件之間的區別,不一樣之處
    Diff file1 file2
關於Linux,用戶,組,權限,文本處理工具,正則表達式,vim文本編輯器
   註明第6行不同
   diff 命令的輸出被保存在一種叫作「補丁」的文件中
   使用 -u 選項來輸出「統一的(unified)」diff格式文 件,最適用於補丁文件。
   diff -u foo.conf-broken foo.conf-works > foo.patch
   patch 複製在其它文件中進行的改變(要謹慎使用)
   使用 -b 選項來自動備份改變了的文件
     patch -b foo.conf-broken foo.patch

8、 文本處理命令

   Grep :文本過濾工具
   Sed:文本編輯工具
   Awk:文本報告生成器

 一、 grep文本過濾工具

   grep,egrep,fgrep(不支持正則表達式搜索)
    egrep=grep -E
   做用:文本搜索工具,根據用戶指定的「模式」對目標文本逐行進行匹配檢查,打印匹配到的行
   模式:由正則表達式字符及文本字符所編寫的過濾條件
    grep root /etc/passwd 在該文件中搜索有root的行並顯示
    grep "$USER" /etc/passwd 使用正則表達式時要用「」或‘’引發來,表示不是匹配這段字符,而是匹配正則表達式的結果,或在表達式前加\也能夠
    grep '$USER' /etc/passwd
    grep `whoami` /etc/passwd 在文本中搜索命令結果的行
   grep 選項 參數 文件路徑
    --color=auto: 對匹配到的文本着色顯示
    -v: 顯示不被pattern匹配到的行
    -i: 忽略字符大小寫
    -n:顯示匹配的行號
    -c: 統計匹配的行數
    -o: 僅顯示匹配到的字符串
    -q: 靜默模式,不輸出任何信息
    -A #: after, 後#行
    -B #: before, 前#行
    -C #:context, 先後各#行
    -e:實現多個選項間的邏輯or關係 grep –e ‘cat ’ -e ‘dog’ file
    - w:匹配整個單詞
    - E:使用ERE
    - F:至關於fgrep,不支持正則表達式

9、 正則表達式

  Regexp正則表達式,:由一類特殊字符及文本字符所編寫的模式,其中有 些字符(元字符)不表示字符字面意義,而表示控制或通配 的功能
  程序支持:grep,sed,awk,vim, less,nginx,varnish等
  正則表達式分爲兩類,
   基本正則表達式:BRE
   擴展正則表達式:ERE
元字符分類:字符匹配、匹配次數、位置錨定、分組

 一、 字符匹配

  . 匹配任意單個字符
  [] 匹配指定範圍內的任意單個字符
  [^] 匹配指定範圍外的任意單個字符
  [: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

10、 擴展正則表達式

 一、擴展正則表達式的元字符

  1.字符匹配:

    . 任意單個字符
   [] 指定範圍的字符
   [^] 不在指定範圍的字符

  2.次數匹配

    *:匹配前面字符任意次
   ?: 0或1次 +:1次或屢次
   {m}:匹配m次
   {m,n}:至少m,至多n次

  3.位置錨定

   ^ :行首
   $ :行尾
   \<,\b:詞首
   \>, \b :語尾

  4.分組

   ()
   後向引用:\1,\2,……

  5.或

   a|b: a 或 b
   C|cat: C 或cat
   (C|c )at:Cat 或cat

11、 VIM編輯器

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

 一、 vim 選項 文件路徑

  +#: 打開文件後,讓光標處於第#行的行首,
  +默認行尾
  +/PATTERN:打開文件後,直接讓光標處於第一個被 PATTERN匹配到的行的行首
  –b file 二進制方式打開文件
  –d file1 file2… 比較多個文件
  -m file 只讀打開文件

 二、 ex file或vim -e file 直接進入ex模式

  使用vim打開一個文件時,若是文件存在,文件被打開並顯示內容
  若是文件不存在,當編輯後第一次存盤時建立它

 三、 vim的模式

  有三種主要模式

  1. 命令模式:默認模式,移動光標,剪切/粘貼文本

   插入模式:修改編輯文本
   命令行模式:保存退出

  2. 模式轉換

   插入模式 --------> 命令模式
        ESC
   命令模式 --------> 擴展命令模式
        :
   擴展命令模式 --------> 命令模式
        ESC,enter

  3. 命令模式(default):移動光標,複製,剪切,粘貼,刪除、撤銷,重作,搜索,進入其餘模式

   移動光標:
    h向左移動一個字符
    l向右移動一個字符
    j向下移動一個字符
    k向上移動一個字符 配合#h,#l,#j,#k可一次性移動#個字符
    w跳到下一個單詞的詞首
    b跳到上一個單詞的詞首
    H跳到當前頁首
    M跳到當前頁中
    L跳到當前頁尾
    gg跳到整個文件的首行
    G跳到整個文件的末行
    ^移到非空格開頭的行首
    $移到行尾
    #G跳到指定行,或退出模式下:#
    Ctrl+f: 向文件尾部翻一屏
    Ctrl+b: 向文件首部翻一屏
    Ctrl+d: 向文件尾部翻半屏
    Ctrl+u:向文件首部翻半屏
     r替換一個字符
   d剪切
     dd剪切當前行
    #dd剪切#行
    dw剪切光標後一個單詞
    db 剪切光標前一個單詞
    de 剪切當前光標處一個字符
    d^從光標所在處剪切到行首
    d$或D從光標所在處剪切到行尾
   y複製
    yy或Y複製當前行
    #yy複製#行
    yw複製一個單詞
    y^從光標所在處複製到行首
    y$從光標所在處複製到行尾
     ye複製光標處一個字符
    yw複製光標後一個單詞
    yb複製光標處前一個單詞
   p粘貼
    小寫p當前行向下粘貼或光標所在處向後粘貼
    大寫P當前行向上粘貼或光標所在處向前粘貼
    小寫p:緩衝區存的若是爲整行,則粘貼當前光標所在行的下 方;不然,則粘貼至當前光標所在處的後面
    大寫P:緩衝區存的若是爲整行,則粘貼當前光標所在行的上 方;不然,則粘貼至當前光標所在處的前面
   x刪除
     x: 刪除光標處的字符
    #x: 刪除光標處起始的#個字符
    xp: 交換光標所在處的字符及其後面字符的位置
    ~:轉換大小寫
    J:刪除當前行後的換行符
   替換
    r: 替換光標所在處的字符
    R:切換成REPLACE模式
    撤銷
     u撤銷最近的更改
    #u撤銷以前屢次更改
    U 撤消光標落在這行後全部此行的更改
   重作
    按Ctrl - r重作最後的「撤消」更改
    . 重複前一個操做
    n.重複前一個操做n次
    退出
     ZZ: 保存退出
    ZQ:不保存退出
   改變命令(c,change)
    c: 修改後進入插入模式
    命令模式---> 插入模式
     c$ :從光標處刪除到行尾
    c^ :從光標處刪除至行首
    c0 :等同於c^
    cb :從光標處刪除到單詞首
    ce :從光標處刪除到單詞尾
    cw :刪除光標處單詞
    #cc:刪除當前行並輸入新內容
    C:等同於c^
   檢索
    \ #:在全文中檢索出當前光標處的單詞並高亮顯示

  4. 擴展命令行模式

   :q 退出
   w 保存
   :q! 強制退出,丟棄作出的修改
   :wq 保存退出
   :x 保存退出
   r filename 讀取另外一個文件的內容並將輸出結果寫入文件
   w filename 另存爲(確認當前用戶對該路徑中的最後一級目錄有wx權限)
   !command 執行命令,將輸出結果顯示在終端上
   r!command 執行某條命令,在光標所在的當前行向下插入新行並將輸出結果輸入
   .! command 執行某條命令,替換光標所在的當前行並將輸出結果輸入
   搜索
    /關鍵字
     n向下找
     N向上找
    ?關鍵字
      n向上找
      N向下找
   按ESC或enter進入命令模式

  5.插入模式

  經常使用於編輯文本內容,按ESC鍵退出進入命令模式  從命令模式進入插入模式   i: insert, 在光標所在處輸入    I:在當前光標所在行的行首輸入    a: append, 在光標所在處後面輸入    A:在當前光標所在行的行尾輸入    o: 在當前光標所在行的下方打開一個新行   O:在當前光標所在行的上方打開一個新行

相關文章
相關標籤/搜索