shell入門總結

shell入門總結
*shell特性
shell是一個程序,他能夠起到保護內核的做用,咱們能夠經過他和內核交互。
用戶使用過的命令保存在家目錄下的.bash_history文件中,與命令歷史有關的!的用法:
!!:表示執行上一個命令
!n:n是數字,表示執行命令歷史中第n個命令
!ps:ps是字符串,表示執行命令歷史中最近一次以ps開頭的命令html

*shell變量
shell變量有系統變量和自定義變量,系統變量是系統自身定義的,通常是不容許更改的;自定義變量使用戶,爲了更好的管理而定義的變量。
env和set命令均可以顯示變量,可是set還能夠顯示自定義變量。
自定義變量注意:
(1)變量名必須是字母、下劃線和數字組成,數字不能在變量名首部,且不能爲關鍵字。
(2)要想全部用戶登陸後使用該變量,須要在/etc/profile文件下方添加該變量。
(3)若是隻想當前用戶使用該變量,則在用戶主目錄下.bashrc的文件裏添加該變量。
(4)定義變量後,須要用export聲明下,讓該shell的子shell也知道該變量。shell

*系統和用戶的環境變量配置文件
/etc/profile:系統的環境變量在這裏定義
/etc/profile.d:用戶自定義的系統變量
/etc/bashrc:主要定義PS1和umask
下面四個文件在主目錄下:
.bash_profile:定義我的的環境信息和路徑
.bashrc:定義我的的shell信息
.bash_history: 記錄歷史命令信息
.bash_logout:退出shell時,執行該文件,能夠把一些清理工做放在這個文件中
.bashrc和.bash_profile區別:.bash_profile調用.bashrc,login shells執行.bash_profile;nologin shells執行.bashrc。bash

*shell中的特殊符號
「*」表明零個或多個任意字符
「?」只表明一個任意字符
「+」表明一個或多個任意字符
「#」表明註釋符號
「\」脫意符號,後面出現的特殊符號還原成普通符號
「|」管道符,將管道前的結果傳遞給管道符後面的命令,不是全部的命令均可以使用管道符,通常對文檔進行統計的命令均可以。
「$」變量的標識符,而且能夠和「!」組合使用,「!$」表明上一條命令的參數。
「;」輸入多條命令時的分隔符。
「~」用戶的家目錄。
「&」執行這個能夠把任務放在後臺執行。
「>,>>,2>,2>>」重定向符號,>和>>表明取代和追加,2>和2>>表明錯誤信息取代和追加。
「[ ]」表明中間字符任意一個工具

Linux特殊符號大全:http://www.apelearn.com/bbs/thread-7720-1-1.htmlhtm


*經常使用文檔查看工具:cut,sort,tee,uniq,tr,split排序

cut:
-d:後面跟分隔符,用引號括起來
-f:指定第幾段
-c:後面只跟數字,表示截取幾個字符,可使一個數字,也能夠是n1,n2,表示區間n1-n2;也能夠是n1,n2,n3。ci

sort:
-t:後面跟分隔符
-n:使用純數字排序
-r:反向排序
-u:去重複
-kn1,n2:由n1到n2區間排序,也能夠寫成-kn1,既對n1字段排序
若是使用-nu,sort會把文檔中的字母當作0文檔

uniq:用來去重
-c:統計重複的行數,並把結果寫在結果最前面
使用uniq前,必需要排序,不然無論用字符串

tee:
tee命令相似於重定向,可是比重定向多一個功能,他能夠把結果標準輸出it

tr:經常使用來替換字符
-d:經常使用來刪除字符,後面接須要刪除的字符

split:
-b:依據大小來分割文檔,單位byte
-l:依據行來分割
使用split分割,源文件還在

*shell中的連接符號
(1)command1;command2:兩個命令都執行
(2)command1&&command2:command1執行成功,才執行command2,不然command2不執行
(3)command||command2:command1執行成功,command2不執行,不然command2執行

*grep過濾
語法選項:grep [-cinvABC] 'word' filename
-c:打印符合要求的行數
-n:在輸出符合要求的行的時候把行號也輸出
-v:打印不符合要求的行
-A:後跟數字,表示打印符合要求的行以及下面兩行
-B:後跟數字,表示打印符合要求的行以及上面兩行
-C:後跟數字,表示打印符合要求的行以及上下各兩行
-r:會把目錄下全部文件遍歷
-color:把匹配到的關鍵字用紅色標示
實例:
過濾出帶有某個關鍵字的行並輸出行號
#grep -n ‘root’ /etc/passwd
過濾出不帶某個關鍵字的行並輸出行號
#grep -n -v ‘root’ /etc/passwd
過濾出全部包含數字的行
#grep ‘[0-9]’ /etc/passwd
過濾出全部不包含數字的行
#grep '[0-9]' /etc/passwd
去除以#開頭和空的行
#grep -v '^#' /etc/passwd | grep -v '^$'
過濾出英文字母開頭的行
#grep '^[a-zA-Z]' /etc/passwd
注:grep不支持+和?,只有egrep支持。


*sed
sed能夠實現grep大部分功能,並且還能夠查找替換。
sed ‘10’p -n /etc/passwd :是print的意思,-n是打印出符合規則的行,若是不加-n則會把所有打印出來。
sed -n ‘/ro.t/’p /etc/passwd:可使用特殊符號
sed '/root/d' /etc/passwd :刪除指定行
sed ‘1,2s/ot/to/g’ /etc/passwd:替換,s是替換的意思,g是全局的意思
head -n2 /etc/passwd | sed -r 's/(root)(.*)(bash)/3\2\1/' :在sed中能夠用()表示一個總體,本例子中,調換root和bash的位置
後面的\1\2\3,分別表示第一個括號,第二個括號,以及第三個括號。
使用sed命令不會更改源文件,可是加上-i就會更改源文件。

 

*awkawk很強大,相對的也很靈活複雜。-F:指定分隔符OFS:指定輸出分隔符NF:段數NR:行數實例: 截取文檔的某段 #awk -F ‘:’ ‘{print $1}’ /etc/passwd

相關文章
相關標籤/搜索