Linux基礎(chǔ)學(xué)習(xí)筆記2 Shell

Linux基礎(chǔ)學(xué)習(xí)筆記2 Shell

本文發(fā)布于博客frankwtq

這是Linux基礎(chǔ)學(xué)習(xí)筆記的第二部分芹扭,主要介紹Shell油啤。上一部分為Linux基礎(chǔ)學(xué)習(xí)筆記1

參考資料

  • 主要為視頻資料:慕課網(wǎng)
  • 輔助書籍:Linux從入門到精通(劉憶智 清華大學(xué)出版社)

Shell概述

  • shell是一個(gè)命令行解釋器刚操,他為用戶提供一個(gè)Linux內(nèi)核發(fā)送請求以便運(yùn)行程序的界面系統(tǒng)及程序,用戶可以用Shell來啟動(dòng)、掛起、停止甚至是編寫一些程序歪沃。
  • Shell還是一個(gè)功能相當(dāng)強(qiáng)大的編程語言嗦锐,易編寫,易調(diào)試沪曙,靈活性強(qiáng)奕污。Shell是解釋執(zhí)行的腳本語言,在Shell中可以直接調(diào)用Linux系統(tǒng)命令
  • Shell的兩種主要語法類型有Bourne和C液走,彼此不兼容碳默。Bourne包括:sh、ksh缘眶、Bash腻窒、psh、zsh磅崭;C主要包括:csh、tcsh瓦哎。我們常使用的是Bash
  • /etc/shells文件中記錄了能使用的shell

腳本執(zhí)行方式

echo輸出命令

echo [選項(xiàng)] [輸出內(nèi)容]
    -e  支持反斜杠控制的字符轉(zhuǎn)換
\a  輸出警告音
\b  退格鍵砸喻,就是向左刪除鍵
\n  換行符
\r  回車鍵
\t  制表符,就是Tab鍵
\v  垂直制表符
\0nnn   按照八進(jìn)制ASCII碼表輸出字符
\xhh    按照十六進(jìn)制ASCII碼表輸出字符

第一個(gè)腳本

vim hello.sh
#!/bin/Bash
#The first program

echo -e "\e[1;34m 天上掉下個(gè)林妹妹! \e[0m"

腳本執(zhí)行

  • 賦予執(zhí)行權(quán)限蒋譬,直接運(yùn)行

    chomd 755 hello.sh
    ./hello.sh

  • 通過Bash調(diào)用執(zhí)行

    bash hello.sh

Bash的基本功能

命令別名與快捷鍵

查看與設(shè)定別名

alias
    查看系統(tǒng)中所有的命令別名
alias 別名= ‘原命令’
    設(shè)定命令別名  

別名永久生效與刪除別名

vi ~/.bashrc
    寫入環(huán)境變量配置文件
source .bashrc
    重新載入環(huán)境變量配置文件割岛,使其立馬生效
unalias 別名
    刪除別名  

歷史命令

history [選項(xiàng)] [歷史命令保存文件]
    -c  清空歷史命令
    -w  把緩存中的歷史命令寫入歷史命令保存文件~/.bash_history
    歷史命令默認(rèn)會(huì)保存1000條,可以在環(huán)境變量配置文件/etc/profile中進(jìn)行修改

歷史命令的調(diào)用

  • 使用上犯助、下箭頭調(diào)用以前的歷史命令
  • 使用"!n"重復(fù)執(zhí)行第n條歷史命令
  • 使用"!!"重復(fù)執(zhí)行上一條命令
  • 使用"!字串"重復(fù)執(zhí)行最后一條以該字串開頭的命令

輸出重定向

標(biāo)準(zhǔn)輸入輸出(stdin stdout stderr)

|設(shè)備|設(shè)備文件名|文件描述符|類型|
|:---:|:---:|:---:|:---:|
|鍵盤|/dev/stdin|0|標(biāo)準(zhǔn)輸入|
|顯示器|/dev/stdout|1|標(biāo)準(zhǔn)輸出|
|顯示器|/dev/stderr|2|標(biāo)準(zhǔn)錯(cuò)誤輸出|

輸出重定向

命令 > 文件
命令 >> 文件
錯(cuò)誤命令 2> 文件
錯(cuò)誤命令 2>> 文件  
  • > 表示以覆蓋的方式
  • >> 表示以追加的方式
  • >>>表示命令運(yùn)行正確時(shí)輸出
  • 2>2>>表示命令運(yùn)行錯(cuò)誤時(shí)輸出

命令 > 文件 2>&1
命令 >> 文件 2>&1
    # 重要癣漆,以追加的方式,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件中
命令 &> 文件
命令 &>> 文件
    # 重要剂买,以追加的方式惠爽,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件中
命令 >> 文件1 2>> 文件2
    # 重要,把正確的輸出追加到文件1中瞬哼,把錯(cuò)誤的輸出追加到文件2中

輸出重定向

