用戶組
passwd???? 用于設置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。
選項
d:刪除密碼,僅有系統管理者才能使用;
-f:強制執行;
-k:設置只有在密碼過期失效后,方能更新;
-l:鎖住密碼;
-s:列出密碼的相關信息,僅有系統管理者才能使用;
-u:解開已上鎖的帳號。
實例
如果是普通用戶執行passwd只能修改自己的密碼。如果新建用戶后,要為新用戶創建密碼,則用passwd用戶名,注意要以root用戶的權限來創建。
[root@localhost ~]# passwd linuxde??? //更改或創建linuxde用戶的密碼;
Changing password for user linuxde.
New UNIX password:????????? //請輸入新密碼;
Retype new UNIX password:?? //再輸入一次;
passwd: all authentication tokens updated successfully. //成功;
普通用戶如果想更改自己的密碼,直接運行passwd即可,比如當前操作的用戶是linuxde。
[linuxde@localhost ~]$ passwd
Changing password for user linuxde. //更改linuxde用戶的密碼;
(current) UNIX password:?? //請輸入當前密碼;
New UNIX password:???????? //請輸入新密碼;
Retype new UNIX password:? //確認新密碼;
passwd: all authentication tokens updated successfully. //更改成功;
比如我們讓某個用戶不能修改密碼,可以用-l選項來鎖定:
[root@localhost ~]# passwd -l linuxde??? //鎖定用戶linuxde不能更改密碼;
Locking password for user linuxde.
passwd: Success?????????? //鎖定成功;
[linuxde@localhost ~]# su linuxde?? //通過su切換到linuxde用戶;
[linuxde@localhost ~]$ passwd????? //linuxde來更改密碼;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password:????????? //輸入linuxde的當前密碼;
passwd: Authentication token manipulation error???? //失敗,不能更改密碼;
再來一例:
[root@localhost ~]# passwd -d linuxde? //清除linuxde用戶密碼;
Removing password for user linuxde.
passwd: Success???????????????????????? //清除成功;
[root@localhost ~]# passwd -S linuxde??? //查詢linuxde用戶密碼狀態;
Empty password.???????????????????????? //空密碼,也就是沒有密碼;
注意:當我們清除一個用戶的密碼時,登錄時就無需密碼,這一點要加以注意
useradd ?????用于Linux中創建的新的系統用戶。useradd可用來建立用戶帳號。帳號建好之后,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是保存在/etc/passwd文本文件中。
選項
-c<備注>:加上備注文字。備注文字會保存在passwd的備注欄位中;
-d<登入目錄>:指定用戶登入時的啟始目錄;
-D:變更預設值;
-e<有效期限>:指定帳號的有效期限;
-f<緩沖天數>:指定在密碼過期后多少天即關閉該帳號;
-g<群組>:指定用戶所屬的群組;
-G<群組>:指定用戶所屬的附加群組;
-m:自動建立用戶的登入目錄;
-M:不要自動建立用戶的登入目錄;
-n:取消建立以用戶名稱為名的群組;
-r:建立系統帳號;
-s<shell>:指定用戶登入后所使用的shell;
-u<uid>:指定用戶id。
實例
新建用戶加入組:
useradd –g sales jack –G company,employees??? //-g:加入主要組、-G:加入次要組
建立一個新用戶賬戶,并設置ID:
useradd caojh -u 544
需要說明的是,設定ID值時盡量要大于500,以免沖突。因為Linux安裝后會建立一些特殊用戶,一般0到499之間的值留給bin、mail這樣的系統賬號
usermod??????? 用于修改用戶的基本信息。usermod命令不允許你改變正在線上的使用者帳號名稱。當usermod命令用來改變user id,必須確認這名user沒在電腦上執行任何程序。你需手動更改使用者的crontab檔。也需手動更改使用者的at工作檔。采用NIS server須在server上更動相關的NIS設定。
選項
-c<備注>:修改用戶帳號的備注文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改帳號的有效期限;
-f<緩沖天數>:修改在密碼過期后多少天即關閉該帳號;
-g<群組>:修改用戶所屬的群組;
-G<群組>;修改用戶所屬的附加群組;
-l<帳號名稱>:修改用戶帳號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入后所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。
實例
將newuser2添加到組staff中:
usermod -G staff newuser2
修改newuser的用戶名為newuser1:
usermod -l newuser1 newuser
鎖定賬號newuser1:
usermod -L newuser1
解除對newuser1的鎖定:
usermod -U newuser1
userdel??????? 用于刪除給定的用戶,以及與用戶相關的文件。若不加選項,則僅刪除用戶帳號,而不刪除相關文件。
選項
-f:強制刪除用戶,即使用戶當前已登錄;
-r:刪除用戶的同時,刪除與用戶相關的所有文件。
實例
userdel命令很簡單,比如我們現在有個用戶linuxde,其家目錄位于/var目錄中,現在我們來刪除這個用戶:
userdel linuxde?????? //刪除用戶linuxde,但不刪除其家目錄及文件;
userdel -r linuxde??? //刪除用戶linuxde,其家目錄及文件一并刪除;
請不要輕易用-r選項;他會刪除用戶的同時刪除用戶所有的文件和目錄,切記如果用戶目錄下有重要的文件,在刪除前請備份。
其實也有最簡單的辦法,但這種辦法有點不安全,也就是直接在/etc/passwd中刪除您想要刪除用戶的記錄;但最好不要這樣做,/etc/passwd是極為重要的文件,可能您一不小心會操作失誤。
groupadd??????? 用于創建一個新的工作組,新工作組的信息將被添加到系統文件中
選項
-g:指定新建工作組的id;
-r:創建系統工作組,系統工作組的組ID小于500;
-K:覆蓋配置文件“/ect/login.defs”;
-o:允許添加組ID號不唯一的工作組。
實例
建立一個新組,并設置組ID加入系統:
groupadd -g 344 linuxde
此時在/etc/passwd文件中產生一個組ID(GID)是344的項目。
groupmod ???????更改群組識別碼或名稱。需要更改群組的識別碼或名稱時,可用groupmod指令來完成這項工作。
選項
-g<群組識別碼>:設置欲使用的群組識別碼;
-o:重復使用群組識別碼;
-n<新群組名稱>:設置欲使用的群組名稱。
實例
[root@jb51.net ~]# groupadd linuxso
[root@jb51.net ~]# tail -1 /etc/group
linuxso:x:500:
[root@jb51.net ~]# tail -1 /etc/group
linuxso:x:500:
[root@jb51.net ~]# groupmod -n linux linuxso
[root@jb51.net ~]# tail -1 /etc/group
linux:x:500:
grouped ??????用于刪除指定的工作組,本命令要修改的系統文件包括/ect/group和/ect/gshadow。若該群組中仍包括某些用戶,則必須先刪除這些用戶后,方能刪除群組。
實例
groupadd damon? //創建damon工作組
groupdel damon? //刪除這個工作組
useradd????? 用于Linux中創建的新的系統用戶。useradd可用來建立用戶帳號。帳號建好之后,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是保存在/etc/passwd文本文件中
選項
-c<備注>:加上備注文字。備注文字會保存在passwd的備注欄位中;
-d<登入目錄>:指定用戶登入時的啟始目錄;
-D:變更預設值;
-e<有效期限>:指定帳號的有效期限;
-f<緩沖天數>:指定在密碼過期后多少天即關閉該帳號;
-g<群組>:指定用戶所屬的群組;
-G<群組>:指定用戶所屬的附加群組;
-m:自動建立用戶的登入目錄;
-M:不要自動建立用戶的登入目錄;
-n:取消建立以用戶名稱為名的群組;
-r:建立系統帳號;
-s<shell>:指定用戶登入后所使用的shell;
-u<uid>:指定用戶id。
實例
新建用戶加入組:
useradd –g sales jack –G company,employees??? //-g:加入主要組、-G:加入次要組
建立一個新用戶賬戶,并設置ID:
useradd caojh -u 544
需要說明的是,設定ID值時盡量要大于500,以免沖突。因為Linux安裝后會建立一些特殊用戶,一般0到499之間的值留給bin、mail這樣的系統賬號。
usermod ???????用于修改用戶的基本信息。usermod命令不允許你改變正在線上的使用者帳號名稱。當usermod命令用來改變user id,必須確認這名user沒在電腦上執行任何程序。你需手動更改使用者的crontab檔。也需手動更改使用者的at工作檔。采用NIS server須在server上更動相關的NIS設定。
選項
-c<備注>:修改用戶帳號的備注文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改帳號的有效期限;
-f<緩沖天數>:修改在密碼過期后多少天即關閉該帳號;
-g<群組>:修改用戶所屬的群組;
-G<群組>;修改用戶所屬的附加群組;
-l<帳號名稱>:修改用戶帳號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入后所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定
實例
將newuser2添加到組staff中:
usermod -G staff newuser2
修改newuser的用戶名為newuser1:
usermod -l newuser1 newuser
鎖定賬號newuser1:
usermod -L newuser1
解除對newuser1的鎖定:
usermod -U newuser1
id?????? 可以顯示真實有效的用戶ID(UID)和組ID(GID)。UID 是對一個用戶的單一身份標識。組ID(GID)則對應多個UID。id命令已經默認預裝在大多數Linux系統中。要使用它,只需要在你的控制臺輸入id。不帶選項輸入id會顯示如下。結果會使用活躍用戶。
選項
-g或–group 顯示用戶所屬群組的ID。
-G或–groups?? 顯示用戶所屬附加群組的ID。
-n或–name ? 顯示用戶,所屬群組或附加群組的名稱。
-r或–real ? 顯示實際ID。
-u或–user ? 顯示用戶ID。
-help ?????? 顯示幫助。
-version ??? 顯示版本信息。
實例
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
su????? 用于切換當前用戶身份到其他用戶身份,變更時須輸入所要變更的用戶帳號與密碼。
選項
-c<指令>或–command=<指令>:執行完指定的指令后,即恢復原來的身份;
-f或——fast:適用于csh與tsch,使shell不用去讀取啟動文件;
-l或——login:改變身份時,也同時變更工作目錄,以及HOME,SHELL,USER,logname。此外,也會變更PATH變量;
-m,-p或–preserve-environment:變更身份時,不要變更環境變量;
-s<shell>或–shell=<shell>:指定要執行的shell;
–help:顯示幫助;
–version;顯示版本信息。
實例
變更帳號為root并在執行ls指令后退出變回原使用者:
su -c ls root
變更帳號為root并傳入-f選項給新執行的shell:
su root -f
變更帳號為test并改變工作目錄至test的家目錄:
su –test
chage???? 用來修改帳號和密碼的有效期限
選項
-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提前收到警告信息的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。
-l:例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
實例
可以編輯/etc/login.defs來設定幾個參數,以后設置口令默認就按照參數設定為準:
PASS_MAX_DAYS?? 99999
PASS_MIN_DAYS?? 0
PASS_MIN_LEN??? 5
PASS_WARN_AGE?? 7
當然在/etc/default/useradd可以找到如下2個參數進行設置:
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
通過修改配置文件,能對之后新建用戶起作用,而目前系統已經存在的用戶,則直接用chage來配置。
我的服務器root帳戶密碼策略信息如下:
[root@linuxde ~]# chage -l root
最近一次密碼修改時間??????????????????? : 3月 12, 2013
密碼過期時間??????????????????????????? :從不
密碼失效時間?????????????????????????? :從不
帳戶過期時間?????????????????????????? :從不
兩次改變密碼之間相距的最小天數????????? :0
兩次改變密碼之間相距的最大天數????????? :99999
在密碼過期之前警告的天數??????????????? :7
我可以通過如下命令修改我的密碼過期時間:
[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密碼修改時間????????????????????????? : 3月 12, 2013
密碼過期時間?????????????????????????????????????? : 5月 11, 2013
密碼失效時間?????????????????????????????????????? :從不
帳戶過期時間?????????????????????????????????????? :從不
兩次改變密碼之間相距的最小天數????????? :0
兩次改變密碼之間相距的最大天數????????? :60
在密碼過期之前警告的天數??????????????????? :9
然后通過如下命令設置密碼失效時間:
[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近一次密碼修改時間????????????????????????? : 3月 12, 2013
密碼過期時間????????????????????????????????? : 5月 11, 2013
密碼失效時間????????????????????????????????? : 5月 16, 2013
帳戶過期時間????????????????????????????????? :從不
兩次改變密碼之間相距的最小天數????????? :0
兩次改變密碼之間相距的最大天數????????? :60
在密碼過期之前警告的天數???????????????? :9
gpasswd??????????? 是Linux下工作組文件/etc/group和/etc/gshadow管理工具。
選項
-a:添加用戶到組;
-d:從組刪除用戶;
-A:指定管理員;
-M:指定組成員和-A的用途差不多;
-r:刪除密碼;
-R:限制用戶登入組,只有組中的成員才可以用newgrp加入該組
實例
如系統有個peter賬戶,該賬戶本身不是groupname群組的成員,使用newgrp需要輸入密碼即可。
gpasswd groupname
讓使用者暫時加入成為該組成員,之后peter建立的文件group也會是groupname。所以該方式可以暫時讓peter建立文件時使用其他的組,而不是peter本身所在的組。
所以使用gpasswd groupname設定密碼,就是讓知道該群組密碼的人可以暫時切換具備groupname群組功能的。
gpasswd -A peter users
這樣peter就是users群組的管理員,就可以執行下面的操作:
gpasswd -a mary users
gpasswd -a allen users
注意:添加用戶到某一個組 可以使用usermod -G group_name user_name這個命令可以添加一個用戶到指定的組,但是以前添加的組就會清空掉。
所以想要添加一個用戶到一個組,同時保留以前添加的組時,請使用gpasswd這個命令來添加操作用戶:
gpasswd -a user_name group_name
chown????????? 改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。用戶可以是用戶或者是用戶D,用戶組可以是組名或組id。文件名可以使由空格分開的文件列表,在文件名中可以包含通配符。
選項
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或–quite或——silent:不顯示錯誤信息;
-h或–no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件;
-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一并處理;
-v或——version:顯示指令執行過程;
–dereference:效果和“-h”參數相同;
–help:在線幫助;
–reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同;
–version:顯示版本信息。
實例
將目錄/usr/meng及其下面的所有文件、子目錄的文件主改成 liu:
chown -R liu /usr/meng
umask??????????? 用來設置限制新建文件權限的掩碼。當新文件被創建時,其最初的權限由文件創建掩碼決定。用戶每次注冊進入系統時,umask命令都被執行, 并自動設置掩碼mode來限制新文件的權限。用戶可以通過再次執行umask命令來改變默認值,新的權限將會把舊的覆蓋掉。
選項
-p:輸出的權限掩碼可直接作為指令來執行;
-S:以符號方式輸出權限掩碼。
實例
利用umask命令可以指定哪些權限將在新文件的默認權限中被刪除。例如,可以使用下面的命令創建掩碼,使得組用戶的寫權限,其他用戶的讀、寫和執行權限都被取消:
umask u=, g=w, o=rwx
執行該命令以后,對于下面創建的新文件,其文件主的權限未做任何改變,而組用戶沒有寫權限,其他用戶的所有權限都被取消。
應注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它來設置指定的權限,而其余權限則被刪除;但是在umask命令中,它將在原有權限的基礎上刪除指定的權限。
不能直接利用umask命令創建一個可執行的文件,用戶只能在其后利用chmod命令使它具有執行權限。假設執行了命令umask u=, g=w, o=rwx,雖然在命令行中,沒有刪去文件主和組用戶的執行權限,但默認的文件權限還是640(即 rw-r—–),而不是750(rwxr-x—)。但是,如果創建的是目錄或者通過編譯程序創建的一個可執行文件,將不受此限制。在這種情況 下,會設置文件的執行權限。
也可以使用八進制數值來設置mode。由于在umask中所指定的權限是要從文件中刪除的,所以,如果該文件原來的初始化權限是777,那么執行命令umask 022以后,該文件的權限將變為755:如果該文件原來的初始化權限是666,那么該文件的權限將變為644。
可以使用下面的命令檢查新創建文件的默認權限:
umask –s
選項-s表示以字符形式顯示當前的掩碼。如果直接輸入umask命令,不帶任何參數,那么將以八進制形式顯示當前的掩碼。系統默認的掩碼是0022
Chattr???? 用來改變文件屬性。這項指令可改變存放在ext2文件系統上的文件或目錄屬性,這些屬性共有以下8種模式
a:讓文件或目錄僅供附加用途;
b:不更新文件或目錄的最后存取時間;
c:將文件或目錄壓縮后存放;
d:將文件或目錄排除在傾倒操作之外;
i:不得任意更動文件或目錄;
s:保密性刪除文件或目錄;
S:即時更新文件或目錄;
u:預防意外刪除。
選項
-R:遞歸處理,將指令目錄下的所有文件及子目錄一并處理;
-v<版本編號>:設置文件或目錄版本;
-V:顯示指令執行過程;
+<屬性>:開啟文件或目錄的該項屬性;
-<屬性>:關閉文件或目錄的該項屬性;
=<屬性>:指定文件或目錄的該項屬性。
實例
用chattr命令防止系統中某個關鍵文件被修改:
chattr +i /etc/fstab
然后試一下rm、mv、rename等命令操作于該文件,都是得到Operation not permitted的結果。
讓某個文件只能往里面追加內容,不能刪除,一些日志文件適用于這種操作:
chattr +a /data1/user_act.log
tac? ?????用于將文件已行為單位的反序輸出,即第一行最后顯示,最后一行先顯示
選項
-a或——append:將內容追加到文件的末尾;
-i或——ignore-interrupts:忽略中斷信號
實例
rev? ??將文件中的每行內容以字符為單位反序輸出,即第一個字符最后輸出,最后一個字符最先輸出,依次類推。
實例
[root@localhost ~]# cat iptables.bak
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
*filter
:INPUT DROP [48113:2690676]
:FORWARD accept [0:0]
:OUTPUT ACCEPT [3381959:1818595115]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Thu Dec 26 21:25:15 2013
[root@localhost ~]# rev iptables.bak
3102 51:52:12 62 ceD uhT no 5.3.1v evas-selbatpi yb detareneG #
retlif*
]6760962:31184[ PORD TUPNI:
]0:0[ TPECCA DRAWROF:
]5115958181:9591833[ TPECCA TUPTUO:
TPECCA j- ol i- TUPNI A-
TPECCA j- 22 tropd– pct m- pct p- TUPNI A-
TPECCA j- 08 tropd– pct m- pct p- TUPNI A-
TPECCA j- DEHSILBATSE,DETALER etats– etats m- TUPNI A-
TPECCA j- pmci p- TUPNI A-
TPECCA j- ol o- TUPTUO A-
TIMMOC
3102 51:52:12 62 ceD uhT no detelpmoC #
More? ? ? ? 是一個基于vi編輯器文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容,支持vi中的關鍵字定位操作。more名單中內置了若干快捷鍵,常用的有H(獲得幫助信息),Enter(向下翻滾一行),空格(向下滾動一屏),Q(退出命令)。
該命令一次顯示一屏文本,滿屏后停下來,并且在屏幕的底部出現一個提示信息,給出至今己顯示的該文件的百分比:–More–(XX%)可以用下列不同的方法對提示做出回答:
按Space鍵:顯示文本的下一屏內容。
按Enier鍵:只顯示文本的下一行內容。
按斜線符|:接著輸入一個模式,可以在文本中尋找下一個相匹配的模式。
按H鍵:顯示幫助屏,該屏上有相關的幫助信息。
按B鍵:顯示上一屏內容。
按Q鍵:退出rnore命令。
選項
-<數字>:指定每屏顯示的行數;
-d:顯示“[press space to continue,’q’ to quit.]”和“[Press ‘h’ for instructions]”;
-c:不進行滾屏操作。每次刷新這個屏幕;
-s:將多個空行壓縮成一行顯示;
-u:禁止下劃線;
+<數字>:從指定數字的行開始顯示
實例
顯示文件file的內容,但在顯示之前先清屏,并且在屏幕的最下方顯示完核的百分比。
more -dc file
顯示文件file的內容,每10行顯示一次,而且在顯示之前先清屏。
more -c -10 file
less????? 的作用與more十分相似,都可以用來瀏覽文字檔案的內容,不同的是less命令允許用戶向前或向后瀏覽文件,而more命令只能向前瀏覽。用less命令顯示文件時,用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程序,應按Q鍵
選項
-e:文件內容顯示完畢后,自動退出;
-f:強制顯示文件;
-g:不加亮顯示搜索到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度;
-l:搜索時忽略大小寫的差異;
-N:每一行行首顯示行號;
-s:將連續多個空行壓縮成一行顯示;
-S:在單行顯示較長的內容,而不換行顯示;
-x<數字>:將TAB字符顯示為指定個數的空格字符。
Head????? 命令用于顯示文件的開頭的內容。在默認情況下,head命令顯示文件的頭10行內容。
選項
-n<數字>:指定顯示頭部內容的行數;
-c<字符數>:指定顯示頭部內容的字符數;
-v:總是顯示文件名的頭信息;
-q:不顯示文件名的頭信息。
tail?????? 命令用于輸入文件中的尾部內容。tail命令默認在屏幕上顯示指定文件的末尾10行。如果給定的文件不止一個,則在顯示的每個文件前面加一個文件名標題。如果沒有指定文件或者文件名為“-”,則讀取標準輸入。
選項
–retry:即是在tail命令啟動時,文件不可訪問或者文件稍后變得不可訪問,都始終嘗試打開文件。使用此選項時需要與選項“——follow=name”連用;
-c<N>或——bytes=<N>:輸出文件尾部的N(N為整數)個字節內容;
-f<name/descriptor>或;–follow<nameldescript>:顯示文件最新追加的內容?!皀ame”表示以文件名的方式監視文件的變化?!?f”與“-fdescriptor”等效;
-F:與選項“-follow=name”和“–retry”連用時功能相同;
-n<N>或——line=<N>:輸出文件的尾部N(N位數字)行內容。
–pid=<進程號>:與“-f”選項連用,當指定的進程號的進程終止后,自動退出tail命令;
-q或——quiet或——silent:當有多個文件參數時,不輸出各個文件名;
-s<秒數>或——sleep-interal=<秒數>:與“-f”選項連用,指定監視文件變化時間隔的秒數;
-v或——verbose:當有多個文件參數時,總是輸出各個文件名;
–help:顯示指令的幫助信息;
–version:顯示指令的版本信息。
實例
ail file (顯示文件file的最后10行)
tail +20 file (顯示文件file的內容,從第20行至文件末尾)
tail -c 10 file (顯示文件file的最后10個字符)
cut??? 命令用來顯示行中的指定部分,刪除文件中指定字段。cut經常用來顯示文件的內容,類似于下的type命令。
選項
-b:僅顯示行中指定直接范圍的內容;
-c:僅顯示行中指定范圍的字符;
-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;
-n:與“-b”選項連用,不分割多字節字符;
–complement:補足被選擇的字節、字符或字段;
–out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
–help:顯示指令的幫助信息;
–version:顯示指令的版本信息。
實例
例如有一個學生報表信息,包含No、Name、Mark、Percent:
[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
使用 -f 選項提取指定字段:
[root@localhost text]# cut -f 1 test.txt
No
01
02
03
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68
–complement 選項提取指定字段之外的列(打印除了第二列之外的列):
[root@localhost text]# cut -f2 –complement test.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
使用 -d 選項指定字段分隔符:
[root@localhost text]# cat test2.txt
No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98
[root@localhost text]# cut -f2 -d”;” test2.txt
Name
tom
jack
alex
指定字段的字符或者字節范圍
cut命令可以將一串字符作為列來顯示,字符字段的記法:
N-:從第N個字節、字符、字段到結尾;
N-M:從第N個字節、字符、字段到第M個(包括M在內)字節、字符、字段;
-M:從第1個字節、字符、字段到第M個(包括M在內)字節、字符、字段。
上面是記法,結合下面選項將摸個范圍的字節、字符指定為字段:
-b 表示字節;
-c 表示字符;
-f 表示定義字段。
示例
[root@localhost text]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
打印第1個到第3個字符:
[root@localhost text]# cut -c1-3 test.txt
abc
abc
abc
abc
abc
打印前2個字符:
[root@localhost text]# cut -c-2 test.txt
ab
ab
ab
ab
ab
打印從第5個字符開始到結尾:
[root@localhost text]# cut -c5- test.txt
efghijklmnopqrstuvwxyz
paste??? 命令用于將多個文件按照列隊列進行合并
選項
-d<間隔字符>或–delimiters=<間隔字符>:用指定的間隔字符取代跳格字符;
-s或——serial串列進行而非平行處理。
Wc???? ?命令用來計算數字。利用wc指令我們可以計算文件的Byte數、字數或是列數,若不指定文件名稱,或是所給予的文件名為“-”,則wc指令會從標準輸入設備讀取數據。
選項
-c或–bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數
Sort????? 命令是在Linux里非常有用,它將文件進行排序,并將排序結果標準輸出。sort命令既可以從特定的文件,也可以從stdin中獲取輸入
選項
-b:忽略每行前面開始出的空格字符;
-c:檢查文件是否已經按照順序排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其他的字符;
-f:排序時,將小寫字母視為大寫字母;
-i:排序時,除了040至176之間的ASCII字符外,忽略其他的字符;
-m:將幾個排序號的文件進行合并;
-M:將前面3個字母依照月份的縮寫進行排序;
-n:依照數值的大小排序;
-o<輸出文件>:將排序后的結果存入制定的文件;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;
+<起始欄位>-<結束欄位>:以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
實例
sort將文件/文本的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。
[root@mail text]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@mail text]# sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
忽略相同行使用-u選項或者uniq:
[root@mail text]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@mail text]# sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
或者
[root@mail text]# uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
sort的-n、-r、-k、-t選項的使用:
[root@mail text]# cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1
#將BB列按照數字從小到大順序排列:
[root@mail text]# sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1
#將CC列數字從大到小順序排列:
[root@mail text]# sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC
# -n是按照數字大小排序,-r是以相反順序,-k是指定需要愛排序的欄位,-t指定欄位分隔符為冒號
-k選項的具體語法格式:
-k選項的語法格式:
FStart.CStart Modifie,FEnd.CEnd Modifier
——-Start——–,——-End——–
FStart.CStart 選項? ,? FEnd.CEnd 選項
這個語法格式可以被其中的逗號,分為兩大部分,Start部分和End部分。Start部分也由三部分組成,其中的Modifier部分就是我們之前說過的類似n和r的選項部分。我們重點說說Start部分的FStart和C.Start。C.Start也是可以省略的,省略的話就表示從本域的開頭部分開始。FStart.CStart,其中FStart就是表示使用的域,而CStart則表示在FStart域中從第幾個字符開始算“排序首字符”。同理,在End部分中,你可以設定FEnd.CEnd,如果你省略.CEnd,則表示結尾到“域尾”,即本域的最后一個字符。或者,如果你將CEnd設定為0(零),也是表示結尾到“域尾”。
從公司英文名稱的第二個字母開始進行排序:
$ sort -t ‘ ‘ -k 1.2 facebook.txt
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
使用了-k 1.2,表示對第一個域的第二個字符開始到本域的最后一個字符為止的字符串進行排序。你會發現baidu因為第二個字母是a而名列榜首。sohu和 google第二個字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。guge只能屈居第四了。
只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序:
$ sort -t ‘ ‘ -k 1.2,1.2 -nrk 3,3 facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
由于只對第二個字母進行排序,所以我們使用了-k 1.2,1.2的表示方式,表示我們“只”對第二個字母進行排序。(如果你問“我使用-k 1.2怎么不行?”,當然不行,因為你省略了End部分,這就意味著你將對從第二個字母起到本域最后一個字符為止的字符串進行排序)。對于員工工資進行排 序,我們也使用了-k 3,3,這是最準確的表述,表示我們“只”對本域進行排序,因為如果你省略了后面的3,就變成了我們“對第3個域開始到最后一個域位置的內容進行排序” 了
Uniq??????? 命令用于報告或忽略文件中的重復行,一般與sort命令結合使用。
選項
-c或——count:在每列旁邊顯示該行重復出現的次數;
-d或–repeated:僅顯示重復出現的行列;
-f<欄位>或–skip-fields=<欄位>:忽略比較指定的欄位;
-s<字符位置>或–skip-chars=<字符位置>:忽略比較指定的字符;
-u或——unique:僅顯示出一次的行列;
-w<字符位置>或–check-chars=<字符位置>:指定要比較的字符。
實例
刪除重復行:
uniq file.txt
sort file.txt | uniq
sort -u file.txt
只顯示單一行:
uniq -u file.txt
sort file.txt | uniq -u
統計各行在文件中出現的次數:
sort file.txt | uniq -c
在文件中找出重復的行:
sort file.txt | uniq –d
diff?????? 命令在最簡單的情況下,比較給定的兩個文件的不同。如果使用“-”代替“文件”參數,則要比較的內容將來自標準輸入。diff命令是以逐行的方式,比較文本文件的異同處。如果該命令指定進行目錄的比較,則將會比較該目錄中具有相同文件名的文件,而不會對其子目錄文件進行任何比較操作。
選項
-<行數>:指定要顯示多少行的文本。此參數必須與-c或-u參數一并使用;
-a或——text:diff預設只會逐行比較文本文件;
-b或–ignore-space-change:不檢查空格字符的不同;
-B或–ignore-blank-lines:不檢查空白行;
-c:顯示全部內容,并標出不同之處;
-C<行數>或–context<行數>:與執行“-c-<行數>”指令相同;
-d或——minimal:使用不同的演算法,以小的單位來做比較;
-D<巨集名稱>或ifdef<巨集名稱>:此參數的輸出格式可用于前置處理器巨集;
-e或——ed:此參數的輸出格式可用于ed的script文件;
-f或-forward-ed:輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處;
-H或–speed-large-files:比較大文件時,可加快速度;
-l<字符或字符串>或–ignore-matching-lines<字符或字符串>:若兩個文件在某幾行有所不同,而之際航同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異;
-i或–ignore-case:不檢查大小寫的不同;
-l或——paginate:將結果交由pr程序來分頁;
-n或——rcs:將比較結果以RCS的格式來顯示;
-N或–new-file:在比較目錄時,若文件A僅出現在某個目錄中,預設會顯示:Only in目錄,文件A 若使用-N參數,則diff會將文件A 與一個空白的文件比較;
-p:若比較的文件為C語言的程序碼文件時,顯示差異所在的函數名稱;
-P或–unidirectional-new-file:與-N類似,但只有當第二個目錄包含了第一個目錄所沒有的文件時,才會將這個文件與空白的文件做比較;
-q或–brief:僅顯示有無差異,不顯示詳細的信息;
-r或——recursive:比較子目錄中的文件;
-s或–report-identical-files:若沒有發現任何差異,仍然顯示信息;
-S<文件>或–starting-file<文件>:在比較目錄時,從指定的文件開始比較;
-t或–expand-tabs:在輸出時,將tab字符展開;
-T或–initial-tab:在每行前面加上tab字符以便對齊;
-u,-U<列數>或–unified=<列數>:以合并的方式來顯示文件內容的不同;
-v或——version:顯示版本信息;
-w或–ignore-all-space:忽略全部的空格字符;
-W<寬度>或–width<寬度>:在使用-y參數時,指定欄寬;
-x<文件名或目錄>或–exclude<文件名或目錄>:不比較選項中所指定的文件或目錄;
-X<文件>或–exclude-from<文件>;您可以將文件或目錄類型存成文本文件,然后在=<文件>中指定此文本文件;
-y或–side-by-side:以并列的方式顯示文件的異同之處;
–help:顯示幫助;
–left-column:在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容;
–suppress-common-lines:在使用-y參數時,僅顯示不同之處。
實例
將目錄/usr/li下的文件”test.txt”與當前目錄下的文件”test.txt”進行比較,輸入如下命令:
diff /usr/li test.txt???? #使用diff指令對文件進行比較
上面的命令執行后,會將比較后的不同之處以指定的形式列出,如下所示:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
其中,字母”a”、”d”、”c”分別表示添加、刪除及修改操作。而”n1″、”n2″表示在文件1中的行號,”n3″、”n4″表示在文件2中的行號。
注意:以上說明指定了兩個文件中不同處的行號及其相應的操作。在輸出形式中,每一行后面將跟隨受到影響的若干行。其中,以<開始的行屬于文件1,以>開始的行屬于文件。
Patch??? 命令被用于為開放源代碼軟件安裝補丁程序。讓用戶利用設置修補文件的方式,修改,更新原始文件。如果一次僅修改一個文件,可直接在命令列中下達指令依序執行。如果配合修補文件的方式則能一次修補大批文件,這也是Linux系統核心的升級方法之一。
選項
-b或–backup:備份每一個原始文件;
-B<備份字首字符串>或–prefix=<備份字首字符串>:設置文件備份時,附加在文件名稱前面的字首字符串,該字符串可以是路徑名稱;
-c或–context:把修補數據解譯成關聯性的差異;
-d<工作目錄>或–directory=<工作目錄>:設置工作目錄;
-D<標示符號>或–ifdef=<標示符號>:用指定的符號把改變的地方標示出來;
-e或–ed:把修補數據解譯成ed指令可用的敘述文件;
-E或–remove-empty-files:若修補過后輸出的文件其內容是一片空白,則移除該文件;
-f或–force:此參數的效果和指定”-t”參數類似,但會假設修補數據的版本為新版本;
-F<監別列數>或–fuzz<監別列數>:設置監別列數的最大值;
-g<控制數值>或–get=<控制數值>:設置以RSC或SCCS控制修補作業;
-i<修補文件>或–input=<修補文件>:讀取指定的修補問家你;
-l或–ignore-whitespace:忽略修補數據與輸入數據的跳格,空格字符;
-n或–normal:把修補數據解譯成一般性的差異;
-N或–forward:忽略修補的數據較原始文件的版本更舊,或該版本的修補數據已使 用過;
-o<輸出文件>或–output=<輸出文件>:設置輸出文件的名稱,修補過的文件會以該名稱存放;
-p<剝離層級>或–strip=<剝離層級>:設置欲剝離幾層路徑名稱;
-f<拒絕文件>或–reject-file=<拒絕文件>:設置保存拒絕修補相關信息的文件名稱,預設的文件名稱為.rej;
-R或–reverse:假設修補數據是由新舊文件交換位置而產生;
-s或–quiet或–silent:不顯示指令執行過程,除非發生錯誤;
-t或–batch:自動略過錯誤,不詢問任何問題;
-T或–set-time:此參數的效果和指定”-Z”參數類似,但以本地時間為主;
-u或–unified:把修補數據解譯成一致化的差異;
-v或–version:顯示版本信息;
-V<備份方式>或–version-control=<備份方式>:用”-b”參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,這個字符串不僅可用”-z”參數變更,當使用”-V”參數指定不同備份方式時,也會產生不同字尾的備份字符串;
-Y<備份字首字符串>或–basename-prefix=–<備份字首字符串>:設置文件備份時,附加在文件基本名稱開頭的字首字符串;
-z<備份字尾字符串>或–suffix=<備份字尾字符串>:此參數的效果和指定”-B”參數類似,差別在于修補作業使用的路徑與文件名若為src/linux/fs/super.c,加上”backup/”字符串后,文件super.c會備份于/src/linux/fs/backup目錄里;
-Z或–set-utc:把修補過的文件更改,存取時間設為UTC;
–backup-if-mismatch:在修補數據不完全吻合,且沒有刻意指定要備份文件時,才備份文件;
–binary:以二進制模式讀寫數據,而不通過標準輸出設備;
–help:在線幫助;
–nobackup-if-mismatch:在修補數據不完全吻合,且沒有刻意指定要備份文件時,不要備份文件;
–verbose:詳細顯示指令的執行過程。
Linux中文本處理三劍客
grep:文本過濾(模式:pattern)工具
grep, egrep, fgrep(不支持正則表達式搜索) ?
sed:stream editor,文本編輯工具 ?
awk:Linux上的實現gawk,文本報告生成器
grep??? 全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。
選項
-a 不要忽略二進制數據。
-A<顯示列數> 除了顯示符合范本樣式的那一行之外,并顯示該行之后的內容。
-b 在顯示符合范本樣式的那一行之外,并顯示該行之前的內容。
-c 計算符合范本樣式的列數。
-C<顯示列數>或-<顯示列數>? 除了顯示符合范本樣式的那一列之外,并顯示該列之前后的內容。
-d<進行動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息并停止動作。
-e<范本樣式> 指定字符串作為查找文件內容的范本樣式。
-E 將范本樣式為延伸的普通表示法來使用,意味著使用能使用擴展正則表達式。
-f<范本文件> 指定范本文件,其內容有一個或多個范本樣式,讓grep查找符合范本條件的文件內容,格式為每一列的范本樣式。
-F 將范本樣式視為固定字符串的列表。
-G 將范本樣式視為普通的表示法來使用。
-h 在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名稱。
-H 在顯示符合范本樣式的那一列之前,標示該列的文件名稱。
-i 忽略字符大小寫的差別。
-l 列出文件內容符合指定的范本樣式的文件名稱。
-L 列出文件內容不符合指定的范本樣式的文件名稱。
-n 在顯示符合范本樣式的那一列之前,標示出該列的編號。
-q 不顯示任何信息。
-R/-r 此參數的效果和指定“-d recurse”參數相同。
-s 不顯示錯誤信息。
-v 反轉查找。
-w 只顯示全字符合的列。
-x 只顯示全列符合的列。
-y 此參數效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。
實例
文件中搜索一個單詞,命令會返回一個包含“match_pattern”的文本行:
grep match_pattern file_name
grep “match_pattern” file_name
在多個文件中查找:
grep “match_pattern” file_1 file_2 file_3 …
輸出除之外的所有行 -v 選項:
grep -v “match_pattern” file_name
標記匹配顏色 –color=auto 選項:
grep “match_pattern” file_name –color=auto
使用正則表達式 -E 選項:
grep -E “[1-9]+”
或
egrep “[1-9]+”
只輸出文件中匹配到的部分 -o 選項:
echo this is a test line. | grep -o -E “[a-z]+\.”
line.
echo this is a test line. | egrep -o “[a-z]+\.”
line.
統計文件或者文本中包含匹配字符串的行數 -c 選項:
grep -c “text” file_name
輸出包含匹配字符串的行數 -n 選項:
grep “text” -n file_name
或
cat file_name | grep “text” -n
#多個文件
grep “text” -n file_1 file_2
打印樣式匹配所位于的字符或字節偏移:
echo gun is not unix | grep -b -o “not”
7:not
#一行中字符串的字符便宜是從該行的第一個字符開始計算,起始值為0。選項 -b -o 一般總是配合使用。
搜索多個文件并查找匹配文本在哪些文件中:
grep -l “text” file1 file2 file3…
grep遞歸搜索文件
在多級目錄中對文本進行遞歸搜索:
grep “text” . -r -n
# .表示當前目錄。
忽略匹配樣式中的字符大小寫:
echo “hello world” | grep -i “HELLO”
hello
選項 -e 制動多個匹配樣式:
echo this is a text line | grep -e “is” -e “line” -o
is
line
#也可以使用-f選項來匹配多個樣式,在樣式文件中逐行寫出需要匹配的字符。
cat patfile
aaa
bbb
echo aaa bbb ccc ddd eee | grep -f patfile -o
在grep搜索結果中包括或者排除指定文件:
#只在目錄中所有的.php和.html文件中遞歸搜索字符”main()”
grep “main()” . -r –include *.{php,html}
#在搜索結果中排除所有README文件
grep “main()” . -r –exclude “README”
#在搜索結果中排除filelist文件列表里的文件
grep “main()” . -r –exclude-from filelist
使用0值字節后綴的grep與xargs:
#測試文件:
echo “aaa” > file1
echo “bbb” > file2
echo “aaa” > file3
grep “aaa” file* -lZ | xargs -0 rm
#執行后會刪除file1和file3,grep輸出用-Z選項來指定以0值字節作為終結符文件名(\0),xargs
-0 讀取輸入并用0值字節終結符分隔文件名,然后刪除匹配文件,-Z通常和-l結合使用。grep靜默輸出:
grep -q “test” filename
#不會輸出任何信息,如果命令運行成功返回0,失敗則返回非0值。一般用于條件測試。
打印出匹配文本之前或者之后的行:
#顯示匹配某個結果之后的3行,使用 -A 選項:
seq 10 | grep “5” -A 3
5
6
7
8
#顯示匹配某個結果之前的3行,使用 -B 選項:
seq 10 | grep “5” -B 3
2
3
4
5
#顯示匹配某個結果的前三行和后三行,使用 -C 選項:
seq 10 | grep “5” -C 3
2
3
4
5
6
7
8
#如果匹配結果有多個,會用“–”作為各匹配結果之間的分隔符:
echo -e “a\nb\nc\na\nb\nc” | grep a -A 1
a
b
—
a
b
基本正則表達式元字符
字符匹配:
.??? 匹配任意單個字符
[]?? 匹配指定范圍內的任意單個字符
[^]? 匹配指定范圍外的任意單個字符
[: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
Vim???? 文本編輯器
擊鍵行為是依賴于vim 的“模式” ?
三種主要模式: ?
命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本 ?
插入(Insert)或編輯模式: 修改文本 ?擴展命令(extended command )模式: 保存,退出等 ?
Esc鍵 退出當前模式 ?
Esc鍵 Esc鍵 總是返回到命令模式
vim鍵盤圖
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95547