歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Linux特殊符號淺談,linux特殊符號

Linux特殊符號淺談,linux特殊符號

日期:2017/3/3 18:11:56   编辑:學習Linux

Linux特殊符號淺談,linux特殊符號

Linux特殊符號淺談,linux特殊符號


Linux特殊字符淺談

我們經常跟鍵盤上面那些特殊符號比如(?、!、~...)打交道,其實在Linux有其獨特的含義,大致可以分為三類:Linux特殊符號、通配符、正則表達式。

Linux特殊符號又可以分以下幾類

1、管道符號

字符

名稱

功能描述

|

管道

傳遞的普通的字符串,來自於前一個命令

|xargs

管道流轉換

與xargs 傳遞的是把字符串變成了文件名

2、目錄結構

字符

名稱

功能描述

.

當前目錄

..

當前目錄上一級目錄

3、重定向符號

字符

名稱

功能描述

>

輸出重定向

會清空原文以及內容 然後在向文件裡面追加內容

>>

追加輸出重定向

追加到文件最後一行

<

輸入重定向

文本內容輸入 tr xargs

<<

追加輸入重定向

用於給文件追加多行文本 cat

4、其他特殊符號

字符

名稱

功能描述

#

注釋

Linux注釋,另#root 超級用戶提示符

$

變量符號

shell、$變量取值、AWK取列等

&&

表示並且

前面部分執行成功才執行後面的部分

||

表示或者

前面部分執行失敗才執行後面的部分

``

Shell執行命令

引用命令的結果

;

命令分割

一行分割多個命令,沒有邏輯聯系

‘’

設置字符串變量

不具有變量置換功能,輸出時所見即所得

“”

設置字符串變量

具有變量置換功能,解析變量輸出

{}

表示序列

以逗號分割,且不能為空,如{a,b,c}表示單獨 {0..9}表示范圍,同功能的有seq,但seq只產生數字序列

-

cd - su - root

~

當前目錄的家目錄

/

根或者路徑分割

!

vi/vim強制退出

邏輯運算非,

!+字母 調出最近一次以字母開頭的命令

!!使用 最近一次操作的命令

!+數字 調出歷史的第幾條命令

通配符:通常匹配文件名

字符

名稱

功能描述

?

匹配任一個字符(不在括號內的時候)

*

匹配任何字符(0或多個)

[]

匹配符號內任一字符 如[abcd] [0-9]

[!]非

表示不匹配[]裡面任一字符

正則表達式:處理大量的字符串,通常以行為單位(簡單高效)

基礎正則BRE

字符

名稱

功能描述

^

以某某開頭的

$

以某某結尾的

^$

空行,不是空格

.

表示任意一個字符

\

元字符轉義普通字符

\. 普通字符小數點

\n 換行符

\b 單詞邊界

\r 回車

\t 橫向制表符

*

重復之前的字符0個或者多個

.*

匹配所有字符

^.*

以任意多個字符開頭

.*$

以任意多個字符結尾

[]

匹配字符串內的任意一個字符,如[abc]匹配a或b或c,[a-z]匹配所有小寫字母

[^]

匹配不包含字符串內的任意字符,取反

擴展正則ERE(使用egrep或者sed -r)

字符

名稱

功能描述

+

重復前一個字符一次或一次以上,如[0-9]+

?

重復前一個字符0次或者一次

|

元字符左邊字符或者右邊字符

()

分組過濾,如()內的內容為一個整體;反向引用:如\1表示引用第一個()裡面的內容

a{n,m}

重復前面a字符n到m次,egrep或者sed -r直接使用,如grep,sed使用該功能需要轉義a\{n,m\}

a{n,}

重復前面a字符至少n次

a{n}

重復前面a字符n次

a{,m}

重復前面a字符最多m次

學習正則表達,我們可以使用Linux運維三劍客:awk、sed、grep;除了前三者,正則表達式還支持各種編程或者腳本語言

為了更好的學習和工作,我們一般自動添加顏色來區分匹配關鍵字

cat >> /etc/bashrc << EOF

alias egrep='egrep --color=auto'

alias grep='grep --color=auto'

EOF

source /etc/bashrc

學習步驟:

1:grep /RE/ filename

2:grep -o /RE/ filename 看它如何匹配

區分正則表達式和通配符

表達式是文件或者目錄名 -->通配符

表達式是文件內容(字符串) -->正則表達式

學習正則方法:awk、sed -r、grep/egrep -o:該都是匹配正則,其他都是通配符

幫助文檔:通配符man 7 glob

正則表達式:man grep、info grep等等

舉例:

1、/etc/hosts 取該文件權限對應的數字內容 如:-rw-r--r--對應的為644

思路方法:sed 正則、awk 分割符、grep、cut、ls 替換、stat、head

stat /etc/hosts | sed -n '4p' | sed 's#^.*(0##g' | sed 's#/.*$##g'

stat /etc/hosts | sed -rn '4s#^.*\(0(.*)/-.*$#\1#gp'

stat /etc/hosts | awk 'NR==4' | awk -F "0" '{print $2}' | cut -c 1-3

stat /etc/hosts | awk 'NR==4' | awk -F "0" '{print $2}' | awk -F "/" '{print $1}'

stat /etc/hosts | awk 'NR==4' | awk -F "[0/]" '{print $2}'

stat /etc/hosts | awk 'NR==4' | awk -F "0|/" '{print $2}'

stat /etc/hosts | awk -F "[0/]" 'NR==4{print $2}'

ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'

ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{for(i=1;i<=NF;i++){if(i<4){user[a]+=$i}else if(i>3&&i<7){group[b]+=$i}else{other[c]+=$i}};print user[a]group[b]other[c]}'

ls -l /etc/hosts | awk -F "" '{gsub("r","4")};{gsub("w","2")};{gsub("x","1")};{gsub("-","0");print $2+$3+$4 $5+$6+$7 $8+$9+$10}'

2、取IP地址

ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}'

ifconfig eth0 | awk -F "addr:| Bcast:" 'NR==2{print $2}'

http://xxxxxx/Linuxjc/1158885.html TechArticle

Copyright © Linux教程網 All Rights Reserved