wc [選項(xiàng)] [文件名]
    -c  統(tǒng)計(jì)字節(jié)數(shù)
    -w  統(tǒng)計(jì)單詞數(shù)
    -l  統(tǒng)計(jì)行數(shù)
命令 < 文件把文件作為命令的輸入
    例如:wc < abc.log
命令 << 標(biāo)識符
    標(biāo)識符把標(biāo)識符之間內(nèi)容作為命令的輸入
    例如:wc << abc在后面輸入任意字符串婚肆,當(dāng)再次遇到abc時(shí)會(huì)停止輸入并顯示統(tǒng)計(jì)的結(jié)果   

多命令順序執(zhí)行

命令1 : 命令2
    # 多個(gè)命令順序執(zhí)行,命令之間沒有任何邏輯聯(lián)系
命令1 && 命令2
    # 邏輯與
    # 當(dāng)命令1正確執(zhí)行坐慰,則命令2才會(huì)執(zhí)行
    # 當(dāng)命令1執(zhí)行不正確较性,則命令2不會(huì)執(zhí)行
命令1 || 命令2
    # 邏輯或
    # 當(dāng)命令1執(zhí)行不正確,命令2才會(huì)執(zhí)行
    # 當(dāng)命令1正確執(zhí)行结胀,命令2不會(huì)執(zhí)行

例子:

pwd赞咙;touch abc;ls;data
ls anaconda-ks.cfg && echo yes      #運(yùn)行成功顯示yes
ls anaconda-ks.cfg || echo no   #運(yùn)行失敗顯示no
命令 && echo yes || echo no   #運(yùn)行成功顯示yes,運(yùn)行失敗顯示no

管道符

命令1 | 命令2
    命令1的正確輸入作為命令2的操作對象
    例如:
        ll –a /etc/ | more
        netstat –an | grep ESTABLISHED | wc -l  

Shell中特殊符號

通配符

?   匹配一個(gè)任意字符
*   匹配0個(gè)或者任意多個(gè)任意字符
[]  匹配中括號中任意一個(gè)字符如:[abc]代表一定匹配一個(gè)字符糟港,可以是a攀操,可以是b也可以是c
[-] 匹配中括號中任意一個(gè)字符,-代表一個(gè)范圍如:[a-z]
[*] 邏輯非秸抚,表示匹配不是中括號內(nèi)的一個(gè)字符崔赌。例如[^0-9]代表匹配一個(gè)不是數(shù)字的字符

Bash中其他特殊符號

''  單引號意蛀,單引號中的所有的特殊符號,如$和`(反引號)都沒有特殊含義
""  雙引號健芭,雙引號中的特殊符號都沒有特殊含義县钥,但是$、`和\是例外慈迈,擁有調(diào)用變量的值若贮、引用命令和轉(zhuǎn)義符的特殊含義
``  反引號,反引號括起來的內(nèi)容是系統(tǒng)命令痒留,在Bash中會(huì)先執(zhí)行它谴麦。和$()作用一樣,不過推薦使用$(),因?yàn)榉匆柗浅H菀卓村e(cuò)
$() 引用系統(tǒng)命令
#   在Shell腳本中伸头,#開頭的行代表注釋
$   用于調(diào)用變量的值匾效,如需要調(diào)用變量name的值時(shí),用$name的方式得到
\   轉(zhuǎn)義符恤磷,跟在\之后的特殊符號將失去特殊含義

例如:

aa=123;echo $aa
    輸出:123
echo ‘$aa’
    輸出:$aa
echo “$aa”
    輸出:123
aa=`ls` #反引號 
echo “$aa”
    輸出:執(zhí)行l(wèi)s的結(jié)果
aa=$(ls)    #作用同反引號
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末面哼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子扫步,更是在濱河造成了極大的恐慌魔策,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件河胎,死亡現(xiàn)場離奇詭異闯袒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)游岳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門政敢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胚迫,你說我怎么就攤上這事堕仔。” “怎么了晌区?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵摩骨,是天一觀的道長。 經(jīng)常有香客問我朗若,道長恼五,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任哭懈,我火速辦了婚禮灾馒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遣总。我一直安慰自己睬罗,他們只是感情好轨功,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著容达,像睡著了一般古涧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上花盐,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天羡滑,我揣著相機(jī)與錄音,去河邊找鬼算芯。 笑死柒昏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熙揍。 我是一名探鬼主播职祷,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼届囚!你這毒婦竟也來了有梆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤奖亚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后析砸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昔字,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年首繁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了作郭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弦疮,死狀恐怖夹攒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胁塞,我是刑警寧澤咏尝,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站啸罢,受9級特大地震影響编检,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扰才,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一允懂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衩匣,春花似錦蕾总、人聲如沸粥航。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽递雀。三九已至,卻和暖如春置侍,著一層夾襖步出監(jiān)牢的瞬間映之,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工蜡坊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杠输,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓秕衙,卻偏偏與公主長得像蠢甲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子据忘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容