Linux命令(乾貨)

来源:https://www.cnblogs.com/hjp0516-qq/archive/2019/07/11/11172683.html
-Advertisement-
Play Games

@ vim 編輯快捷鍵 ctrl + n 是自動補齊 ctrl + p 是往上選擇 ctrl + f 是下一屏幕 ctrl + b 是上一屏幕 w:是移動一個單詞 b:是向前一個單詞 d^:當前行中,刪至行首 d$:當前行中,刪至行尾 y^:當前到行頭的內容 y$ :複製當前到行尾的內容 d1G:刪 ...


@ vim 編輯快捷鍵

ctrl + n 是自動補齊

ctrl + p 是往上選擇

ctrl + f 是下一屏幕

ctrl + b 是上一屏幕

w:是移動一個單詞

b:是向前一個單詞

d^:當前行中,刪至行首

d$:當前行中,刪至行尾

y^:當前到行頭的內容

y$ :複製當前到行尾的內容

d1G:刪除游標所在行,到第一行的所有數據

dG::刪除游標所在行下一行,到最後一行的所有數據


@ vim 編輯器中TAB變4空格

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} # 快速備份一個文件


@ 找出系統中使用 cpu 最多的進程

ps aux --sort -pcpu | more #按cpu降序排序 或 top -》 P

@ 找出系統中使用 mem 最多的進程

ps aux --sort -rss | more #按記憶體降序排序 或 top -》 M


@ 查看服務啟動時間

ps -eo cmd,pid,lstart,etime | grep httpd # 查看啟動時間和已經存在時間

參數說明:

lstart # 啟動時間

etime # 顯示了自從該進程啟動以來,經歷過的時間


@ 普通用戶保存沒有許可權的文件(需要有sudo許可權)

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:回到當前用戶主目錄
Cd
USERNAME:切換至指定用戶的主目錄
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的基本特性
1、 命令別名(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”
2、 glob(globbing)
bash中用於實現文件名的“通配”
通配符:,?,[ ]
(1):
:任意長度的任意字元
(2):?:任意單個字元
(3):[] :匹配指定範圍內的任意單個字元
[a-z]:不區分大小寫
[A-Z]:大寫字母
(4):[^]:匹配指定範圍外的任意單個字元
專用字元集合:
{:digit:}:任意數字
{:lower:}:任意小寫字母
[:upper:]:任意大寫字母
{:alpha:}:任意大小寫字母
[:alnum:]:任意數字和字母
[:space:]:空白字元
[:punct:]:標點符號
3、 bash的快捷鍵
Ctrl+l:清屏,相當於Clear
Ctrl+a:跳轉至命令開始處
Ctrl+e:跳轉至命令結尾處
Ctrl+c:取消命令執行
Ctrl+u:刪除命令行首至游標所在處的所有內容
Ctrl+k:刪除游標所在處至命令行尾的所有內容
4、 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
密碼的複雜性策略:
1、 使用數字、大寫字母、小寫字母及特殊字元中至少3種
2、 密碼足夠長
3、 不要使用易猜測密碼
4、 定期更換:不要使用最近曾經使用過的密碼

用戶和組相關的管理命令:
用戶創建: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)
1、 提供了編程環境
Shell程式:提供了編程能力,解釋執行
命令的執行方式:
電腦:運行二進位指令
編程語言:
低級:彙編
高級:C++等
過程式編程:
順序執行
迴圈執行
選擇執行
Shell編程:過程式、解釋執行
編程語言的基本結構:
數據存儲:變數、屬組
表達式:
語句:
Shell腳本:文本文件

#!/bin/bash

運行腳本:
1、 給予執行許可權,通過具體的文件路徑指定文件執行
2、 直接運行解釋器:將腳本作為解釋器程式的參數運行
變數:
命令的記憶體空間
數據存儲方式:ASCII
字元、數值、整型、浮點型
變數類型:
作用:
1、 數據存儲格式
2、 參與運算
3、 表示的數據範圍
類型:
字元
數值:
整型
浮點型
編程程式語言:
強類型:
弱類型: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

變數命名法則:
1、 不能使用程式中的保留字
2、 只能使用數字、字母、下劃線且不能以數字開頭
3、 見名知意
只讀變數:
Readonly name
Declare -r name

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看到微服務架構這個概念比較火,想親自試驗下,正好最近工作告一段落,抽出時間來做下研究學習。 概念什麼的就不說了,問問度娘就知道了,做為一個小學生我也沒能力去總結他,說下我自己的感受吧。我覺的每個微服務就是一個單獨的單塊架構,一個完整的項目只要組合起來我們想要的微服務單塊就可以了。比較靈活比較方便。每 ...
  • jquery.ajax-combobox JS object instead of DB: jquery.ajax-combobox Nation: ...
  • 最近公司工作的電腦突然自動加上了屏保鎖屏,百思不得其解什麼時候設置的,誰給設置的,未經用戶允許就擅自給用戶設置了??? 金山WPS未經用戶允許給用戶設置了鎖屏屏保,而且這個功能非常不好用,按鍵盤有時候還不能喚醒,點幾次滑鼠才能喚醒屏幕,非常浪費我的工作效率,相信很多被設置了WPS鎖屏屏保的用戶,有同 ...
  • rsync官網: www.samba.org/ftp/rsync.html埠:873上機實戰系列項目100台規模集群全網數據備份解決方案3、本項目提供免費實戰講解視頻:Linux集群全網伺服器數據備份解決方案實戰視頻http://edu.51cto.com/course/course_id-349 ...
  • Linux用戶和許可權——管理文件許可權的命令 摘要:本文主要學習了Linux中修改文件許可權的命令。 chown命令 chown命令,主要用於修改文件(或目錄)的所有者,除此之外,這個命令也可以修改文件(或目錄)的所屬組。 基本語法 當只需要修改擁有者時,可使用如下chown命令的基本格式: 如果需要同 ...
  • 一、VMware workstation菜單欄👉虛擬機👉設置👉添加👉硬碟👉下一步 二、SCSI👉下一步: 三、創建新虛擬磁碟👉下一步 四、選擇自己需要的硬碟大小👉立即分配磁碟取消勾選👉將虛擬磁碟存儲為單個文件👉下一步 五、完成 六、重啟虛擬機後,使用lsblk命令查看磁碟情況 發 ...
  • 一、FastDFS簡介 1、基礎概念 FastDFS是一個開源的輕量級分散式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件上傳、文件下載等,解決了大容量存儲和負載均衡的問題。 2、環境概覽 二、安裝LibFastCommon 核心流程 下載 解壓 編譯 安裝 三、安裝FastDFS ...
  • 最近項目要使用supervisor 來管理程式,簡單查了查,發現比較容易使用: 中文博客查了查,發現很多人都寫出了教程,我這邊就懶得寫了,找了幾個能看懂的記錄如下: https://www.cnblogs.com/xueweihan/p/6195824.html http://liyangliang ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...