初識(shí)Shell——bash
Linux中的shell有點(diǎn)類(lèi)似Windows下的cmd.exe或者.bat。管理整個(gè)計(jì)算機(jī)硬件的其實(shí)是操作系統(tǒng)的內(nèi)核(Kernel),用戶(hù)無(wú)法與內(nèi)核直接交互,所以通過(guò)shell來(lái)跟內(nèi)核通信。即shell介于操作系統(tǒng)(Kernel)和用戶(hù)之間,它是用戶(hù)與內(nèi)核的翻譯官,是一個(gè)命令解釋器。
常見(jiàn)的shell種類(lèi)有:Bsh、Csh、Ksh、Bash、Zsh
Bsh和Csh出現(xiàn)的較早,Ksh繼承了它兩的功能,Bash繼承了Bsh和Ksh的升級(jí)版,而且是Linux系統(tǒng)中默認(rèn)的shell,Zsh則兼具了各種shell的程序有點(diǎn),交互式操作效率更高,但仍不及bash應(yīng)用廣泛。
Shell環(huán)境的切換:
登錄Shell:指用戶(hù)每次登錄系統(tǒng)后自動(dòng)加載的Shell程序,大多數(shù)Linux系統(tǒng)采用 /bin/bash 作為默認(rèn)登錄Shell;/etc/shells 文件記錄了系統(tǒng)支持的有效登錄Shell
[root@localhost ~]# cat /etc/shells ==>使用chsh -l命令也可查看 /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh /bin/ksh [root@localhost ~]#
默認(rèn)的shell是bash,那么如何切換shell環(huán)境呢?分為兩種,一種是臨時(shí)切換,即當(dāng)此終端關(guān)閉時(shí),下次啟動(dòng)仍然是bash,方法很簡(jiǎn)單,直接在終端輸入shell名稱(chēng);第二種則是更改用戶(hù)登錄Shell,需要修改/etc/passwd文件中用戶(hù)記錄的最后一個(gè)字段,或者像前面講到的使用修改用戶(hù)的命令:usermod -s shell程序路徑 用戶(hù)名,也可以使用chsh命令,下次登錄有效。
查看當(dāng)前shell可以通過(guò)/etc/passwd來(lái)查看,要查看系統(tǒng)默認(rèn)使用的shell,可以使用echo $SHELL。
bash的常用功能:
1)Tab鍵自動(dòng)補(bǔ)齊
這個(gè)功能可以讓您少打很多字,并且確定輸入是正確的。tab鍵接在一串命令的第一個(gè)字后面,則為命令補(bǔ)全;若接在一串命令的第二個(gè)字后面,則為文件補(bǔ)全;直接在bash提示符后面按兩下tab鍵,則能顯示所有可執(zhí)行的命令。
2)命令編輯快捷鍵
如之前提到的ctrl+D,ctrl+L,ctrl+U等
3)命令歷史
保存用戶(hù)曾經(jīng)執(zhí)行過(guò)的命令操作;存放位置是:~/.bash_history隱藏文件;查看歷史命令只需使用history命令就行了。
調(diào)用歷史命令:
!n:執(zhí)行歷史記錄中的第n條命令
!str:執(zhí)行歷史記錄中以“str”開(kāi)頭的命令
設(shè)置記錄歷史命令的條數(shù):修改HISTSIZSE參數(shù)即可(在/etc/profile文件里),默認(rèn)為1000條。
(備注:正確使用歷史命令可以有效提高命令行輸入的效率,例如:如果之前不久執(zhí)行過(guò)“service network restart”命令,則重新修改了網(wǎng)卡的配置文件以后,通常只需要執(zhí)行“!ser”操作即可調(diào)用該歷史命令,以重啟network服務(wù)。合理控制歷史命令的條數(shù)可以提高安全性,root用戶(hù)的命令歷史一般建議設(shè)置為少于100條)
4)命令別名
為使用較高的復(fù)雜命令行設(shè)置間斷的調(diào)用名稱(chēng),存放位置是:~/.bashrc隱藏文件。查看命令別名只需用alias命令即可。
(備注:手動(dòng)使用alias命令設(shè)置的別名只在當(dāng)前Shell環(huán)境中有效,如alias rm='rm -i';若需每次登錄Shell環(huán)境時(shí)設(shè)置的別名都有效,需要修改宿主目錄中的“.bashrc”文件,添加相應(yīng)別名設(shè)置)
5)標(biāo)準(zhǔn)輸入輸出
交互式硬件設(shè)備:
標(biāo)準(zhǔn)輸入:從該設(shè)備接收用戶(hù)輸入的數(shù)據(jù)
標(biāo)準(zhǔn)輸出:通過(guò)該設(shè)備向用戶(hù)輸出數(shù)據(jù)
標(biāo)準(zhǔn)錯(cuò)誤:通過(guò)該設(shè)備報(bào)告執(zhí)行出錯(cuò)信息
類(lèi)型 |
設(shè)備文件 |
文件描述編號(hào) |
默認(rèn)設(shè)備 |
標(biāo)準(zhǔn)輸入 |
/dev/stdin |
0 |
鍵盤(pán) |
標(biāo)準(zhǔn)輸出 |
/dev/stdout |
1 |
顯示器 |
標(biāo)準(zhǔn)錯(cuò)誤輸出 |
/dev/stderr |
2 |
顯示器 |
(備注:/dev/stdin、/dev/stdout、/dev/stderr這三個(gè)文件是一個(gè)符號(hào)鏈接,輸入輸出與重定向關(guān)系緊密)
6)重定向操作
改變標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤的方向:
類(lèi)型 |
操作符 |
用途 |
重定向標(biāo)準(zhǔn)輸入 |
< |
將命令中接收輸入的途徑由默認(rèn)的鍵盤(pán)更改為指定的文件 |
重定向標(biāo)準(zhǔn)輸出 |
> |
將命令的執(zhí)行結(jié)果輸出到指定的文件中,而不是直接顯示在屏幕上 |
>> |
將命令執(zhí)行的結(jié)果追加輸出到指定文件 | |
重定向標(biāo)準(zhǔn)錯(cuò)誤 |
2> |
清空指定文件的內(nèi)容,并將標(biāo)準(zhǔn)錯(cuò)誤信息保存到該文件中 |
2>> |
將標(biāo)準(zhǔn)錯(cuò)誤信息追加輸出到指定的文件中 | |
重定向標(biāo)準(zhǔn)輸出和 標(biāo)準(zhǔn)錯(cuò)誤 |
&> |
將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤的內(nèi)容全部保存到指定的文件中,而不是直接顯示在屏幕上 |
7)管道操作
管道操作符號(hào)是“|”,連接左右兩個(gè)命令,將左側(cè)的命令輸出的結(jié)果,作為右側(cè)命令的輸入(處理對(duì)象)。管道是腳本語(yǔ)言的特色,它可以講多個(gè)功能連接起來(lái)形成一個(gè)大的功能,這點(diǎn)與面向?qū)ο笥泻艽蟮牟煌?/P>
例如我現(xiàn)在要查看歷史記錄命令的第4行:則可先將前4條命令顯示出來(lái),在��示前4條命令的最后一條:history | head -4 | tail -1 這樣即取出了第四條命令。
![]() | ![]() .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書(shū)籍 |
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 |