ctrl + n
是自動補齊linux
ctrl + p
是往上選擇git
ctrl + f
是下一屏幕正則表達式
ctrl + b
是上一屏幕shell
w
:是移動一個單詞數據庫
b
:是向前一個單詞express
d^
:當前行中,刪至行首apache
d$
:當前行中,刪至行尾編程
y^
:當前到行頭的內容vim
y$
:複製當前到行尾的內容緩存
d1G
:刪除光標所在行,到第一行的全部數據
dG
::刪除光標所在行下一行,到最後一行的全部數據
vim /etc/vimrc
#打開 vimrc
文件,將如下三行內容添加到文件中
set ts=4 set expandtab set autoindent
du -ach *
#這個能看到當前目錄下的全部文件佔用磁盤大小和總大小
du -sh
#查看當前目錄總大小
du -sh *
#查看全部子目錄大小
lsof | grep delete
#若是懷疑刪掉的數據還在佔用磁盤空間試試這個,查看del的進程號
kill -9 pid
#結束掉進程就能釋放磁盤空間了
for i in $(lsof | grep delete | awk '{print $2}'); do kill -9 $i ;done
# 循環刪除(慎重使用)
du -h --max-depth=1 /
# 這個意思是列出 "/"
目錄下全部的文件目錄的大小(不包含隱藏文件),級別爲1級。
# du -h --max-depth=2 /
# 這個意思是列出 "/home"
目錄下全部的文件目錄的大小(不包含隱藏文件),級別爲2級。
cp a.txt{,.back}
# 快速備份一個文件
ps aux --sort -pcpu | more
#按cpu降序排序 或 top -》 P
ps aux --sort -rss | more
#按內存降序排序 或 top -》 M
ps -eo cmd,pid,lstart,etime | grep httpd
# 查看啓動時間和已經存在時間
參數說明:
lstart
# 啓動時間
etime
# 顯示了自從該進程啓動以來,經歷過的時間
ps:當你修改完文件後,發現你是普通用戶並無保存的權限,可是修改了好久了,是否是很蛋疼? 退出仍是一點點複製?告訴你輕鬆搞定的方法 ^.^(-)^.^ 前提是你要有sudo的權限。
:w !sudo tee %
而後輸入你普通用戶的密碼(前提是你有sudo權限)
[sudo] password for test:普通用戶的密碼
W12: Warning: File 「zabbix_agentd.conf」 has changed and the buffer was changed in Vim as well
See 「:help W12」 for more info.
Press ENTER or type command to continue 直接回車便可
他會告訴你沒有修改權限,你直接:q!
退出便可。
退出後用cat 或者是 vim
命令查看,你會發現你已經修改了文件的內容。
基礎命令:
Date[option] …… [+Format]:顯示
Format:格式符號
Date[MMDDhhmm[[cc]yy].[ss]
MM:月份 DD:幾號 hh:小時 mm:分鐘 yy:兩位年份 ccyy:四位年份 .ss:秒鐘
Linux的兩種時鐘:
系統時鐘:有linux內核經過cpu的工做頻率進行的計時
硬件時鐘:
hwclock:顯示硬件時鐘
-s,–hctosys:把硬件時鐘寫入到系統時鐘
-w,–systohc:把系統時鐘寫入硬件時鐘
目錄相關的命令:
當前目錄或工做目錄
主目錄,家目錄:HOME
root:/root
普通用戶:/home/USERNAME
Cd:
Cd或cd:回到當前用戶主目錄
CdUSERNAME:切換至指定用戶的主目錄
Cd-:在上一個目錄和當前目錄之間來回切換
.:當前目錄
..:上一級目錄
相關的環境變量:
PWD:保存了當前目錄路徑
OLDPWD:上一次所在目錄路徑
Pwd:顯示當前目錄
Ls(list):顯示指定路徑下的文件列表
Ls[option]…… [DIR]……
-a,–all:顯示全部文件,包括隱藏文件
-l:長格式顯示
-h,–human-readable:單位換算(人類可讀的)
-d:顯示目錄自身的相關屬性,一般與-l一塊兒使用
-r:以逆序顯示
-R:遞歸顯示
-rw-r–r– 1 root root 44800 Aug 14 14:12 install.log
最左一位:文件類型(-,d,l,b,c,p,s)
後面9位:權限位(perm)
數字1:文件被硬連接的次數
左root:文件的owner
右root:文件的group
44800:文件的Size
Aug 14 14:12:文件最近一次唄修改的時間
Stat /Path/To/SomeFile:獲取指定文件的元數據
文件查看命令:Cat,Tac
Cat[option]……[File]……
-n:顯示行編號
-E:顯示行結束符$
文件內容類型查看命令:File
File Path/to/SomeFile :查看文件的類型
回顯命令:echo
-n:禁止自動添加換行符
-e:容許使用轉義字符
\n:換行
\t:製表符(Table鍵)
Echo 「$Var_NAME」:變量會替換,雙引號表示弱引用
Echo ‘$Var_NAME’:變量不會替換,單引號表示強引用
Which:顯示命令對應的程序文件路徑
Which [option] COMMAND
–skip-alias:跳過顯示別名
Whatis:
使用mkwhatis命令可將當前手冊上全部幫助手冊與之對應的關鍵字建立一個數據庫
系統管理類命令:
關機:
Halt,poweroff,shutdown,init 0
重啓:
Reboot,shutdown,init 6
Halt,poweroff,reboot
-f:強制,不調用shutdown
-p:切斷電源
Shutdown[option]…… Time [Message]
-r:reboot
-h:halt
-c:cancel
TIME:
Now:馬上
+m:例如:+3 ,3分鐘後
hh:mm:絕對時間表示,指明具體時間
跟用戶登陸相關:
Who:顯示目前登入系統的用戶信息。
Whoami:顯示自身的用戶名稱。
W:顯示目前登入系統的用戶信息。
Linux的文件系統:
根文件系統(rootfs):root filesystem
LSB,FHS(Filesystem Heriache Standard)
/boot:引導文件存放目錄,內核文件(vmlinuz),引導加載器(bootloader,grub)都存放於此目錄
/bin:供全部用戶使用的基本命令,不能關聯至獨立分區,OS啓動即會用到的程序
/sbin:管理類的基本命令,不能關聯至獨立分區,OS啓動即會用到的程序
/lib:基本共享庫文件,以及內核模塊文件(lib/modules)
/lib64:專用於X86_64系統上的輔助庫文件存放位置
/etc:配置文件目錄(純文本文件)
/home/USERNAME:普通用戶家目錄
/root:管理員家目錄
/media:便攜式移動設備掛載點
/mnt:臨時文件掛載點
/dev:設備文件及特殊文件存放位置:
b: block device :可隨機訪問
c:character device:線性訪問
/opt:第三方應用程序的安裝位置
/srv:系統上運行的服務用到的數據
/tmp:臨時文件存放位置
/usr:universal shared read-only data
Bin,sbin,lib,lib64
Include:C程序的頭文件(header files)
Share:結構獨立的數據:如doc,man等等
Local:第三方應用程序的安裝位置
Bin,sbin,lib,lib64,etc,share
/var:variable打他files
Cache:應用程序緩存數據目錄
Lib:應用程序狀態信息數據
Local:專用於爲/usr/local下的應用程序存儲可變的數據
Lock:鎖文件
Log:日誌目錄及文件
Opt:專用於爲/opt下的應用程序存儲可變數據
Run:運行中的進程相關的數據,一般用於存儲進程的pid文件
Spool:應用程序數據池
Tmp:保存系統兩次重啓之間產生的臨時數據
/proc:用於輸出的內核與進程信息相關的虛擬文件系統
/sys:用於輸出當前系統上硬件設備相關信息的迅疾文件系統
/selinux:security enhanced linux ,selinux相關的安全策略等
Linux上的應用程序的組成部分:
二進制程序:/bin ,/sbin ,/usr/bin ,/usr/sbin ,/usr/local/bin ,/usr/local/sbin/
庫文件:/lib ,/lib64 ,/usr/lib ,/usr/lib64 , /usr/local/lib, /usr/local/lib64
配置文件:/etc , /etc/DIRECTORY ,/usr/local/etc
幫助文件:/usr/share/man ,/usr/share/doc ,/usr/local/share/man , /usr/local/share/doc
Linux下的文件類型:
-(f):普通文件
d:目錄文件
b:塊設備
c:字符設備
l:符號連接設備
p:管道文件
s:套接字文件:socket
bash的基礎特性:
(1):命令歷史(history)
環境變量:
HISTSIZE:命令歷史記錄的條數
HISEFILE:~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
History
-d offset :刪除某條
-c:清空歷史
#:顯示歷史中最近的#條命令 -a:手動追加當前會話緩衝區的命令至歷史文件中
調用歷史中的命令:
!#:重複執行第#條命令
!!:重複執行上一條
!string:執行以string開頭的命令
調用上一條命令的追後一個參數: !$
控制命令歷史的記錄方式:
環境變量:HISTCONTROL
Ignoredups:忽略重複的命令(連續且相同方爲重複)
Ignorespace:忽略全部以空白字符開頭的命令
Ignoreboth:ignoredups,ignorespace
修改環境變量值得方式:export 變量名=「值」
(2)命令補全
直接補全:Tab,用戶給定的字符字符串只有一條惟一對應的命令
(3)路徑不全
把用戶給出的字符串看成路徑開頭,並在其指定上級目錄下搜索以指定的字符串開頭的文件名
若是惟一:則直接補全
不然:再次敲Tab鍵給出列表
目錄管理類命令:
Cd,pwd,ls,mkdir,rmdir,tree
Mkdir [options] /path/to/somewhere
-p:存在時,不報錯,且自動建立所需的各目錄
-v:顯示詳細信息
-m MODE:建立目錄時直接指定權限
Rmdir [options]……DIRECTORY
-v:顯示詳細過程
Tree:查看目錄結構
-d:只顯示目錄
-L Level:指定顯示的層級目錄
-P Pattern
(4)命令行展開
~:展開爲用戶的主目錄
~USERNAME:展開爲指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,並將其展開爲各個路徑
/tmp/{a,b}=>/tmp/a /tmp/b
/tmp/{a,b}/h=>/tmp/a/h /tmp/b/h
(5)命令的執行結果狀態
成功:0
失敗:1-255
Bash使用特殊變量$?保存最近一條命令的執行狀態結果
0:成功
1-255:失敗
程序執行有兩類結果:
程序的返回值
程序的執行狀態結果
文本文件查看類命令:
Cat,tac,more,less,tail,head
Head [option]……[FILE]……
-c #:獲取前#字節
-n #:獲取前#行
-#:獲取指定前#行
Tail [option]……[FILE]……
-c #:獲取後#字節
-n #:獲取後#行
#:獲取後#行 -f:跟蹤顯示文件新追加的內容
文件的時間戳管理工具:Touch
三個時間戳:
Access time:訪問時間,簡寫爲atime 讀取文件內容
Modify time:修改時間,簡寫爲mtime 改變文件內容
Change time:改變時間,簡寫爲ctime 元數據發生改變
Touch命令:
Touch [option]……FILE……
-a:only atime
-m:only mtime
-t STAMP:
[[cc]yy]MMDDHHMM[.ss]
-c:若是文件不存在,則不予建立
文件管理
Cp,mv,rm
複製命令:cp
經常使用選項:
-i:交互式
-R,-r:遞歸複製目錄及內部全部文件內容
-a:歸檔複製(保留文件的全部原屬性)至關於-dR –preserv=all
-d:拷貝時,保留連接
· -f:強制複製
-p:–preserve=mode,ownership,timestamps
-v:顯示詳細信息
Mv:move移動文件
經常使用選項:
-i:交互式
-f:強制移動
Rm:remove刪除
Rm[option]……FILE……
-i:交互式
-f:強制刪除
-r:遞歸
Bash的基本特性
一、 命令別名(alias)
經過alias命令實現
(1) alias
顯示當前shell進程全部可有的命令別名
(2) alias NAME=‘VALUE’
定義別名NAME,其至關於執行命令「VALUE」
注意:在命令行中定義的別名,僅對當前shell進程有效,若是想永遠有效,要定義在配置文件中:
僅對當前用戶:~/.bashrc
對全部用戶:/etc/bashrc
從新讀取配置文件(bash進程):
Source /path/to/config_ file
撤銷別名:unalias
Unalias [-a] name [name……]
注意:若是別名與原命令名稱相同,執行原命令,可以使用「\command」
二、 glob(globbing)
bash中用於實現文件名的「通配」
通配符:,?,[ ]
(1): :任意長度的任意字符
(2):?:任意單個字符
(3):[] :匹配指定範圍內的任意單個字符
[a-z]:不區分大小寫
[A-Z]:大寫字母
(4):[^]:匹配指定範圍外的任意單個字符
專用字符集合:
{:digit:}:任意數字
{:lower:}:任意小寫字母
[:upper:]:任意大寫字母
{:alpha:}:任意大小寫字母
[:alnum:]:任意數字和字母
[:space:]:空白字符
[:punct:]:標點符號
三、 bash的快捷鍵
Ctrl+l:清屏,至關於Clear
Ctrl+a:跳轉至命令開始處
Ctrl+e:跳轉至命令結尾處
Ctrl+c:取消命令執行
Ctrl+u:刪除命令行首至光標所在處的全部內容
Ctrl+k:刪除光標所在處至命令行尾的全部內容
四、 bash的輸入(I/O)重定向及管道
程序:指令+數據
讀入數據:Input
輸出數據:Output
標準輸入:keyboard,0
標準輸出:monitor,1
標準錯誤輸出:monitor,2
打開的文件都有一個fd:File descriptor (文件描述符)
I/O重定向:改變標準位置
輸出重定向:Command > new_pos
Command >> new_pos
>:覆蓋重定向:目標源文件內容會被清除
>>:追加劇定向:新內容會追加至目標文件尾部
#set – c:禁止對已有文件進行覆蓋
強制覆蓋: > 1
#set + c:運行對已有文件進行覆蓋
2 > :覆蓋重定向錯誤的輸出流數據
2>> :追加劇定向錯誤的輸出流數據
標準輸出和錯誤輸出定向至不一樣位置
Command > /path/to/file.out 2> /path/to/err.out
合併標準輸出和錯誤輸出爲同一個數據流重定向:
&> &>>
Tr命令:轉換或刪除字符
Tr[option]……set1 [set2]
-d:刪除指定字符
HERE Doucmentation:<<
#cat <<EOF #cat > /path/to/somefile <<EOF
管道:
COMMAND1 | COMMAND2 |COMMAND3 |………
注意:最後一個命令會在當前shell進程的子進程中進行執行的
Tee命令:
兩路輸出:屏幕、指定文件
Tee [oprion]……[file]……
文件處理工具:wc,cut,sort,uniq
Wc [option]…[FILE]…
-l:統計文件行數
-w:統計文件單詞數
-c:統計文件字節數
Cut命令:
Cut [option]……[FILE]……
-d DELIMETER:指明分隔符
-f FILEDS
#:第#個字段 #,#[ ,#]:離散的多個字段 #-#:連續的多個多個字段 --output-delimeter=string
Sort命令:
Sort[option]……[FILE]……
-f:忽略字符大小寫
-r:逆序排序
-t DELRMITER:字段分隔符
-k # :以指定字段爲標準排序
-n:以數值大小進行排序
-u:uniq,去重顯示
Uniq命令:連續且徹底相同方爲重複
Uniq [option]……[file]……
-c:顯示每行重複出現的次數
-u:僅顯示未曾重複的行
-d:僅顯示重複過的行
用戶和組管理
資源分派:
Authentication:認證
Authorization:受權
Accouting:審計
Linux用戶:Username /UID
管理員:root,0
普通用戶:1-65535
系統用戶:1-499
登陸用戶:500+
Linux組:Groupname /GID
管理員組:root,0
普通組:
系統組:1-499
普通組:500+
Linux安全上下文:
運行中的程序:進程(process)
以進程發起者的身份運行
進程所可以訪問的全部資源的權限取決於進程的發起者的身份
Linux組的類別:
用戶的基本組(主組):組名同用戶名且僅包含一個用:私有組
Linux用戶和組相關的配置文件:
/etc/passwd:用戶及其屬性信息(如:名稱,UID,基本ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
/etc/passwd:
Name:passwd:uid:gid:gecos:directory:shell
用戶名:密碼:UID:GID:註釋:主目錄:默認shell
/etc/group:
Group_name:password:`GID:user_list
組名:組密碼:GID:以當前組爲附加組的用戶列表(以逗號分隔)
/etc/shadow:
用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:密碼的最大使用期限:密碼的警告時間:密碼禁用期:帳戶過時日期:保留字段
加密機制:明文<………>密文
Md5,sha1,sha224,sha384,sha512,sha256
密碼的複雜性策略:
一、 使用數字、大寫字母、小寫字母及特殊字符中至少3種
二、 密碼足夠長
三、 不要使用易猜想密碼
四、 按期更換:不要使用最近曾經使用過的密碼
用戶和組相關的管理命令:
用戶建立:useradd
Useradd [options] Login
-u UID:[UID_MIN,UID_MAX]定義在/etc/ login.defs
-g GID:指明用戶所屬的基本組,可爲組名,也可爲GID
-c 「comment」:用戶的註釋信息
-d /path/to/home_dir:以指定的路徑爲用戶家目錄
-s SHELL:指明用戶默認shell程序,可用列表在/etc/shells文件中
-G group1[group2,………]:爲用戶爲用戶指明附加組
-r:建立系統用戶
默認值設定: /etc/default/useradd文件中
組建立:groupadd
Groupadd [option]……groupname
-g GID:指明GID號:[GID_MIN,GID_MAX]
-r 建立系統組
查看用戶相關的ID信息:id
Id [option]……[user]
-u :查看UID
-g :查看GID
-G :查看Groups
-n :查看Name
切換用戶或以其餘用戶身份執行命令:su
Su [options……] [-] [user[args……]]
切換用戶的方式:
Su username:非登陸式切換,即不會讀取目標用戶的配置文件
Su – username:登陸式切換,會讀取目標用戶的配置文件,徹底切換
注意:root su切換至其餘用戶不須要輸入密碼
用戶屬性修改:usermod
Usermod [option] Login
-u UID:新UID
-g GID:新基本組
-G Group1,Group2……:新附加組,原來的附加組會被覆蓋,若保留原有附加組,最佳新附加組須要使用-a
-s shell:新的默認shell
-c comment
:新的註釋信息
-d HOME:新的家目錄,原有家目錄中的文件不會同時移動至新的家目錄,若須要移動,使用-m選項,即:-m -d /path/to/directory
-l login_name:新的名字
-L:lock指定用戶
-U:unlock指定用戶
-e YYYY-MM-DD: 指明用戶過時日期
-f:INACTIVE:設定非活動期限
給用戶添加密碼:passwd
Passwd username:修改指定用戶密碼,管理員纔有權限
Paddwd:修改密碼
經常使用選項:
-l:鎖定用戶
-u:解鎖用戶
-n mindays:指定最短使用期限
-x maxdays:指定最大的使用期限
-w wandays:指定提早幾天警告修改密碼
-i inactivedays:非活動期限
–stdin:從標準輸入接收用戶密碼
Eg:echo 「 password 「 | passwd –stdin username
刪除用戶:userdel
Userdel [option]……Login
-r:刪除用戶家目錄
組屬性修改:groupmod
Groupmod [option]……group
-n group_name:新名字
-g GID:新的GID
組刪除:groupdel
Groupdel group
組密碼設置:gpasswd
Gpasswd [option] group
-a user:將user添加至指定組中
-d user:將user從其附加組中刪除
-A user1,user2……:設置有管理權限的用戶列表
Newgrp命令:臨時切換基本組
若是用戶本不屬於此組須要輸入密碼
修改用戶屬性:chage [option]……login
-d LAST_Day
-m:最小使用天數
-M:最大使用天數
-w:警告天數
其餘命令:chfn,chsh,finger
權限管理:
文件的權限主要針對三類對象進行定義:
Owner:屬主,u
Group:屬組,g
Other:其餘,o
每一個文件針對每類訪問者都定義了三種權限
R:readable
W:writable
X:excuteable
文件:
R:可以使用文件查看類工具獲取其內容
W:可修改其內容
X:能夠把純文件提請內核啓動爲一個進程。
目錄:
R :可使用ls查看此目錄中文件列表
W :可在此目錄中建立文件,也可刪除此目錄中的文件
X : 可使用ls-l查看此目錄中文件列表,可使用cd進入此目錄
修改文件權限:
Chmod [option]……OCTAL-MODE FILE……
例如: chmod 640 a.txt
-R:遞歸修改
Chmod [ OPTION] ……MODE[MODE]……FILE……
MODE:修改一類用戶的權限
U=
G=
O=
A=
Ug=
U=,g=
例如:chmod u+x a.txt
Chmod [OPTION]……–reference=RFILE FILE……
參考RFILE文件的權限,將FILE的權限修改成同RFILE
例:chmod –reference=./c.txt a.txt 把a.txt的權限修改成和c.txt同樣
修改文件的屬主和屬組:
Chown [OPTION]……[OWNER]:[GROUP] FILE……
用法:
OWNER
OWNER:GROUP
:GROUP
注意:命令中的「:」能夠用「.」代替
-R:遞歸修改
Chown [OPTION]…… - -reference=RFILE FILE……
-R:遞歸修改
修改文件的屬組:
Chgrp [OPTION]……GROUP FILE……
Chgrp [OPTION]……–REFERENCE=RFILE FILE……
-R:遞歸修改
Umask(文件或目錄建立的遮罩碼)
FILE:666-umask
注意:若是某類的用戶權限擁有執行權限則將權限+1
DIR:777-umask
Umask:查看
Umask #:設定
Bash的基礎特性(3)
一、 提供了編程環境
Shell程序:提供了編程能力,解釋執行
命令的執行方式:
計算機:運行二進制指令
編程語言:
低級:彙編
高級:C++等
過程式編程:
順序執行
循環執行
選擇執行
Shell編程:過程式、解釋執行
編程語言的基本結構:
數據存儲:變量、屬組
表達式:
語句:
Shell腳本:文本文件
#!/bin/bash
運行腳本:
一、 給予執行權限,經過具體的文件路徑指定文件執行
二、 直接運行解釋器:將腳本做爲解釋器程序的參數運行
變量:
命令的內存空間
數據存儲方式:ASCII
字符、數值、整型、浮點型
變量類型:
做用:
一、 數據存儲格式
二、 參與運算
三、 表示的數據範圍
類型:
字符
數值:
整型
浮點型
編程程序語言:
強類型:
弱類型:bash
把全部要存儲的數據通通看成字符進行,不支持浮點數
邏輯運算:
True,flase(1,0)
與運算:
1 && 1=1
1 && 0=0
0 && 1=0
0&& 0=0
或運算:
1 || 1=1
1 || 0=1
0 || 1=1
0 || 0=0
非運算:
!1=0
!0=1
異或運算:
相同爲假,不一樣爲真
Grep:
Linux上文本處理三劍客
Grep:文本過濾工具(模式,pattern);grep,egrep,fgrep
Sed:stream editor:文本編輯工具
Awk:linux上實現的gawk,文本報告生成器
Grep:global search regular expression and print out the line
做用:文本搜索工具,根據用戶用戶指定的「模式」對目標文本逐行進行匹配檢查打印匹配到的行
模式:由正則表達式字符及文本字符所編寫的過濾條件
REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示字符字面意義,而表示控制或通配的功能
分兩類:
基本正則表達式:「BRE」
擴展正則表達式:「ERE」
Grep-E,egrep
正則表達式引擎:
Grep [options] PATTERN [FILE……]
選項:
–color=auto:對匹配到的文本着色顯示
-v:顯示不能被pattern匹配到的行
-i:匹配時,忽略字符大小寫
-o:僅顯示匹配到的字符串
-q:靜默模式,不輸出任何信息
-A#:顯示匹配到的行及後面#行
-B#:顯示匹配到的行及前面#行
-C#:顯示匹配到的行及先後#行
-E:使用擴展的正則表達式
基本正則表達式元字符:
字符匹配:
. :匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的次數:
:匹配前面的字符任意次
.:任意長度的任意字符
?:匹配其前面的字符0次或1次
+:匹配其前面的字符至少一次
{m}:匹配其前面的字符m次
{m,n}:匹配其前面的字符至少m次,最多n次
{0,n}:匹配其前面的字符至多n次
{m,}:匹配其前面的字符至少每次
位置錨定:
^:行首錨定 例如:^root
$:行尾錨定 例如:root$
^PATTERN$:用模式匹配整行
^$:空行
\b或<:詞首錨定:用於單詞模式的左側
\b或>:詞尾錨定:用於單詞模式的右側
:匹配整個單詞
分組:()
後項引用:引用前面的分組括號中的模式所匹配字符(而非模式自己)
\1:從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
注意:分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中(這些變量的命名方式爲:\1,\2,\3)
Egrep[options] PATTERN [FILE……]
擴展正則表達式的元字符:
字符匹配:
. :匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
次數匹配:
*:匹配前面的字符任意次
?:匹配前面的字符0次或1次
+:匹配前面的字符一次或屢次
{m}:匹配前面的字符m次
{m,n}:匹配前面的字符至少m次,最多n次
位置錨定:
^:錨定行首
$:錨定行尾
Bash的基礎特性:
變量類型:數據存儲格式、存儲空間大小、參與運算的種類
字符型、數值型(整型;浮點型)
強類型:定義變量時必須制定類型參與運算必須符合類型要求
弱類型:定義變量時,無須制定類型,默認均爲字符型:參與運算會自動轉換類型
Bash中的變量種類:
根據變量的生效範圍等標準
本地變量:生效範圍僅爲當前shell進程
環境變量:生效範圍爲當前shell進程及子進程
局部變量:生效範圍爲當前shell進程中某代碼片斷
位置變量:$1,$2,$3
特殊變量:$?,$0,$*,$@,$#
本地變量:
變量賦值:name=value
可使用引用:
Value:
(1) 能夠是直接字串:name=username
(2) 變量引用:name=「$username」
(3) 命令引用:name=command
,name=$(command)
變量引用:${name},$name
「 」:弱引用:強引用
顯示已定義的變量:
Set
銷燬變量:
Unset
環境變量:
變量聲明、賦值:
Export name=value
Declare – x name=value
變量引用:$name,${name}
顯示全部環境變量:
Export、env、printenv
銷燬:
Unset name
Bash有許多內奸的環境變量:PATH,SHELL,UID,HISTSIZE,HOME,PWD
變量命名法則:一、 不能使用程序中的保留字二、 只能使用數字、字母、下劃線且不能以數字開頭三、 見名知意只讀變量: Readonly name Declare -r name