tab:文本分隔符,相當于四個空格,在命令行界面可以用來自動補齊命令與目錄。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、鐵嶺網(wǎng)站維護、網(wǎng)站推廣。
ESC:esc+. ,上一條命令的選項參數(shù),vim恢復到命令模式。
~:家目錄
`:反引號,編程中調(diào)用shell命令
!:調(diào)用前面的命令,!!調(diào)用上一條,!23調(diào)用前面低23條。
@:at符,后面接IP地址。
#:Linux文件中注釋行,表示不起作用。
$:文件行結尾標識符,變量標識符。
%:格式化文本。
^:文件行首標識符
:任務放到后臺
*:通配符,代表一個字符或者很多個字符。
\:用來轉義,\t表示制表符,\n表示換行符。
:數(shù)據(jù)流的流入方向,表示輸入,將數(shù)據(jù)傳入給左側軟件。
|:管道,改變數(shù)據(jù)流的方向,將數(shù)據(jù)傳入給另外的軟件。
:數(shù)據(jù)流的流出方向,表示輸出,將屏幕輸出的內(nèi)容寫入一個文件。
2:數(shù)據(jù)流的流出的第二個方向,表示錯誤輸出,報錯信息會寫入到這個文件中。
:表示追加寫入
/:根目錄,目錄分隔符
‘’:雙引號,支持轉義
‘:單引號,不支持轉義
():shell編程中使用,命令行用的不多
[]:索引
{}:代碼塊
::vim或者less命令中,表示可以輸入命令
;:分割不同命令
-:短選項標識符-h
--:長選項標識符--help
Linux 常見特殊符號 1, 重定向輸出符號 用法:命令 文件名 特性:覆蓋(當輸入文件和輸出文件是同一文件,文 件內(nèi)容被清空;不適合連續(xù)重定向) 典型應用:合并文件(cat a b c);清空文件(cat /dev/null);文件打印 2, 重定向輸出符號 用法:命令 文件名 特性:追加 3,2 錯誤重定向輸出符號 用法:命令 2文件名 特性:覆蓋 4,2 錯誤重定向輸出符號 用法:命令 2文件名 特性:錯誤信息的追加 典型應用:命令 文件名 命令 2文件名 命令 /dev/null 2/dev/null==命令 /dev/null 5,| 管道符號 用法:命令1 | 命令2 機制:上一個的命令輸出作為下一個命令的輸入 6, * 匹配任意字符 7,? 匹配任意一個字符 8, 后臺進程符 用法:命令(程序) 9, 邏輯與 用法:命令1 命令2 機制:如果命令1執(zhí)行成功,繼續(xù)執(zhí)行命令2;否則, 不執(zhí)行命令2 10,|| 邏輯或 用法:命令1 || 命令2 機制:如果命令1執(zhí)行成功,不執(zhí)行命令2;否則, 才執(zhí)行命令2 11,! 邏輯非 機制:排除指定范圍 12,[x-y] 指定范圍 13,# 注釋 14,"" 雙引號 機制:把它所包含的內(nèi)容作為普通字符,但‘’\ $ `` 除外 15‘’ 單引號 機制:把它所包含的內(nèi)容作為普通字符,無例外 16,`` 倒引號 機制:執(zhí)行它所包含的內(nèi)容 17,\ 轉義字符 用法; \符號 機制:把符號的特定含義去掉,使其變成普通標點 符號 18,$ 變量調(diào)用符號 用法: $變量 機制:調(diào)用變量,從而得到‘變量的值’ 19,; 命令分隔符 用法:命令1 ; 命令2 機制;一行語句中,順次執(zhí)行各命令 20() 整體執(zhí)行 21,{ } 變量分離 22, 重定向輸入符號 用法:命令 文件名
1 /dev/null 21
對于/dev/null設備一般不存在附加的說法,雖然這么寫沒錯。一般寫成:
1/dev/null 21
1/dev/null 含義是把標準輸出重定向到/dev/null,其實就是屏蔽標準輸出。
21 是把標準錯誤重定向到標準輸出,也就是fprintf(stderr, "error msg");的信息會被打印到stdout上。
結合起來就是屏蔽所有輸出信息。
至于為什么采用,以及這些符號,我也不清楚,前兩者還算直觀,這個我也是理解不能。
可以查看sh實現(xiàn)源碼,通過代碼了解這些符號的實現(xiàn),希望注釋中能有一些蛛絲馬跡描述為什么采用這個符號。
01 系統(tǒng)特殊符號
02 系統(tǒng)通配符號
03 系統(tǒng)正則符號
說明: 查詢信息的時候,會帶來便利
1) 基礎符號系列
? $?
? a 調(diào)取變量信息
? b 區(qū)分用戶類型? $ 普通用戶
? c 結合awk對文件進行取列 ?
xargs -n 2 test01.txt|awk '{print $2}'
!
a 強制的作用? wq!
b 可以實現(xiàn)取反
awk '!/oldgirl/' test02.txt (排除oldgirl)
find /oldboy_dir/ ! -type f (排除文件)
c !信息? 可以快速調(diào)取執(zhí)行歷史命令(慎用)
cat ~/.bash_history? -- 記錄歷史命令信息, 但是不會實時記錄
history? ? ? ? ? ? ? -- 顯示所有輸入過的歷史命令
|
a 實現(xiàn)管道功能
將前一個命令執(zhí)行的結果交給管道后面的命令進行處理
一般管道符號 會經(jīng)常和xargs命令配合使用
批量刪除操作
find /oldboy -type f -name "oldboy*.txt"|xargs rm
find /oldboy_dir/ -type f -delete
find /oldboy_dir/ -type f -exec rm -f {} \;
查找指定數(shù)據(jù)信息進行復制
find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;
查找指定數(shù)據(jù)信息進行移動
find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;
xargs(火眼金睛)后面跟的命令,不識別別名信息
#
a 表示對配置文件信息進行注釋
b 表示用戶的身份信息 超級管理員用戶
2) 引號符號系列
? "" 基本上和單引號功能類似 但是可以對一些特殊符號做出解析? $ `命令`==$(命令)
? '' 里面編寫的什么內(nèi)容就輸出什么內(nèi)容? 所見即所得
作用:
01. 指定需要輸出的信息
02. 利用引號將空格分隔的信息匯總為一個整體
``($()) 將引號里面命令執(zhí)行結果,交給引號外面命令進行使用 ?
3) 重定向符號
/1? 標準輸出重定向符號
/1 標準輸出追加重定向符號
2 錯誤輸出重定向符號
2 錯誤輸出追加重定向符號
標準輸入重定向符號
? tr xargs
標準輸入追加重定向符號
4) 邏輯符號系列
邏輯: 在完成一件事情的時候,有合理先后順序
前一個命令操作執(zhí)行成功了,再操作執(zhí)行后面的命令
||? 前一個命令操作執(zhí)行失敗了,再操作執(zhí)行后面的命令
mkdir /old_dir echo "create dir sucess" || echo "create dir failed"
? create dir sucess
? mkdi /old_dir echo "create dir sucess" || echo "create dir failed"
? -bash: mkdi: command not found
? create dir failed
什么通配符號: 用于匹配文件名稱信息, 便于快速查找文件信息 find
*? 匹配所有信息
? find /oldboy -type f -name "oldboy*"? ---以oldboy開頭的信息都查詢出來
find /oldboy -type f -name "*oldboy"? ---以oldboy開頭的信息都查詢出來
find /oldboy -type f -name "oldgirl*oldboy"?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ---以oldgirl 開頭的信息
以oldboy? 結尾的信息都查詢出來
{} 產(chǎn)生序列信息
連續(xù)序列:
echo {01..05}
? ? echo {a..z}
? ? echo {A..Z}
生成不連續(xù)序列
a 有規(guī)律的不連續(xù)序列
echo {01..05..2}
? ? 01 03 05
? ? echo {a..z..2}
? b 沒規(guī)律的不連續(xù)序列
echo {www,bbs,blog}
? ? www bbs blog
生成組合序列
? ? echo {1,2}{a,b}
? ? 1a 1b 2a 2b
? ? echo {1,2}{a,b}{A,B}
? ? 1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB
echo A{a,b}
? ? Aa Ab ?
A=oldboy.txt
? echo oldboy.txt{a,b} ?
? oldboy.txta oldboy.txtb ?
echo A{,b}
? A Ab
A=oldboy.txt
b=.bak
cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak
快速備份文件命令
cp oldboy.txt{,.bak}
快速還原數(shù)據(jù)方法
cp oldboy.txt{.bak,}
echo A{B,}
? AB A
oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt
基礎正則符號:basic regular expression? ? (BRE)
擴展正則符號:extended regular expression (ERE)
基礎正則符號:
a 尖角符號:^
? 以什么開頭的信息進行過濾出來
grep -v "^#" nginx.conf.default nginx.conf(對不需要關注的信息取反)
常見錯誤
find / -type f -name "^oldboy"? 錯誤
find / -type f -name "oldboy*"? 正確
b 美元符號:$
以什么結尾的信息進行過濾出來
以m結尾信息, 并且顯示上1行 和 下2行的信息
? grep "m$" -A 2 -B 1 test.txt
? 常見錯誤:
如果過濾不出來,確認每行結尾是否有空格信息
方法一:
cat -A test.txt
方法二
? vim 底行模式輸入命令 --- :set list
c 尖角美元符號:^$
? 取出文件中空行信息
? grep "^$" test.txt
? grep -v "^$" test.txt
d 點符號: .
表示匹配任意一個且只有一個字符
grep "." test.txt? -o(更直觀的顯示過程)
e 星號符號: *
匹配星號前面一個字符連續(xù)出現(xiàn)0次或多次
f 點和星號組合: .*
? 匹配所有信息
說明: 正則符號在匹配數(shù)據(jù)信息的時候具有貪婪特性
避免貪婪特性的方法,是在指定一行信息中唯一節(jié)點信息
g 轉譯符號: \
1) 將一些有意義的符號進行轉譯, 變?yōu)橐粋€普通符號
grep "\.$" ~/oldboy_test.txt
2) 將一些沒有意義的符號進行轉譯,變?yōu)橛幸饬x符號
\n? 換行符號 linux
3) 可以將擴展正則符號轉換成普通正則讓grep sed命令可以直接識別'
grep "o\?" test.txt
h 括號符號:[]
匹配括號中每一個字符,并且匹配的關系是或者的關系
需求: 找出文件中oldboy 和 oldbey兩個單詞信息
? grep "oldb[oe]y" test.txt
? 企業(yè)應用: 找尋文件中字母 數(shù)字信息
? grep "[0-9a-zA-Z]" test.txt
i 尖號和中括號組合使用 : [^]
對中括號里面匹配的字符信息進行排除
grep? "[^0-9a-zA-Z]" test.txt? --- 將字母數(shù)字都排除,只留下符號信息
尖號和中括號組合使用 : ^[]
以中括號里面匹配的字符作為一行開頭的字符
? grep "^[zx]" test.txt
正則符號注意事項
按照每行信息進行過濾處理
注意正則表達符號禁止中文
附上顏色信息進行正則過濾 --color=auto/--color
基礎正則符號可以被三劍客命令直接識別 grep sed awk
擴展正則符號不可以被三劍客命令中老二和老三直接識別
sed命令想識別正則符號: sed -r
grep命令想識別正則符號: egrep / grep -E
a 加號符號:+
匹配加號前面一個字符連續(xù)出現(xiàn)1次或者多次
b 豎線符號:|
或者關系符號
egrep "oldboy|oldbey" test.txt
c 括號符號:()
將多個字符信息進行匯總為一個整體
egrep "(oldboy)" test.txt
進行后向引用前向的一個操作(sed)
echo "123456"|sed -r "s#(..)(..)(..)#\1\2\3#g"
修改配置文件內(nèi)容
sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config
SELINUX=enforcing
d 括號符號:{}
指定花擴號前一個字符連續(xù)匹配多少次
* 連續(xù)匹配 0 次 或 多次
+ 連續(xù)匹配 1 次 或 多次
1) {n,m}? n表示最少連續(xù)匹配多少次? m表示最多連續(xù)匹配多少次
2) {n}? n表示只連續(xù)匹配n次
3) {n,}? n表示至少連續(xù)匹配n次,至多沒有限制
4) {,m}? m表示至多連續(xù)匹配n次,至少0次
e 問號符號:?
表示匹配問號前面一個字符出現(xiàn)0次或者1次